mysql有很多的儲存引擎,這裡寫一下四種比較常用的儲存引擎innodb,myisam,memory,archive。
innodb是mysql現在的預設儲存引擎,也是事務性資料庫的首選儲存引擎,支援外來鍵和事務,同時支援的為行級鎖。主要有以下幾個特點:
1.儲存結構:innodb將表中的資料儲存在表空間上,表空間中包含若干個段,段中有區,區中有很多頁,每乙個頁有16k,頁中訪問很多行記錄。儲存的時候是按照主鍵排序的。
2.使用快取區:innodb建立乙個記憶體快取區,快取區的大小和物理機器有關,將用到的頁換入快取區中,採用的置換演算法是lru演算法,訪問會經過快取,所以效率比較高。
3.插入緩衝:innodb對非唯一輔助索引插入操作,先進行緩衝起來,不是每次插入都進行一次插入真正的索引,而是將離散的索引合併起來,一次進行插入。
4.兩次寫 :innodb在將乙個快取區的頁寫入磁碟的時候,先將頁通過memcpy複製到乙個記憶體dobble write頁中,然後由於這部分是順序寫所以很快,然後再將快取區的頁寫入表空間中,如果發生異常,可以從磁碟中剛才寫入的備份進行恢復。
5.自適應雜湊索引:innodb會監控對錶上個索引頁的查詢。如果觀察到建立雜湊索引可以帶來速度提公升,則建立雜湊索引,但是要符合連續的訪問模式相同。
6.非同步io:使用者可以發出多個io,然後innodb非同步的執行,而不是等待乙個io完成之後在進行下乙個io。
7.重新整理領接頁:如果innodb重新整理乙個髒頁的時候會檢測所有頁,發現該頁所在的區,存在其他的髒頁,會一起順便重新整理。
myisam儲存引擎是mysql關聯式資料庫管理系統的預設儲存引擎(mysql5.5.5以前),這種mysql的表儲存結構從舊的isam**擴充套件出許多有用的功能.主要有以下幾個特點:
1。不支援事務(事務是指邏輯上的一組操作,組成這組操作的各個單元,要麼全成功,要麼全失敗)
2.表級鎖定(更新時鎖整個表):其鎖定機制是表級鎖定,這樣雖然可以讓鎖定的實現成本很小但是同時大大降低了其併發的效能.
3.讀寫相互阻塞:不僅會在寫入的時候阻塞讀取,myisam還會在讀取的時候阻塞寫入,但是讀本身不會阻塞另外的讀.
4.只會快取索引:myisam可以通過key_buffer_size快取索引,以大大提高訪問效能,減少磁碟io,但是這個快取區只會快取索引,而不會快取資料.
5.讀取速度快,占用資源相對少.
6.不支援外來鍵約束,但是支援全文索引.
memory儲存引擎,將表中的資料儲存到記憶體中,未查詢和引用其他表資料提供快速訪問。因此這種儲存引擎很少被用到,其主要優勢是速度快,而且支援使用hash索引,可見速度可以達到很快,但是缺陷也很明顯就是不安全,容易丟失,儲存大小受限。
archive儲存引擎也是使用很少的一種儲存引擎,從archive單詞的解釋我們大概可以明白這個儲存引擎的用途,這個儲存引擎基本上用於資料歸檔;它的壓縮比非常的高,儲存空間大概是innodb的10-15分之一所以它用來儲存歷史資料非常的適合,由於它不支援索引同時也不能快取索引和資料,所以它不適合作為併發訪問表的儲存引擎。archivec儲存引擎使用行鎖來實現高併發插入操作,但是它不支援事務,其設計目標只是提供高速的插入和壓縮功能。由於不支援delete 、update、索引等操作;只支援select和insert操作,所以一般是用於儲存大量的歷史資料和日誌等等。
後兩種儲存引擎使用很少,主要要了解前兩種儲存引擎的特點,最後總結以下innodb和myisam儲存引擎的區別:
innodb支援事務,myisam不支援
innodb不支援全文索引,myisam支援
innodb支援資料快取,myisam不支援
4.innodb支援外來鍵,myisam不支援
5.innodb是行級鎖,而myisam是表級鎖
6.innodb的insert和update效能高,而myisam的select效能高
7.innodb的count(*)的複雜度為o(n),而myisam為o(1)
Mysql常用的四種儲存引擎介紹
mysql建立表常用的四種儲存引擎有 mysam儲存引擎 innodb儲存引擎 memory儲存引擎 merge儲存引擎。myisam儲存引擎特點 不支援事務 不支援外來鍵 訪問速度快,對事務完整性沒有要求,以select insert為主。支援3種不同的儲存格式 靜態表 動態表 壓縮表。表中的字段...
MySQL常用的四種儲存引擎介紹
mysql常用的四種儲存引擎介紹 1 myisam儲存引擎 不支援事務 也不支援外來鍵,優勢是訪問速度快,對事務完整性沒有 要求或者以select,insert為主的應用基本上可以用這個引擎來建立表 支援3種不同的儲存格式,分別是 靜態表 動態表 壓縮表 靜態表 表中的字段都是非變長字段,這樣每個記...
MySQL中四種常用儲存引擎的介紹
mysql常用的四種引擎的介紹 1 myisam儲存引擎 不支援事務 也不支援外來鍵,優勢是訪問速度快,對事務完整性沒有 要求或者以select,insert為主的應用基本上可以用這個引擎來建立表 支援3種不同的儲存格式,分別是 靜態表 動態表 壓縮表 靜態表 表中的字段都是非變長字段,這樣每個記錄...