Mysql InnoDB表到elasticsearch:ON UPDATE CURRENT TIMESTAMP里面的事务

时间:2016-10-26 01:01:40

标签: mysql elasticsearch

我想让我的MySQL数据库表与相应的elasticsearch索引保持同步。我正在尝试写自己的cron工作。 MySQL表有InnoDB引擎。我添加了updated_atCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP。我使用此查询执行同步:

SELECT * FROM table WHERE updated_at>=bookmark;

我对它进行了测试,发现有些插页丢失了。

在COMMIT之前计算CURRENT_TMESTAMP吗?

1 个答案:

答案 0 :(得分:1)

CURRENT_TIMESTAMP - NOW()的同义词 - 在执行调用它的查询开始时捕获其值。无论查询运行多长时间,这些函数都会保持一个常量值 - 因此在长时间运行更新的情况下,所有受影响的行都将具有相同的值,并且该值应该在每个单独的查询开始执行时 - 不提交时间。

  

NOW()返回一个常量时间,指示语句开始执行的时间。 (在存储的函数或触发器中,NOW()返回函数或触发语句开始执行的时间。)这与SYSDATE()的行为不同,后者返回执行它的确切时间。

     

https://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_now