存盤引擎
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支持外鍵完整性約束(FOREIGN KEY),存盤表中的資料時,每張表的存盤都按主鍵順序存放,如果沒有顯示在表定義時指定主鍵,InnoDB會為每-行生成-一個 6B的ROWID,并以此作為主鍵, (5) InnoDB被用在眾多需要高性能的大型資料庫站點上,InnoDB不創建目錄,使用InnoDB時,MySQL 將在MySQL資料目錄下創建一一個名為ibdatal的10MB大小的自動擴展資料檔案,以及兩個名為ib_ logfile0 和ib_ logfilel 的5MB大小的日志檔案, MyISAM MyISAM基于ISAM的存盤引擎,并對其進行擴展,它是在Web、資料存盤和其他應用環境下最常使用的存盤引擎之一,MyISAM 擁有較高的插入、查詢速度,但不支持事務,在MySQL 5.5.5之前的版本中,MyISAM是默認存盤引擎,MyISAM 主要特性有: (1).大檔案(達63位檔案長度)在支持大檔案的檔案系統和作業系統上被支持, (2).當把洗掉、更新及插入操作混合使用的時候,動態尺寸的行產生更少碎片,這要通過合并相鄰被洗掉的塊,以及若下一個塊被洗掉,就擴展到下一塊來自動完成 (3).每個MyISAM表的最大索引數是64,這可以通過重新編譯來改變,每個索引最大的列數是16個, (4).最大的鍵長度是1000B,這也可以通過編譯來改變,對于鍵長超過250B的情況,一個超過1024B的鍵將被用上, (5).BLOB和TEXT列可以被索引 (6).NULL值被允許在索引的列中,這個值占每個鍵0~1個位元組 (7).所有數字鍵值以高位元組優先被存盤以允許一個更高的索引壓縮, (8).每表一個AUTO_INCREMENT列的內部處理,MyISAM為INSERT和UPDATE操作自動更新這一列,這使得AUTO_INCREMENT列更快,在序列頂的值被洗掉之后就不能再利用, (9).可以把資料檔案和索引檔案放在不同目錄 (10).每個字符列可以有不同的字符集 (11).有varchar的表可以固定或動態記錄長度 (12)varchar 和char的列可以多達64KB. 使用MyISAM引擎創建資料庫,將產生3個檔案,檔案的名字已表的名字開始,擴展名指出檔案型別:frm檔案存盤表定義,資料檔案的擴展名為.MYD(MyData),索引檔案擴展名是MYI(MyIndex). MEMORY MEMORY 存盤引擎將表中的資料集存盤到記憶體中,為查詢和參考其他表資料提供快速訪問,MEMORY的主要特性:(1)MEMORY 表的每個表可以有多大32個索引,每個索引16列,以及500B的最大鍵長度
(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引擎, 使用哪一種引擎要根據需要靈活選擇,一-個資料庫中多個表可以使用不同引擎以滿足各種性能和實際需求,使用合適的存盤引擎,將會提高整個資料庫的性能,轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/94417.html
標籤:MySQL
