1. 程式人生 > >mysql 資料儲存引擎區別

mysql 資料儲存引擎區別

一,儲存型別

    

 

 二 , 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 的關健點 )