1.3. 数据库引擎
虽然 Ubuntu 软件包提供的 MySQL 的默认配置功能完善且性能良好,但在继续之前,您可能希望考虑一些事项。
MySQL 旨在允许以不同方式存储数据。 这些方法被称为数据库或存储引擎。 您会对两个主要引擎感兴趣:InnoDB 和 MyISAM。 存储引擎对最终用户是透明的。 MySQL 会在表面处理不同的事情,但无论使用哪种存储引擎,您都将以相同的方式与数据库交互。
每个引擎都有自己的优点和缺点。
虽然在表级别混合和匹配数据库引擎是可能的,并且可能是有利的,但这样做会降低您可以进行的性能调整的有效性,因为您将在两个引擎之间拆分资源,而不是将它们专用于一个引擎。
• MyISAM 是两者中较老的一个。 在某些情况下它可以比 InnoDB 更快,并且有利于只读工作负载。 一些 Web 应用程序已经围绕 MyISAM 进行了调整(尽管这并不意味着它们在 InnoDB 下会变慢)。 MyISAM 还支持 FULLTEXT 数据类型,它允许非常快速地搜索大量文本数据。 但是 MyISAM 只能锁定整个表进行写入。 这意味着一次只有一个进程可以更新一张表。 由于任何使用表格缩放的应用程序,这可能被证明是一个障碍。 它还缺乏日志功能,这使得在崩溃后更难恢复数据。 以下链接提供了有关在生产数据库上使用 MyISAM 的一些注意事项1.
• InnoDB 是更现代的数据库引擎,设计为符合 ACID2 这保证了可靠地处理数据库事务。 写锁定可以在表中的行级别基础上发生。 这意味着可以在单个表上同时进行多次更新。 数据缓存也在数据库引擎的内存中处理,允许基于更有效的行级缓存而不是文件块。 为了满足 ACID 合规性,所有事务都独立于主表进行日志记录。 这允许更可靠的数据恢复,因为可以检查数据一致性。
从 MySQL 5.5 开始,InnoDB 是默认引擎,强烈推荐使用 MyISAM,除非您对引擎特有的功能有特定需求。
文件记录