"查询结束"步骤随机时间很长

Lli*_*ane 8 mysql innodb

我正在对一个Web应用程序进行基准测试,我的问题出现在大约1%的查询中,主要是UPDATES(但有时也是INSERT).我对这些请求进行了分析,看起来这是需要花费大量时间的查询结束步骤.

starting  0.000029
checking permissions  0.000005
Opening tables    0.000017
System lock   0.000005
init  0.000032
Updating  0.000052
end   0.000030
**query end   1.825892**
closing tables    0.000025
freeing items 0.000020
logging slow query    0.000007
logging slow query    0.000029
cleaning up   0.000008
Run Code Online (Sandbox Code Playgroud)

当我浏览文档时

结束:这发生在结束但在清除ALTER TABLE,CREATE VIEW,DELETE,INSERT,SELECT或UPDATE语句之前.

query end:此状态在处理查询之后但在释放项状态之前发生.

那么这是否意味着我的UPDATE的清理需要时间?这一步究竟做了什么,我该如何改善表现呢?

谢谢

Lli*_*ane 12

问题通过添加解决

innodb_flush_log_at_trx_commit = 0
Run Code Online (Sandbox Code Playgroud)

在/etc/my.cnf中

当多个线程想要同时写入文件时,存在一个互锁问题,这样每天都会刷新日志.

  • 设置innodb_flush_log_at_trx_commit = 0不是一个轻率采用的解决方案,它从根本上改变了你的交易的持久性! (7认同)
  • 同意.天真地设置innodb_flush_log_at_trx_commit可能很危险,答案是误导性的. (2认同)