MyISAM 儲存引擎的特點及優化方法

2022-05-01 08:15:06 字數 1397 閱讀 9550

myisam:

myisam 管理非事務表、是isam 的擴充套件格式。除了提供isam裡所沒有的索引的字段管理等的大量功能、myisam 還使用一種**鎖定的機制、來優化多個併發的讀寫操作。myisam 提供高速儲存和檢索、以及全文搜尋能力;在mysql5.5.5版本及以下的所有mysql配置裡被支援。也是預設的儲存引擎。

特性:

1:不支援事務、不具備aicd特性(原子性、一致性、分離性、永久性);

2:表級別鎖定形式(更新資料時鎖定整個表、這樣雖然可以讓鎖定的實現成本很小但是同時大大降低了其併發的效能);

3:讀寫相互阻塞(不僅會在寫入的時候阻塞讀取、還會在讀取的時候阻塞寫入、但是讀取不會阻塞讀取);

4:只會快取索引(myisam通過key_buffer_size來設定快取索引,提高訪問效能較少磁碟io的壓力、但是只快取索引、不快取資料);

5:讀取速度快、占用資源比較少;

6:不支援外來鍵約束、只支援全文檢索;

7:是mysql5.5.5版本之前的預設儲存引擎;

應用場景:

1:不需要事務支援的場景;

2:讀多或者寫多的單一業務場景、讀寫頻繁的則不適合、會阻塞;

3:讀寫併發訪問較低的業務;

4:資料修改相對較少的業務;

5:以讀為主的業務(如部落格、資訊資料庫、使用者資料庫等);

6:對資料的一致性要求不是很高的業務;

7:伺服器硬體資源相對比較差的機器;

調優精要:

1:設定合適的索引(快取機制);

2:調整讀寫優先許可權、根據業務需求、確保重要操作更有執行許可權;

3:啟用延時插入(盡量批量插入、降低寫的頻率);

4:寫資料的時候、順序操作、讓insert資料都寫入到尾部、減少阻塞;

5:分解大的時間長的操作、降低單個操作的阻塞時間;

6:降低併發數(減少資料庫的訪問、高併發場景的話、可以使用佇列機制);

7:對於靜態更新不頻繁的資料庫資料、充分利用query cache或者memcached快取服務、極大可能的提高訪問效率;

8:count的時候、只有count(*)會直接返回行數、才是效率最高的;帶有where條件的count都需要進行全部資料的訪問;

9:可以配置主從資料庫的時候、主資料庫使用innodb、從資料庫使用myisam、進行讀寫分離;

儲存:

在儲存的時候、每乙個myisam的表都對應硬碟上的三個檔案(同一檔名、不同副檔名):

.frm:儲存表的定義、這個檔案不是myisam引擎的一部分、是資料庫伺服器的一部分;

.myd:儲存表的資料;

.myi:儲存表的索引檔案;

(.myd 和 .myi 是myisam 的關健點 )

MyISAM儲存引擎

myisam是預設儲存引擎。它基於更老的isam 但有很多有用的擴充套件。注意mysql 5.1不支援isam 每個myisam在磁碟上儲存成三個檔案。第乙個檔案的名字以表的名字開始,副檔名指出檔案型別。frm檔案儲存表定義。資料檔案的擴充套件名為.myd mydata 索引檔案的副檔名是.myi ...

MyISAM儲存引擎

支援事務,支援外來鍵,尤其是訪問速度快,對事務完 整性沒有要求或者以select insert為主的應用基本都可以使用這個引擎來建立表。每個myisam在磁碟上儲存成3個檔案,其中檔名和表名都相同,但是副檔名分別為 1 frm 儲存表定義 2 myd mydata,儲存資料 3 myi myinde...

MyISAM儲存引擎

支援事務,支援外來鍵,尤其是訪問速度快,對事務完 整性沒有要求或者以select insert為主的應用基本都可以使用這個引擎來建立表。每個myisam在磁碟上儲存成3個檔案,其中檔名和表名都相同,但是副檔名分別為 1 frm 儲存表定義 2 myd mydata,儲存資料 3 myi myinde...