MySQL經常使用存儲引擎之MyISAM

1. mysql 5.5以前版本默認存儲引擎

1.1 由於這個緣由如今還有大量服務器在使用這myisam引擎的表

1.2 myisam是mysql大部分系統表和臨時表使用的存儲引擎

clipboard.png

2. myisam存儲引擎表由myd和myi組成

2.1 myd存儲數據信息

2.2 myi存儲索引信息

2.3 frm記錄表結構的,全部存儲引擎都有的

clipboard.png

3. 特性

3.1 併發性與鎖級別

myisam使用的是表級鎖, 而不是行級鎖。這也就意味着對錶數據進行修改時,須要對整個表進行加鎖。而在對錶中的數據進行讀取時,也須要對全部表加共享鎖。因此,使用myisam存儲引擎的表,讀取和寫入這兩種操做是互斥的。固然,在一些狀況下,當咱們對錶中的數據進行讀取時,也能夠在表的末尾插入數據。所以,myisam對讀寫混合的併發性不是很好。若是知識制度的操做的話,就併發性而言,性能仍是能夠接受的。由於共享鎖並不會阻塞共享鎖。mysql

3.2 表損壞修護

支持對意外關閉的表進行檢查和修護操做,這裏提到的修護,並非事務恢復。由於myisam並非一種事物存儲引擎,因此它不可能提供事務恢復所須要的相關日誌。因此注意了,對myisam表作數據恢復,可能會形成數據的丟失。對有問題的表可使用sql

check table tablename 進行檢查
repair table tablename 進行修護

clipboard.png

除了上訴命令,mysql還提供了修護工具,叫作myisamchk( 若是使用,則須要中止mysql服務),若是不中止使用這個工具,可能形成更大的損壞。服務器

3.3 myisam表支持的索引類型

myisam表支持全文索引,是 mysql5.7以前惟一支持全文索引的官方存儲引擎。支持text或block等字段前500個字符的前綴索引,若果myisam是一張很大的只讀表的話,在表建立完,導入數據後,就不會在對錶進行任何修改操做,那麼咱們能夠對這樣的表進行壓縮操做,這樣能夠減小磁盤io。併發

3.4 myisam表支持數據壓縮

對於表中數據壓縮是獨立進行壓縮的,因此在讀取單行數據的時候,沒必要對整個表來進行解壓函數

myisampack  壓縮表

clipboard.png

4. 限制

4.1 版本< mysql5.0時默認表大小爲4g

若果存儲大表則要修改 max_rowsavg_row_length , 這兩個數相乘的大小,就是表達到的大小。對於大表來講,修改這兩個參數會致使表重建,可能須要一些時間。工具

4.2 版本 >mysql5.0時默認支持爲256tb

5. 適用場景

5.1 非事務型應用

myisam自己時一種非事務型存儲引擎,也就是說myisam是不支持事務的。性能

5.2 只讀類應用

由於能夠對錶進行壓縮,壓縮後只讀。spa

5.3 空間類應用

在mysql5.7以前,myisam是惟一支持空間函數的存儲引擎。若是須要存儲空間類數據,使用空間函數,只能使用myisam存儲引擎。3d

相關文章
相關標籤/搜索