InnoDB数据库引擎

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值