【问题标题】:Mysql update query is in general log but data is not changedMysql更新查询在一般日志但数据没有改变
【发布时间】:2015-06-08 12:11:12
【问题描述】:

我在批处理中使用 Node.js 和 MySQL。该过程同时进行大量查询并由许多作业组成。我注意到 update 语句有时会起作用。

UPDATE `Configuration` SET `Value`='2015-06-08 11:35:00' WHERE `ID`=6

我打开了通用日志并在那里找到了查询,但表中的数据没有改变。查询在作业结束时大约每 5 分钟运行一次。但其他工作仍在进行查询。

示例: jobA 进行了大量查询。同时 jobC 从配置表中进行 SELECT。然后 jobC 执行一堆与配置表无关的查询。一旦 jobC 完成了一堆,它会针对配置表运行两个查询:SELECT 和 UPDATE。

示例中的配置表未用于任何其他作业或事务。

我在测试过程中发现,当 jobA 负载过重时,UPDATE Con​​figuration 表查询不起作用。

谁能告诉我问题出在哪里或者我应该在哪里进一步研究?

【问题讨论】:

    标签: mysql node.js sequelize.js node-mysql


    【解决方案1】:

    我建议研究 MySQL 的隔离模式。

    我需要一些关于您的问题的更多信息(它不更新的频率与成功更新的频率以及在什么条件下)但是如果它运行得太频繁,另一个事务(如果它们很长?)可能没有完成运行如果它没有读取脏数据,它可能不会执行更新。这完全取决于作业的相对速度及其隔离模式。

    【讨论】:

    • 示例:jobA 进行了大量查询。同时,jobC 从Configuration 表中进行SELECT。然后 jobC 执行一堆与Configuration 表无关的查询。一旦 jobC 完成了一堆,它会针对Configuration 表运行两个查询:SELECT 和 UPDATE。示例中的Configuration 表未用于任何其他作业或事务。我在测试过程中发现,当 jobA 负载过重时,UPDATE Configuration 表查询不起作用。
    • jobA和jobC之间有依赖关系吗?您需要的 SQL 语句的顺序是什么?一旦你把它拼出来,如何分离工作或将它们包装在一起作为交易将变得清晰。您是否将任何内容组合为一个事务?
    猜你喜欢
    • 2013-05-22
    • 1970-01-01
    • 2013-10-14
    • 2022-01-15
    • 2021-04-26
    • 2013-01-17
    • 2022-01-17
    • 2017-11-12
    • 2016-11-16
    相关资源
    最近更新 更多