fbpx
维基百科

MySQL数据库引擎的比较

这是MySQL数据库管理系统(DBMS)的可用数据库引擎之间的比较。 数据库引擎 (或“存储引擎”)是DBMS用于从数据库增刪查改(CRUD)数据的底层软件组件。

数据库引擎 开发商 许可 支持事务 积极发展
Archive 甲骨文公司 GPL
Aria英语Aria (storage engine) MariaDB GPL
Berkeley DB 甲骨文公司 APGLv3 ?
BlitzDB ? GPL
CONNECT MariaDB GPL ?
CSV 甲骨文公司 GPL
Deep Information Sciences Custom Proprietary
Falcon 甲骨文公司 GPL
InfiniDB英语InfiniDB Calpont GPL
InnoDB 甲骨文公司 GPL
MyISAM 甲骨文公司 GPL
NDB 甲骨文公司 GPLv2
TokuDB TokuTek Modified GPL
WiredTiger WiredTiger GPL
XtraDB英语XtraDB Percona GPL
Federated英语MySQL Federated 甲骨文公司 GPL ?
FederatedX MariaDB GPL ?
CassandraSE MariaDB GPL
sequence MariaDB GPL
mroonga MariaDB GPL ?
SphinxSE Sphinx Technologies GPL
MyRocks Facebook GPLv2
MyMax CEICOM Solutions Custom Proprietary

InnoDB和MyISAM之间的比较

  1. InnoDB通过重放其日志从崩溃或其他意外关闭中恢复。 MyISAM必须完全扫描并修复或重建任何已更新但未完全刷新到磁盘的索引或可能的表。 由于InnoDB方法大约是固定时间,而MyISAM时间随着数据文件的大小而增长,因此随着数据库大小的增长,InnoDB提供了更高的可用性。
  2. 将innodb_flush_log_at_trx_commit设置为1的InnoDB在每次事务后刷新事务日志,大大提高了可靠性。[1]MyISAM必须在完全记录的文件系统上运行,例如使用data = journal安装的ext4,以提供与数据文件损坏相同的弹性。 (可以将日志放在SSD设备上以提高MyISAM性能,类似地,InnoDB日志可以放在非日志文件系统上,例如在SSD上运行的ext2,以获得类似的性能提升。在任何一种情况下都不会牺牲可靠性。)
  3. InnoDB可以在可靠性较低但在某些情况下具有更高性能的模式下运行。 将innodb_flush_log_at_trx_commit设置为0将切换到在将控制权返回给调用方之前未将事务提交到磁盘的模式。 相反,磁盘刷新发生在计时器上。[1]
  4. InnoDB会自动将多个并发插入组合在一起并同时将它们刷新到磁盘。[2]MyISAM依赖于文件系统块缓存来缓存对数据行和索引的读取,而InnoDB在引擎本身内执行此操作,将行缓存与索引缓存相结合。[3]
  5. 如果存在,InnoDB将以主键顺序存储行,否则将存储第一个唯一键顺序。 如果选择密钥以便于常见操作,这可以明显更快。如果没有主键或唯一密钥,InnoDB将使用内部生成的唯一整数密钥,并将以粗略的插入顺序物理存储记录,如 MyISAM做到了。 或者,可以使用自动增量主键字段来实现相同的效果。
  6. InnoDB为数据和索引提供可更新的LZW压缩页面存储。 MyISAM压缩表无法更新。[4]
  7. 在完全符合ACID标准的模式下运行时,InnoDB必须每次事务至少对磁盘执行一次刷新,尽管它会将刷新与多个连接的插入结合起来。 对于典型的硬盘驱动器或阵列,这将限制每秒约200次更新事务。 对于需要更高事务率的应用程序,将需要具有写入缓存和备用电池的磁盘控制器,以保持事务完整性。 InnoDB还提供了几种减少这种影响的模式,自然会导致事务完整性保证的丢失,尽管仍然保留了比MyISAM更高的可靠性。 MyISAM没有这种开销,只是因为它不支持事务。
  8. MyISAM使用表级锁定对任何现有行进行更新和删除,并可选择附加新行而不是锁定并将其插入可用空间。 InnoDB使用行级锁定。 对于经常更新许多行的大型数据库应用程序,行级锁定至关重要,因为单个表级锁定会显着降低数据库中的并发性。
  9. InnoDB和MyISAM都支持全文搜索,InnoDB在MySQL 5.6.4中获得全文索引支持[5],但结果可能会有显着差异[6]

