优化InnoDB表
- 优化InnoDB表的存储布局
- 一旦数据达到稳定的大小,或者正在增长的表增加了几十或几百兆字节,请考虑使用该OPTIMIZE TABLE语句重新组织表并压缩所有浪费的空间。重组后的表需要较少的磁盘I / O来执行全表扫描。这是一种直接的技术,可以在其他技术(如改善索引使用率或调整应用程序代码)不可行时提高性能。OPTIMIZE T
- 优化InnoDB事务管理
- 要优化InnoDB事务处理,请在事务功能的性能开销与服务器的工作负载之间找到理想的平衡。例如,如果一个应用程序每秒提交数千次,则可能会遇到性能问题;如果仅每2-3小时提交一次,则可能会遇到不同的性能问题。默认的MySQL设置AUTOCOMMIT=1可能会对繁忙的数据库服务器造成性能限制。在可行的情况
- 优化InnoDB只读事务
- InnoDB可以避免与为已知为只读的事务设置事务ID(TRX_ID字段)相关的开销。事务ID仅对于可能执行写操作或锁定读取的事务(例如)需要。消除不必要的事务ID可以减少每次查询或数据更改语句构造一个读取视图时都要查询的内部数据结构的大小。SELECT ... FOR UPDATEInnoDB在以下
- 优化InnoDB重做日志
- 请考虑以下准则以优化重做日志记录:使重做日志文件变大,甚至与缓冲池一样大。当InnoDB写重做日志文件的完整,就必须写缓冲池到磁盘的修改内容的检查点。较小的重做日志文件会导致许多不必要的磁盘写入。尽管历史上大的重做日志文件导致恢复时间很长,但是现在恢复速度要快得多,您可以放心地使用大的重做日志文件。
- InnoDB表批量插入数据
- 这些性能提示补充了“优化INSERT语句”中有关快速插入的一般准则。将数据导入时InnoDB,请关闭自动提交模式,因为它会在每次插入时对磁盘执行日志刷新。要在导入操作期间禁用自动提交,请在其周围加上SET autocommit nd COMMIT语句:SET autocommit=0;...SQLi
- 优化InnoDB查询
- 要调整InnoDB表查询,请在每个表上创建一组适当的索引。有关详细信息,请参见“ MySQL如何使用索引”。请遵循以下InnoDB索引准则:因为每个InnoDB表都有一个主键(无论您是否请求一个主键),所以请为每个表指定一组主键列,这些列用于最重要且时间紧迫的查询中。不要在主键中指定太多或太长的列,
- 优化InnoDB DDL操作
- 对表和索引(很多DDL操作CREATE,ALTER和DROP语句)可以在网上进行。有关详细信息,请参见“ InnoDB和在线DDL”。在线DDL支持添加二级索引意味着您通常可以通过以下方式来创建和加载表及相关索引:创建不具有二级索引的表,然后在数据加载后添加二级索引,从而加快创建和加载表及关联索引的
- 优化InnoDB磁盘 I / O
- 如果您遵循数据库设计的最佳实践和SQL操作的调整技术,但是由于磁盘I / O活动繁重,数据库仍然很慢,请考虑这些磁盘I / O优化。如果Unix top工具或Windows任务管理器显示您的工作负载中的CPU使用率百分比小于70%,则您的工作负载可能是磁盘绑定的。增加缓冲池大小当表数据缓存在Inno
- 优化InnoDB配置变量
- 与始终保持接近满负荷运行或遇到高峰活动的服务器相比,不同的设置最适合负载轻且可预测的服务器。由于InnoDB存储引擎会自动执行许多优化,因此许多性能调整任务涉及监视以确保数据库运行良好,并在性能下降时更改配置选项。有关详细性能监视的信息,请参见“ InnoDB与MySQL性能模式的集成”InnoDB
- 为具有多个表的系统优化InnoDB
- 如果您已配置的非持久性优化统计(非默认配置),InnoDB计算指标基数值表中的第一次表,启动后访问的,而不是存储在表这样的值。在将数据划分为多个表的系统上,此步骤可能会花费大量时间。由于此开销仅适用于初始表打开操作,因此要“预热”表以备后用,请在启动后立即通过发出诸如的语句来访问该表。SELECT
InnoDB
是MySQL客户通常在对可靠性和并发性很重要的生产数据库中使用的存储引擎。InnoDB
是MySQL中的默认存储引擎。本节说明如何优化InnoDB
表的数据库操作。