【问题标题】:UPDATE statements are in "query end state"UPDATE 语句处于“查询结束状态”
【发布时间】:2013-03-01 00:15:47
【问题描述】:

我们最近升级了运行在 mysql 服务器版本 5.5.8 上的 mysql 数据库。升级后,有时我们会看到简单的升级过程需要 10 多秒。当我查看进程列表时,它显示它们都处于“查询结束”状态。有没有人对此有任何想法。

 UPDATE Accounts SET IPadd = 'xx.xx.xx.xx', updatedtime = NULL WHERE Id=xx;

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我在这里检查了一些解决方案,我想到了这个link

    添加这一行(如果存在则编辑它):

    innodb_flush_log_at_trx_commit = 0
    

    在 /etc/my.cnf 中


    然而

    关于 Pedro Werneck 的评论:

    天真地设置 innodb_flush_log_at_trx_commit 可能很危险

    如果您对它进行事务查询,这是您的选择。

    【讨论】:

    • 日志文件是一个明确的候选者。但我会考虑先清除日志。禁用 flush_log 可能会产生不良后果。并且 OP 甚至没有说他是否在使用 innodb。请参阅我上面的链接。恕我直言...
    • 我不同意清除日志文件,我宁愿将其移至其他目录。然而,在他的提问中。我们无法确定他使用的是什么表引擎。我已经得出了这个答案,也许他正在使用 InnoDb。
    【解决方案2】:

    建议:

    1) 检查日志文件的大小

    链接:Lots of "Query End" states in MySQL, all connections used in a matter of minutes

    2) 确保“id”有索引

    3) 查看各种 MySql 调优和配置选项。例如:innodb_flush_log_at_trx_commit = 0

    链接:"query end" step very long at random times

    警告:在禁用日志刷新之前请仔细考虑。更多详情请看这里:

    链接:https://dba.stackexchange.com/questions/12611/is-it-safe-to-use-innodb-flush-log-at-trx-commit-2

    【讨论】:

    • 感谢您的回复。正如你提到的,我确实检查了日志文件,我们有足够的可用空间,而且这些文件不是太大。 id 是该表中的主键,所以我认为我们不需要索引。我正在尝试第三个。
    猜你喜欢
    • 1970-01-01
    • 2012-07-26
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    相关资源
    最近更新 更多