参见

  1. ^ 1.0 1.1 MySQL 5.5 Reference Manual - InnoDB Startup Options and System Variables. [2018-12-17]. (原始内容于2019-08-08). 
  2. ^ . [2018-12-17]. (原始内容存档于2011-11-04). 
  3. ^ MySQL 5.5 Reference Manual - The InnoDB Storage Engine. [28 May 2015]. (原始内容于2020-01-01). 
  4. ^ MySQL 5.5 Reference Manual - myisampack — Generate Compressed, Read-Only MyISAM Tables. [2018-12-17]. (原始内容于2019-11-29). 
  5. ^ Changes in MySQL 5.6.4 (2011-12-20, Milestone 7). Oracle. December 12, 2011 [2018-12-17]. (原始内容于2020-09-21). 
  6. ^ InnoDB Full-text Search in MySQL 5.6: Part 2, The Queries!. MySQL Performance Blog. March 4, 2013 [2018-12-17]. (原始内容于2014-07-15). 

外部链接

  • MySQL Documentation on MyISAM Storage Engine(页面存档备份,存于互联网档案馆
  • MyISAM's open files limit and table-cache problem explained(页面存档备份,存于互联网档案馆
  • The article about problems which will occur in using MyISAM(页面存档备份,存于互联网档案馆

mysql数据库引擎的比较, 这是mysql数据库管理系统, dbms, 的可用数据库引擎之间的比较, 数据库引擎, 存储引擎, 是dbms用于从数据库增刪查改, crud, 数据的底层软件组件, 数据库引擎, 开发商, 许可, 支持事务, 积极发展archive, 甲骨文公司, 是aria, 英语, aria, storage, engine, mariadb, 是berkeley, 甲骨文公司, apglv3, 否blitzdb, 是connect, mariadb, 是csv, 甲骨文公司, 是deepsql. 这是MySQL数据库管理系统 DBMS 的可用数据库引擎之间的比较 数据库引擎 或 存储引擎 是DBMS用于从数据库增刪查改 CRUD 数据的底层软件组件 数据库引擎 开发商 许可 支持事务 积极发展Archive 甲骨文公司 GPL 否 是Aria 英语 Aria storage engine MariaDB GPL 否 是Berkeley DB 甲骨文公司 APGLv3 否BlitzDB GPL 否 是CONNECT MariaDB GPL 是CSV 甲骨文公司 GPL 否 是DeepSQL Deep Information Sciences Custom Proprietary 是 是Falcon 甲骨文公司 GPL 是 否InfiniDB 英语 InfiniDB Calpont GPL 是 是InnoDB 甲骨文公司 GPL 是 是MyISAM 甲骨文公司 GPL 否 否NDB 甲骨文公司 GPLv2 是 是TokuDB TokuTek Modified GPL 是 是WiredTiger WiredTiger GPL 是 是XtraDB 英语 XtraDB Percona GPL 是 是Federated 英语 MySQL Federated 甲骨文公司 GPL 否FederatedX MariaDB GPL 是CassandraSE MariaDB GPL 否 否sequence MariaDB GPL 是 是mroonga MariaDB GPL 是SphinxSE Sphinx Technologies GPL 否 是MyRocks Facebook GPLv2 是 是MyMax CEICOM Solutions Custom Proprietary 是 是InnoDB和MyISAM之间的比较 编辑InnoDB通过重放其日志从崩溃或其他意外关闭中恢复 MyISAM必须完全扫描并修复或重建任何已更新但未完全刷新到磁盘的索引或可能的表 由于InnoDB方法大约是固定时间 而MyISAM时间随着数据文件的大小而增长 因此随着数据库大小的增长 InnoDB提供了更高的可用性 将innodb flush log at trx commit设置为1的InnoDB在每次事务后刷新事务日志 大大提高了可靠性 1 MyISAM必须在完全记录的文件系统上运行 例如使用data journal安装的ext4 以提供与数据文件损坏相同的弹性 可以将日志放在SSD设备上以提高MyISAM性能 类似地 InnoDB日志可以放在非日志文件系统上 例如在SSD上运行的ext2 以获得类似的性能提升 在任何一种情况下都不会牺牲可靠性 InnoDB可以在可靠性较低但在某些情况下具有更高性能的模式下运行 将innodb flush log at trx commit设置为0将切换到在将控制权返回给调用方之前未将事务提交到磁盘的模式 相反 磁盘刷新发生在计时器上 1 InnoDB会自动将多个并发插入组合在一起并同时将它们刷新到磁盘 2 MyISAM依赖于文件系统块缓存来缓存对数据行和索引的读取 而InnoDB在引擎本身内执行此操作 将行缓存与索引缓存相结合 3 如果存在 InnoDB将以主键顺序存储行 否则将存储第一个唯一键顺序 如果选择密钥以便于常见操作 这可以明显更快 如果没有主键或唯一密钥 InnoDB将使用内部生成的唯一整数密钥 并将以粗略的插入顺序物理存储记录 如 MyISAM做到了 或者 可以使用自动增量主键字段来实现相同的效果 InnoDB为数据和索引提供可更新的LZW压缩页面存储 MyISAM压缩表无法更新 4 在完全符合ACID标准的模式下运行时 InnoDB必须每次事务至少对磁盘执行一次刷新 尽管它会将刷新与多个连接的插入结合起来 对于典型的硬盘驱动器或阵列 这将限制每秒约200次更新事务 对于需要更高事务率的应用程序 将需要具有写入缓存和备用电池的磁盘控制器 以保持事务完整性 InnoDB还提供了几种减少这种影响的模式 自然会导致事务完整性保证的丢失 尽管仍然保留了比MyISAM更高的可靠性 MyISAM没有这种开销 只是因为它不支持事务 MyISAM使用表级锁定对任何现有行进行更新和删除 并可选择附加新行而不是锁定并将其插入可用空间 InnoDB使用行级锁定 对于经常更新许多行的大型数据库应用程序 行级锁定至关重要 因为单个表级锁定会显着降低数据库中的并发性 InnoDB和MyISAM都支持全文搜索 InnoDB在MySQL 5 6 4中获得全文索引支持 5 但结果可能会有显着差异 6 参见 编辑 1 0 1 1 MySQL 5 5 Reference Manual InnoDB Startup Options and System Variables 2018 12 17 原始内容存档于2019 08 08 MySQL 5 5 Reference Manual InnoDB Group Commit 2018 12 17 原始内容存档于2011 11 04 MySQL 5 5 Reference Manual The InnoDB Storage Engine 28 May 2015 原始内容存档于2020 01 01 MySQL 5 5 Reference Manual myisampack Generate Compressed Read Only MyISAM Tables 2018 12 17 原始内容存档于2019 11 29 Changes in MySQL 5 6 4 2011 12 20 Milestone 7 Oracle December 12 2011 2018 12 17 原始内容存档于2020 09 21 InnoDB Full text Search in MySQL 5 6 Part 2 The Queries MySQL Performance Blog March 4 2013 2018 12 17 原始内容存档于2014 07 15 外部链接 编辑MySQL Documentation on MyISAM Storage Engine 页面存档备份 存于互联网档案馆 MyISAM s open files limit and table cache problem explained 页面存档备份 存于互联网档案馆 The article about problems which will occur in using MyISAM 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title MySQL数据库引擎的比较 amp oldid 68430959, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。