mysql延迟了插入时间戳

9 mysql timestamp insert delayed-execution

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

我的问题是,如果我使用延迟插入此表上,将时间戳是当插入实际上是由当请求排队的时间或时间?

jba*_*all 6

答案是当请求排队时,但是在发出请求时不一定正确,因为如果没有表的线程,则在建立表的线程之后排队请求.

来自mysql 5.1 dev文档:

该线程执行INSERT语句,但不是将该行写入表,而是将最后一行的副本放入由处理程序线程管理的队列中.线程会注意到任何语法错误并将其报告给客户端程序.

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

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

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