How to improve INSERT INTO … SELECT locking behavior

后端 未结 9 552
一个人的身影
一个人的身影 2020-12-05 06:46

In our production database, we ran the following pseudo-code SQL batch query running every hour:

INSERT INTO TemporaryTable
    (SELECT FROM HighlyContentiou         


        
9条回答
  •  -上瘾入骨i
    2020-12-05 06:58

    I was facing the same issue using CREATE TEMPORARY TABLE ... SELECT ... with SQLSTATE[HY000]: General error: 1205 Lock wait timeout exceeded; try restarting transaction.

    Based on your initial query, my problem was solved by locking the HighlyContentiousTableInInnoDb before starting the query.

    LOCK TABLES HighlyContentiousTableInInnoDb READ;
    INSERT INTO TemporaryTable
        (SELECT FROM HighlyContentiousTableInInnoDb
        WHERE allKindsOfComplexConditions are true)
    UNLOCK TABLES;
    

提交回复
热议问题