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

相关条目

参考链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.