博文大綱:mysql
- 1、MyISAM存儲引擎;
- 2、InnoDB存儲引擎;
- 3、Memory存儲引擎特色;
- 4、如何選擇合適的存儲引擎?
- 5、查看及修改表的默認引擎
數據庫存儲引擎是數據庫底層軟件組件,數據庫管理系統(DBMS)使用數據引擎進行建立、查詢、更新和刪除數據操做。不一樣的存儲引擎提供不一樣的存儲機制、索引技巧、鎖定水平等功能,使用不一樣的存儲引擎,還能夠得到特定的功能。如今許多不一樣的數據庫管理系統都支持多種不一樣的數據引擎。MySQL的核心就是存儲引擎。sql
MySQL提供了多個不一樣的存儲引擎,包括處理事務安全表的引擎和處理非事務安全表的引擎。在MySQL中,不須要在整個服務器中使用一種引擎,針對具體要求能夠對每個表使用不一樣的存儲引擎。數據庫
- 存儲引擎說白了就是數據存儲的格式,不一樣的存儲引擎功能不一樣,佔用的空間大小不一樣,讀取性能也不一樣;
- 數據庫存儲引擎是數據庫底層軟件組件,不一樣的存儲引擎提供不一樣的存儲機制;
- 在 MySQL 中,不須要在整個服務器中使用同一種存儲引擎,能夠對每個表使用不一樣的存儲引擎;
- MySQL 支持多種存儲引擎,如 InnoDB 、MyISAM 、Memory 、Merge 、Archive 、CSV 、Federated 等等。
- MySQL 5.5 以前默認使用 MyISAM 引擎,MySQL 5.5 以後默認使用 InnoDB 引擎;
- MyISAM 引擎讀取速度較快,佔用資源相對較少,不支持事務,不支持外鍵約束,但支持全文索引;
- 讀寫互相阻塞,也就是說讀數據的時候你就不能寫數據,寫數據的時候你就不能讀數據;
- MyISAM 引擎只能緩存索引,而不能緩存數據。
- 不須要事務支持的業務,例如轉帳就不行;
- 適用於讀數據比較多的業務,不適用於讀寫頻繁的業務;
- 併發相對較低、數據修改相對較少的業務;
- 硬件資源比較差的機器能夠考慮使用 MyISAM 引擎。
- 事務型數據庫的首選引擎,支持事務安全表,支持行鎖定和外鍵,MySQL 5.5.5 版本以後,InnoDB 做爲默認存儲引擎;
- 具備提交、回滾和崩潰恢復能力的事務安全存儲引擎,能處理巨大數據量,性能及效率高,徹底支持外鍵完整性約束;
- 具備很是高效的緩存特性,能緩存索引也能緩存數據,對硬件要求比較高;
- 使用 InnoDB 時,將在 MySQL 數據目錄下建立一個名爲 ibdata1 的 10MB 大小的自動擴展數據文件,以及兩個名爲 ib_logfile0 和 ib_logfile1 的 5MB 大小的日誌文件。
- 須要事務支持的業務、高併發的業務
- 數據更新較爲頻繁的場景,好比 BBS、SNS、微博等
- 數據一致性要求較高的業務,好比充值轉帳、銀行卡轉帳
- Memory 存儲引擎將表中的數據存儲到內存中,爲查詢和引用其餘表數據提供快速訪問;
- Memory 存儲引擎執行 HASH 和 BTREE 索引,不支持 BLOB 和 TEXT 列,支持 AUTO_INCREMENT 列和對可包含 NULL 值得列的索引;
- 當再也不須要 Memory 表的內容時,要釋放被 Memory 表使用的內存,應該執行 DELETE FROM 或 TRUNCATE TABLE ,或者刪除整個表。
不一樣的業務需求須要選擇不一樣的存儲引擎,具體能夠參照如下幾點來進行選擇:緩存
- 若是要提供提交、回滾和崩潰恢復能力的事務安全能力,並要求實現併發控制,InnoDB 是個很好的選擇;
- 若是數據表主要用來插入和查詢記錄,則 MyISAM 引擎能提供較高的處理效率;
- 若是隻是臨時存放數據,數據量不大,而且不須要較高的安全性,能夠選擇將數據保存在內存中的 Memory 引擎,MySQL 使用該引擎做爲臨時表,存放查詢的中間結果;
- 若是隻有 INSERT 和 SELECT 操做,能夠選擇 Archive 引擎,支持高併發的插入操做,如記錄日誌信息可使用 Archive 引擎。
主要的三個數據引擎所支持的功能以下表所示:安全
mysql> show engines\G; <!--查看數據庫支持的引擎--> mysql> show variables like 'default_storage_engine'; <!--查看默認的存儲引擎--> mysql> show variables like '%engine%'; <!--查看所有的默認引擎--> mysql> show create table t01\G; <!--查看t01表的默認引擎--> mysql> alter table t01 engine=myisam; <!--修改其默認引擎爲myisam-->
———————— 本文至此結束,感謝閱讀 ————————服務器