【问题标题】:"query end" step very long at random times“查询结束”步骤在随机时间很长
【发布时间】:2011-10-19 17:29:27
【问题描述】:

我正在对一个 Web 应用程序进行基准测试,我在大约 1% 的查询中遇到了问题,主要是更新(但有时也有插入)。我对这些请求进行了分析,似乎是查询结束步骤需要很多时间。

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

当我浏览文档时

end :这发生在最后,但在清理 ALTER TABLE、CREATE VIEW、DELETE、INSERT、SELECT 或 UPDATE 语句之前。

查询结束:此状态发生在处理查询之后但在释放项目状态之前。

这是否意味着清理我的更新需要时间? 这一步具体是做什么的,如何提高性能?

谢谢

【问题讨论】:

    标签: mysql innodb


    【解决方案1】:

    通过添加解决的问题

    innodb_flush_log_at_trx_commit = 0
    

    在 /etc/my.cnf 中

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

    【讨论】:

    • 设置 innodb_flush_log_at_trx_commit=0 不是一个可以轻易采用的解决方案,它从根本上改变了您的事务的持久性!
    • 同意。天真地设置 innodb_flush_log_at_trx_commit 可能很危险,而且答案具有误导性。
    • @PedroWerneck -- 我尝试了这个解决方案,它把我的“查询结束”从 0.0006 减少到了 0.00007。任何替代解决方案?
    • 解决方案是什么?查询结束 0.0006 似乎没有问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多