您好,登錄后才能下訂單哦!
博文大綱:
- 一、MyISAM存儲引擎;
- 二、InnoDB存儲引擎;
- 三、Memory存儲引擎特點;
- 四、如何選擇合適的存儲引擎?
- 五、查看及修改表的默認引擎
數據庫存儲引擎是數據庫底層軟件組件,數據庫管理系統(DBMS)使用數據引擎進行創建、查詢、更新和刪除數據操作。不同的存儲引擎提供不同的存儲機制、索引技巧、鎖定水平等功能,使用不同的存儲引擎,還可以獲得特定的功能。現在許多不同的數據庫管理系統都支持多種不同的數據引擎。MySQL的核心就是存儲引擎。
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-->
———————— 本文至此結束,感謝閱讀 ————————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。