加速 InnoDB 插入和更新的可能性

Ste*_*ote 5 mysql innodb performance mysql-5.5

我的网站将用户会话保留在 innodb 表中。这通常工作得很好,但一天几百次,INSERT 尤其是 UPDATE 语句运行得更慢。

我正在监控何时,结果证明通常是在机器人访问我的网站时(例如,googlebot 总是分配相同的会话,因此每次点击都需要在会话表上使用 UDPATE)。

我认为 google 对我的打击太大了,以至于 mysql 无法跟上更新相同的记录。通常更新需要几磨机,但我已经看到它达到了整整一秒。顺便说一句,我的表从来没有超过 7000 条记录。

知道我只有 1 个磁盘可供我使用,但仍有一些空闲内存可用,我想知道在这个特定表上增强 UPDATE 性能的最佳可能性是什么(我在其他表上没有遇到任何问题,因为它是少写密集)。

Rol*_*DBA 5

InnoDB 架构

InnoDB 架构

您可能会觉得这很有趣,但您可以将 InnoDB 写入的速度提高一倍或三倍。如何 ?

禁用双写缓冲区(使用innodb-doublewrite

首先,将此添加到my.cnfmy.ini对于 Windows)

[mysqld]
innodb-doublewrite=0
Run Code Online (Sandbox Code Playgroud)

然后重启mysql

  • Linux: service mysql restart
  • 视窗
    • net stop mysql
    • net start mysql

警告

在发生崩溃时,mysql启动的崩溃恢复阶段可能会产生不一致的数据或丢失的数据。

如果您使用的是 Linux,则可以通过设置具有两个或更多节点的 Percona XtraDB Cluster (PXC) 来抵消这种威胁。如果您的主节点崩溃,那么您可以手动故障转移到其他节点之一。确保 PXC 中的所有节点都禁用了双写缓冲区。

试一试 !!!