您好,登錄后才能下訂單哦!
存儲引擎的概念:
關系型數據庫表是用于存儲和組織信息的數據結構,可以將表理解為由行和列組成的表格,各種各樣,不同的表結構意味著存儲不同類型的數據,在數據的處理上也會存在著差異,對于mysql來說,它提供了多種類型的存儲引擎,可以根據對數據處理的需求,選擇不同的存儲引擎,從而最大限度的利用mysql的性能
mysql常見的存儲引擎:(SHOW ENGINES; 查看mysql支持的存儲引擎)
InnoDB:mysql5.5以后默認使用的儲存引擎,是目前使用最為廣泛的存儲引擎
InnoDB的特性:
1、支持崩潰后安全恢復
2、InnoDB支持行級鎖和外鍵約束
3、支持事務
4、支持聚集索引和輔助索引
5、支持熱備份
6、支持行級鎖
7、特別適合處理多重并發的請求,基于MVCC實現
數據文件:
InnoDB數據存儲于表空間中:
兩種表空間的類型:
1、所有InnoDB表的數據和索引存在在一個文件中,表空間文件定義在data目錄下
數據文件名:ibdata1,ibdata2,...
默認使用這種表空間格式,但這種方式有很大缺陷,不建議使用
2、每個表使用一個獨立的表空間文件,存儲數據和索引
innodb_file_per_teble=ON #指定使用第二種表空間格式
使用獨立表空間文件,每增加一張表就會增加兩個數據文件
數據文件:
表名.ibd:用于存儲數據和索引
表名.frm:用于存儲表定義和屬性
MyISAM:mysql5.5以前默認使用的存儲引擎
MyISAM的特性:
1、支持全文索引,壓縮
2、不支持事務
3、只能支持表級鎖
4、不支持崩潰后安全恢復
5、支持溫備份
適用場景:讀多寫少的環境(如:讀寫分離中的從庫),且如果需要用到MyISAM可以考慮用Aria代替
Aria支持崩潰后安全恢復
MyISAM沒創建一個表和生成三個數據文件
數據文件:位于data目錄下
表名.frm:用于存儲表定義和屬性
表名.MYD:用于存儲數據
表名.MYI:用于存儲索引
BlackHole(黑洞引擎):
不實際存儲數據,一般只用于記錄二進制日志文件,多用與級聯復制
Memory(基于內存的存儲引擎):
Memory存儲引擎,內存作為存儲介質。提高數據庫性能,但當mysqld崩潰時,所有的Memory數據都會丟失
使用場景:
1.目標數據較小,而且被非常頻繁地訪問
2.如果數據是臨時的,而且要求必須立即可用,那么可以Memory存儲引擎
3.存儲在Memory表中的數據如果突然丟失,不會對線上服務產生負面影響
mysql鎖:
鎖的概念:
在數據庫中,數據是一種供許多用戶共享的資源。如何保證數據并發訪問的一致性、有效性是所有數據庫必須解決的一個問題,鎖沖突也是影響數據庫并發訪問性能的一個重要因素
鎖的級別:
表級鎖:開銷小,加鎖快;不會出現死鎖;鎖定力度大,發生鎖沖突的概率最高,并發度最低
行級鎖:開銷大,加鎖慢;會出現死鎖;鎖定力度小,發生鎖沖突的概率最低,并發度最高
mysql本身在數據庫級別實現了表級鎖,存儲引擎的鎖只有存儲引擎能夠調用,用戶無權操作
手動加鎖:
語法
LOCK TABLES tbl_name ock_type READ|WRITE #加鎖
UNLOCK TABLES #解鎖
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。