MyISAM
| 開發者 | Sun Microsystems |
|---|---|
| 作業系統 | 跨平台 |
| 類型 | 資料庫引擎 |
| 許可協議 | GNU General Public License |
| 網站 | http://www.mysql.com |
MyISAM是MySQL的預設資料庫引擎 (5.5版之前),由早期的ISAM所改良。雖然效能極佳,但卻有一個缺點:不支援事务處理(transaction)。不過,在這幾年的發展下,MySQL也導入了InnoDB (另一種資料庫引擎),以強化參照完整性與並行違規處理機制,後來就逐漸取代MyISAM。
每個MyISAM資料表,皆由儲存在硬碟上的3個檔案所組成,每個檔案都以資料表名稱為主檔名,並搭配不同副檔名區分檔案類型:
.frm--儲存資料表定義,此檔案非MyISAM引擎的一部份。.MYD--存放真正的資料。.MYI--儲存索引資訊。
與InnoDB之比較 [编辑]
- InnoDB可藉由交易記錄檔 (Transaction Log) 來恢復程式崩潰 (crash),或非預期結束所造成的資料錯誤;而MyISAM遇到錯誤,必須完整掃瞄後才能重建索引,或修正未寫入硬碟的錯誤。InnoDB的修復時間,大略都是固定的,但MyISAM的修復時間,則與資料量的多寡成正比。相對而言,隨著資料量的增加,InnoDB會有較佳的穩定性。
- MyISAM必須依靠作業系統來管理讀取與寫入的快取,而InnoDB則是有自己的讀寫快取管理機制。(InnoDB不會將被修改的數據頁立即交給操作系統) 因此在某些情況下,InnoDB的資料存取會比MyISAM更有效率。
- InnoDB目前並不支援MyISAM所提供的壓縮與 terse row formats,所以對硬碟與快取記憶體的使用量較大。因此MySQL從5.0版開始,提供另一個負載較輕的格式,他可減少約略 20% 的系統負載,而壓縮功能已計畫於未來的新版中推出。
- 當操作完全相容ACID (事务) 時,雖然InnoDB會自動合併數筆連線,但每次有事务產生時,仍至少須寫入硬碟一次,因此對於某些硬碟或磁碟陣列,會造成每秒200次的事务处理上限。若希望達到更高的效能且保持事务的完整性,就必使用磁碟快取與電池備援。當然 InnoDB 也提供數種對效能衝擊較低的模式,但相對的也會降低事务的完整性。而MyISAM則無此問題,但這並非因為它比較先進,這只是因為它不支援事务。
相關條目 [编辑]
參考連結 [编辑]
| 数据库管理系统(DBMS) () | |
|
概念 |
|
|
数据库组件 |
SQL |
| 数据库管理系统的实施 | |
|
实施类型 |
|
|
数据库成分 |
|