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时间戳到实际的时间戳。您是指由处理程序线程进行的“虚拟”插入还是在数据库中实际进行的插入。