Mysql 延迟插入时间戳

Mysql 延迟插入时间戳,mysql,insert,timestamp,delayed-execution,Mysql,Insert,Timestamp,Delayed Execution,我有一个带有字段的表::ts TIMESTAMP DEFAULT CURRENT\u TIMESTAMP 我的问题是,如果我在这个表上使用延迟插入,时间戳是请求排队的时间还是实际插入的时间?应该是实际插入的时间答案是请求排队的时间,但请求发出时不一定正确,因为如果表的线程尚未建立,则请求将在该线程建立后排队 从: 线程执行插入 声明,但不是写 行到表中,它将 队列中的最后一行是 由处理程序线程管理。任何 语法错误由 线程并报告给客户端 节目 延迟语句执行时的事件顺序: 如果尚未创建处理程序线程,

我有一个带有字段的表::
ts TIMESTAMP DEFAULT CURRENT\u TIMESTAMP


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

应该是实际插入的时间

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

从:

线程执行插入 声明,但不是写 行到表中,它将 队列中的最后一行是 由处理程序线程管理。任何 语法错误由 线程并报告给客户端 节目

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

  • 如果尚未创建处理程序线程,则会创建该表的处理程序线程
  • 处理程序检查或等待获取
    DELAYED
  • 处理程序执行
    INSERT
    ,并将最后一行放入队列
  • 当实际插入行时,二进制日志将更新
  • 处理程序一次写入
    delayed\u insert\u limit
    行,并在写入之间执行任何挂起的
    选择
  • 当队列为空时,
    DELAYED
    锁被释放

  • 根据是否需要创建线程以及检查或获取
    延迟
    锁所需的时间,执行语句(步骤0)和执行语句(步骤3)之间的时间会有所不同。然后,根据队列的大小(特别是超过
    delayed\u insert\u limit
    行),以及是否有任何挂起的
    选择发生,写入将延迟一些不可预测的时间量。

    无论是否使用
    insert delayed
    ,或者,如果表由于另一个线程或更新或诸如此类的原因而被锁定,则
    ts
    将花费的值等于
    INSERT
    发出的时间。

    我认为您是对的(但不确定)。因为,如果线程执行语句来报告语法错误(如果有),它可能还将“扩展”当前的\u时间戳到实际的时间戳。您是指由处理程序线程进行的“虚拟”插入还是在数据库中实际进行的插入。