共計 2426 個字符,預計需要花費 7 分鐘才能閱讀完成。
自動寫代碼機器人,免費開通
這篇文章主要介紹了 mysql 有哪些存儲引擎,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓丸趣 TV 小編帶著大家一起了解一下。
執行如下指令查看所有 mysql 所有的存儲引擎
InnoDB 存儲引擎
InnoDB 是事務型數據庫的首選引擎,支持事務安全表(ACID),支持行鎖定和外鍵,上圖也看到了,InnoDB 是默認的 MySQL 引擎。InnoDB 主要特性有:
1、InnoDB 給 MySQL 提供了具有提交、回滾和崩潰恢復能力的事物安全(ACID 兼容)存儲引擎。InnoDB 鎖定在行級并且也在 SELECT 語句中提供一個類似 Oracle 的非鎖定讀。這些功能增加了多用戶部署和性能。在 SQL 查詢中,可以自由地將 InnoDB 類型的表和其他 MySQL 的表類型混合起來,甚至在同一個查詢中也可以混合
2、InnoDB 是為處理巨大數據量的最大性能設計。它的 CPU 效率可能是任何其他基于磁盤的關系型數據庫引擎鎖不能匹敵的
3、InnoDB 存儲引擎完全與 MySQL 服務器整合,InnoDB 存儲引擎為在主內存中緩存數據和索引而維持它自己的緩沖池。InnoDB 將它的表和索引在一個邏輯表空間中,表空間可以包含數個文件(或原始磁盤文件)。這與 MyISAM 表不同,比如在 MyISAM 表中每個表被存放在分離的文件中。InnoDB 表可以是任何尺寸,即使在文件尺寸被限制為 2GB 的操作系統上
4、InnoDB 支持外鍵完整性約束,存儲表中的數據時,每張表的存儲都按主鍵順序存放,如果沒有顯示在表定義時指定主鍵,InnoDB 會為每一行生成一個 6 字節的 ROWID,并以此作為主鍵
5、InnoDB 被用在眾多需要高性能的大型數據庫站點上
InnoDB 不創建目錄,使用 InnoDB 時,MySQL 將在 MySQL 數據目錄下創建一個名為 ibdata1 的 10MB 大小的自動擴展數據文件,以及兩個名為 ib_logfile0 和 ib_logfile1 的 5MB 大小的日志文件
MyISAM 存儲引擎
MyISAM 基于 ISAM 存儲引擎,并對其進行擴展。它是在 Web、數據倉儲和其他應用環境下最常使用的存儲引擎之一。MyISAM 擁有較高的插入、查詢速度,但不支持事物。MyISAM 主要特性有:
1、大文件(達到 63 位文件長度)在支持大文件的文件系統和操作系統上被支持
2、當把刪除和更新及插入操作混合使用的時候,動態尺寸的行產生更少碎片。這要通過合并相鄰被刪除的塊,以及若下一個塊被刪除,就擴展到下一塊自動完成
3、每個 MyISAM 表最大索引數是 64,這可以通過重新編譯來改變。每個索引最大的列數是 16
4、最大的鍵長度是 1000 字節,這也可以通過編譯來改變,對于鍵長度超過 250 字節的情況,一個超過 1024 字節的鍵將被用上
5、BLOB 和 TEXT 列可以被索引
6、NULL 被允許在索引的列中,這個值占每個鍵的 0~1 個字節
7、所有數字鍵值以高字節優先被存儲以允許一個更高的索引壓縮
8、每個 MyISAM 類型的表都有一個 AUTO_INCREMENT 的內部列,當 INSERT 和 UPDATE 操作的時候該列被更新,同時 AUTO_INCREMENT 列將被刷新。所以說,MyISAM 類型表的 AUTO_INCREMENT 列更新比 InnoDB 類型的 AUTO_INCREMENT 更快
9、可以把數據文件和索引文件放在不同目錄
10、每個字符列可以有不同的字符集
11、有 VARCHAR 的表可以固定或動態記錄長度
12、VARCHAR 和 CHAR 列可以多達 64KB
使用 MyISAM 引擎創建數據庫,將產生 3 個文件。文件的名字以表名字開始,擴展名之處文件類型:frm 文件存儲表定義、數據文件的擴展名為。MYD(MYData)、索引文件的擴展名時。MYI(MYIndex)
MEMORY 存儲引擎
MEMORY 存儲引擎將表中的數據存儲到內存中,未查詢和引用其他表數據提供快速訪問。MEMORY 主要特性有:
1、MEMORY 表的每個表可以有多達 32 個索引,每個索引 16 列,以及 500 字節的最大鍵長度
2、MEMORY 存儲引擎執行 HASH 和 BTREE 縮影
3、可以在一個 MEMORY 表中有非唯一鍵值
4、MEMORY 表使用一個固定的記錄長度格式
5、MEMORY 不支持 BLOB 或 TEXT 列
6、MEMORY 支持 AUTO_INCREMENT 列和對可包含 NULL 值的列的索引
7、MEMORY 表在所由客戶端之間共享(就像其他任何非 TEMPORARY 表)
8、MEMORY 表內存被存儲在內存中,內存是 MEMORY 表和服務器在查詢處理時的空閑中,創建的內部表共享
9、當不再需要 MEMORY 表的內容時,要釋放被 MEMORY 表使用的內存,應該執行 DELETE FROM 或 TRUNCATE TABLE,或者刪除整個表(使用 DROP TABLE)
存儲引擎的選擇
如果要提供提交、回滾、崩潰恢復能力的事物安全(ACID 兼容)能力,并要求實現并發控制,InnoDB 是一個好的選擇
如果數據表主要用來插入和查詢記錄,則 MyISAM 引擎能提供較高的處理效率
如果只是臨時存放數據,數據量不大,并且不需要較高的數據安全性,可以選擇將數據保存在內存中的 Memory 引擎,MySQL 中使用該引擎作為臨時表,存放查詢的中間結果
如果只有 INSERT 和 SELECT 操作,可以選擇 Archive,Archive 支持高并發的插入操作,但是本身不是事務安全的。Archive 非常適合存儲歸檔數據,如記錄日志信息可以使用 Archive
使用哪一種引擎需要靈活選擇,一個數據庫中多個表可以使用不同引擎以滿足各種性能和實際需求,使用合適的存儲引擎,將會提高整個數據庫的性能。
感謝你能夠認真閱讀完這篇文章,希望丸趣 TV 小編分享 mysql 有哪些存儲引擎內容對大家有幫助,同時也希望大家多多支持丸趣 TV,關注丸趣 TV 行業資訊頻道,遇到問題就找丸趣 TV,詳細的解決方法等著你來學習!
向 AI 問一下細節丸趣 TV 網 – 提供最優質的資源集合!