【发布时间】:2010-12-10 16:15:42
【问题描述】:
我有一个带有字段的表格:: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
我的问题是,如果我在这张表上使用延迟插入,时间戳是请求排队的时间还是实际插入的时间?
【问题讨论】:
标签: mysql insert timestamp delayed-execution
我有一个带有字段的表格:: ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
我的问题是,如果我在这张表上使用延迟插入,时间戳是请求排队的时间还是实际插入的时间?
【问题讨论】:
标签: mysql insert timestamp delayed-execution
答案是在请求排队时,但在发出请求时不一定正确,因为如果还没有表的线程,则在建立表线程后请求排队。
线程执行INSERT 声明,而不是写 行到表中,它放了一个副本 最后一行放入队列中 由处理程序线程管理。任何 语法错误被注意到 线程并报告给客户端 程序。
延迟语句执行时的事件顺序:
DELAYED 锁INSERT 并将最后一行放入队列delayed_insert_limit 行,并在写入之间执行任何待处理的SELECTS
DELAYED 锁被释放取决于是否需要创建线程以及检查或获取DELAYED锁需要多长时间,执行语句(步骤0)和执行语句(步骤3)之间的时间) 会有所不同。然后,根据队列的大小(尤其是超过delayed_insert_limit 行),以及是否有任何待处理的SELECTS 发生,写入将延迟一些不可预测的时间。
【讨论】:
无论是否使用INSERT DELAYED,或者如果表由于另一个线程或更新或其他原因而被锁定,ts 的值将等于发出INSERT 的时间。
【讨论】:
应该是实际插入的时间
【讨论】: