複製鏈接
請複製以下鏈接發送給好友

myisam

鎖定
MyISAMMySQL的默認數據庫引擎(5.5版之前),由早期的ISAM所改良。雖然性能極佳,但卻有一個缺點:不支持事務處理(transaction)。不過,在這幾年的發展下,MySQL也導入了InnoDB(另一種數據庫引擎),以強化參照完整性與併發違規處理機制,後來就逐漸取代MyISAM。
中文名
MYISAM
外文名
MYISAM
默    認
存儲引擎
不支持
ISAM
擴展名為
MYD,MYI,frm

myisam簡介

MyISAMMySQL的默認數據庫引擎(5.5版之前),由早期的ISAM所改良。雖然性能極佳,但卻有一個缺點:不支持事務處理(transaction)。不過,在這幾年的發展下,MySQL也導入了InnoDB(另一種數據庫引擎),以強化參照完整性與併發違規處理機制,後來就逐漸取代MyISAM。
每個MyISAM數據表,皆由存儲在硬盤上的3個文件所組成,每個文件都以數據表名稱為文件主名,並搭配不同擴展名區分文件類型:
  1. .frm--存儲數據表定義,此文件非MyISAM引擎的一部分。
  2. .MYD--存放真正的數據。
  3. .MYI--存儲索引信息。 [1] 

myisam與InnoDB之比較

  1. InnoDB可藉由事務記錄檔(Transaction Log)來恢復程序崩潰(crash),或非預期結束所造成的數據錯誤;而MyISAM遇到錯誤,必須完整掃描後才能重建索引,或修正未寫入硬盤的錯誤。InnoDB的修復時間,大略都是固定的,但MyISAM的修復時間,則與數據量的多少成正比。相對而言,隨着數據量的增加,InnoDB會有較佳的穩定性。
  2. MyISAM必須依靠操作系統來管理讀取與寫入的緩存,而InnoDB則是有自己的讀寫緩存管理機制。(InnoDB不會將被修改的數據頁立即交給操作系統)因此在某些情況下,InnoDB的數據訪問會比MyISAM更有效率。
  3. InnoDB目前並不支持MyISAM所提供的壓縮與terse row formats,所以對硬盤與高速緩存的使用量較大。因此MySQL從5.0版開始,提供另一個負載較輕的格式,他可減少約略20%的系統負載,而壓縮功能已項目於未來的新版中推出。
  4. 當操作完全兼容ACID(事務)時,雖然InnoDB會自動合併多個連接,但每次有事務產生時,仍至少須寫入硬盤一次,因此對於某些硬盤或磁盤陣列,會造成每秒200次的事務處理上限。若希望達到更高的性能且保持事務的完整性,就必使用磁盤緩存與電池備援。當然InnoDB也提供數種對性能衝擊較低的模式,但相對的也會降低事務的完整性。而MyISAM則無此問題,但這並非因為它比較先進,這只是因為它不支持事務。 [1] 
參考資料
  • 1.    "InnoDB Full-text Search in MySQL 5.6: Part 2, The Queries!". MySQL Performance Blog. March 4, 2013.