gpt4 book ai didi

mysql延迟插入时间戳

转载 作者:可可西里 更新时间:2023-11-01 06:30:25 26 4
gpt4 key购买 nike

我有一个包含字段的表::ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP

我的问题是,如果我在这个表上使用延迟插入,时间戳是请求排队的时间还是实际插入的时间?

最佳答案

答案是在请求排队时,但在发出请求时不一定是正确的,因为如果尚未建立表的线程,则请求会在建立后排队。

来自mysql 5.1 dev docs :

The thread executes the INSERT statement, but instead of writing the row to the table, it puts a copy of the final row into a queue that is managed by the handler thread. Any syntax errors are noticed by the thread and reported to the client program.

延迟语句执行时的事件顺序:

  1. 如果表的处理程序线程还没有,则创建一个处理程序线程
  2. 处理程序检查或等待获取DELAYED
  3. 处理程序执行 INSERT 并将最后一行放入队列
  4. 当实际插入该行时,更新二进制日志
  5. 处理程序一次写入 delayed_insert_limit 行,并在写入之间执行任何挂起的 SELECTS
  6. 当队列为空时,释放DELAYED

根据是否需要创建线程以及检查或获取DELAYED锁需要多长时间,执行语句(步骤0)和执行语句之间的时间声明(第 3 步)会有所不同。然后,根据队列的大小(特别是如果它超过 delayed_insert_limit 行),以及是否有任何未决的 SELECTS 发生,写入将被延迟一些不可预测的时间.

关于mysql延迟插入时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4410878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com