一、概述:
數據庫存儲引擎是數據庫底層軟件組織,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除(增刪改查)數據。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以 獲得特定的功能。現在許多不同的數據庫管理系統都支持多種不同的數據引擎。MySql的核心就是存儲引擎。
二、查看Mysql支持的存儲引擎
SHOW ENGINES;
三、常用的存儲引擎介紹
1. InnoDB存儲引擎
InnoDB是事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵,上圖也看到了,InnoDB是默認的MySQL引擎。
特點:支持事務、外鍵,具有提交、回滾和崩潰恢復能力的事物安全(ACID兼容)存儲引擎,行級鎖定。
數據存儲順序:
Innodb表數據的存儲是按照主鍵的順序排列每個寫入的數據,該特點決定了該表類型寫入數據的操作較慢
注意:
事務: 把許多寫入(增、改、刪)的sql語句捆綁在一起,要麼執行、要麼不執行。事務經常用於與“錢”有關的方面
四個特點: 原子,一致,持久,隔離
具體操作:
start transaction;
許多寫入sql語句
sql語句有問題
rollback;回滾
commit;提交
rollback和commit只能執行一個
併發性:
該存儲類型的併發性較高,多人同時操作該數據表時,爲了使數據表的內容不容易發生變化需要對該表的數據進行'鎖定'
該類型的鎖爲行級鎖,只鎖定被操作當期的紀錄。
InnoDB不創建目錄,使用InnoDB時,該類型 數據、索引 的物理文件位置:
所有innodb表的數據和索引信息都存儲在以下ibdata1文件中。
注: 可以爲每個innodb類型表創建自己的存儲空間,默認情況下,每個InnoDB表數據和索引不會創建單獨的文件存儲
2.Myisam存儲引擎
MyISAM基於ISAM存儲引擎,並對其進行擴展。它是在Web、數據倉儲和其他應用環境下最常使用的存儲引擎之一。MyISAM擁有較高的插入、查詢速度,但不支持事務。
① 該類型的數據表 表結構、數據、索引 都有獨立的存儲文件:
MyISAM數據表:
*.frm:表結構文件
*.MYD:表數據文件
*.MYI:表索引文件
每個myisam數據表的 結構、數據、索引 都有獨立的存儲文件
特點:獨立的存儲文件可以單獨備份、還原
② 數據存儲順序:Myisam數據表存儲是按照自然順序排列每個寫進的數據
特點: 該特點決定了該類型的數據表寫入數據的速度較快
③ 併發性:
該存儲類型的數據表的併發性較低。
原因:該類型鎖的級別是——表鎖
④ 壓縮機制
如果一個數據表的數據非常多,爲了節省存儲空間,需要對錶進行壓縮處理
壓縮工具: myisampack.exe 表名
重建索引: myisamchk.exe -rq 表名
解壓縮工具: myisamchk.exe --unpack 表名
注:
壓縮後的數據表不能進行插入,更新,刪除(只能讀)操作,需要操作時需要先進行解壓,寫入數據後再壓縮
壓縮的數據表特點: 不能頻繁的寫入操作,知識內容固定的數據表可以做成壓縮處理
例如: 存儲全國地區信息的數據表,收貨地址信息的數據表
總結:
Innodb存儲引擎:適合做修改,刪除
Myisam存儲引擎:適合做查詢,寫入
3. Archive(歸檔存儲引擎)
該引擎只有寫入,查詢操作,沒有修改,刪除操作。Archive支持高併發的插入操作,但是本身不是事務安全的;
比較適合存儲「日誌」性質的信息
4. Memory
如果只是臨時存放數據,數據量不大,並且不需要較高的數據安全性,可以選擇將數據保存在內存中的Memory引擎,MySQL中使用該引擎作爲臨時表,存放查詢的中間結果
特點:操作數獨非常快,但是服務器斷電,給存儲引擎的數據立即丟失。