如果我在某个表上发起TRUNCATE
,对该表执行的INSERT
会发生什么?他们排队等到TRUNCATE
完成,还是被丢弃?我知道这种情况非常罕见,但这是可能的。
我正在使用MySQL的PDO事务,但事务发生后我必须TRUNCATE
表。我不想在事务中使用DELETE
,因为它比TRUNCATE
慢。这适用于网站上的统计记录器,因此可以轻松地对同一个表进行并发请求。
执行的查询是(来自查询日志):
SHOW PROCESSLIST
SELECT COUNT(*) AS Counter FROM stats_current
START TRANSACTION
LOCK TABLES stats_current WRITE, stats WRITE
UNLOCK TABLES
LOCK TABLES stats_customer_current WRITE, stats_customer WRITE
UNLOCK TABLES
LOCK TABLES stats_update_queue WRITE, stats_customer_current WRITE, stats_customer WRITE
UNLOCK TABLES
TRUNCATE stats_update_queue
commit