一、mysql的儲存引擎
簡單來說,儲存引擎就是指表的型別以及表在計算機上的儲存方式。
儲存引擎的概念是mysql的特點,oracle中沒有專門的儲存引擎的概念,oracle有oltp和olap模式的區分。不同的儲存引擎決定了mysql資料庫中的表可以用不同的方式來儲存。我們可以根據資料的特點來選擇不同的儲存引擎。
在mysql中的儲存引擎有很多種,可以通過「show engines」語句來檢視。
我們主要討論前三種比較常見的儲存引擎——innodb,myisam、memory。
二、innodb儲存引擎
innodb給mysql的表提供了事務處理、回滾、崩潰修復能力和多版本併發控制的事務安全。
innodb支援外來鍵、自增長。自動增長列的值不能為空,並且值必須唯一。
innodb的優勢在於提供了良好的事務處理、崩潰修復能力和併發控制。缺點是讀寫效率較差,占用的資料空間相對較大。
innodb中,建立的表的表結構儲存在.frm檔案中。資料和索引儲存在innodb_data_home_dir和innodb_data_file_path定義的表空間中。
三、myisam儲存引擎
myisam是mysql中常見的儲存引擎,曾經是mysql的預設儲存引擎。myisam是基於isam引擎發展起來的,增加了許多有用的擴充套件。
myisam的表儲存成3個檔案。檔案的名字與表名相同。拓展名為frm、myd、myi。其實,frm檔案儲存表的結構;myd檔案儲存資料,是mydata的縮寫;myi檔案儲存索引,是myindex的縮寫。
基於myisam儲存引擎的表支援3種不同的儲存格式。包括靜態型、動態型和壓縮型。其中,靜態型是myisam的預設儲存格式,它的字段是固定長度的;動態型包含變長字段,記錄的長度不是固定的;壓縮型需要用到myisampack工具,占用的磁碟空間較小。
myisam的優勢在於占用空間小,處理速度快。缺點是不支援事務的完整性和併發性。
四、memory儲存引擎
memory是mysql中一類特殊的儲存引擎。它使用儲存在記憶體中的內容來建立表,而且資料全部放在記憶體中。這些特性與前面的兩個很不同。
memory預設使用雜湊索引。速度比使用b+型樹索引快。當然如果你想用b型樹索引,可以在建立索引時指定。
注意,memory用到的很少,因為它是把資料存到記憶體中,如果記憶體出現異常就會影響資料。如果重啟或者關機,所有資料都會消失。因此,基於memory的表的生命週期很短,一般是一次性的。
五、如何選擇?
innodb:支援事務處理,支援外來鍵,支援崩潰修復能力和併發控制。如果需要對事務的完整性要求比較高(比如銀行),要求實現併發控制(比如售票),那選擇innodb有很大的優勢。如果需要頻繁的更新、刪除操作的資料庫,也可以選擇innodb,因為支援事務的提交(commit)和回滾(rollback)。
myisam:插入資料快,空間和記憶體使用比較低。如果表主要是用於插入新記錄和讀出記錄,那麼選擇myisam能實現處理高效率。如果應用的完整性、併發性要求比 較低,也可以使用。
memory:所有的資料都在記憶體中,資料的處理速度快,但是安全性不高。如果需要很快的讀寫速度,對資料的安全性要求較低,可以選擇memoey。它對錶的大小有要求,不能建立太大的表。所以,這類資料庫只使用在相對較小的資料庫表。
注意,同乙個資料庫也可以使用多種儲存引擎的表。如果乙個表要求比較高的事務處理,可以選擇innodb。這個資料庫中可以將查詢要求比較高的表選擇myisam儲存。如果該資料庫需要乙個用於查詢的臨時表,可以選擇memory儲存引擎。
mysql儲存引擎介紹 MySQL儲存引擎簡單介紹
mysql使用的是外掛程式式儲存引擎。主要包含儲存引擎有 myisam。innodb,ndb cluster,maria。falcon,memory,archive,merge。federated。當中最為廣泛的是myisam 和innodb兩種儲存引擎,所以接下來對它們做簡介。myisam 儲存引...
mysql儲存引擎介紹 MySQL儲存引擎介紹
toc innodb儲存引擎 其特點十行鎖設計 支援危機,並支援型別與oracle的非鎖定讀,即預設讀取操作不會產生鎖。innodb通過使用多版本併發控制 mvcc 來獲取高併發性,並且實現了sql標準的4種隔離,預設為repeatable級別。同時使用一種被稱為next keylocking的策略...
MySQL儲存引擎介紹
1.mysql儲存引擎對比 如上圖所示,為幾種常見的儲存引擎的對比,當然還有像csv儲存引擎 不支援索引 和blackhole黑洞引擎 寫入的資料都會消失,一般用作資料複製的中繼 等,但myisam和innodb引擎是最常見的,myisam適用於事務的處理不多的情況,innodb適用於事務處理比較多...