MyISAM

資料庫引擎

MyISAMMySQL的默认数据库引擎(5.5版之前),由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。不过,在这几年的发展下,MySQL也导入了InnoDB(另一种数据库引擎),以强化参照完整性并发违规处理机制,后来就逐渐取代MyISAM。

MyISAM
开发者Sun Microsystems
操作系统跨平台
类型数据库引擎
许可协议GNU通用公共许可证
网站https://www.mysql.com

每个MyISAM资料表,皆由存储在硬盘上的3个文件所组成,每个文件都以资料表名称为文件主名,并搭配不同扩展名区分文件类型:

  1. .frm--存储资料表定义,此文件非MyISAM引擎的一部分。
  2. .MYD--存放真正的资料。
  3. .MYI--存储索引信息。

与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则无此问题,但这并非因为它比较先进,这只是因为它不支持事务。

相关条目 编辑

参考链接 编辑