2010-07-09 84 views
0

我正在使用MySQLdb,當我對錶行執行UPDATE時,我有時會得到無限的進程掛起。MySQLdb手柄行鎖

起初我想,也許是因爲表是Innodb的COMMIT,但是即使在每次更新之後使用autocommit(True)和db.commit(),我仍然得到掛起。

是否有可能存在行鎖並且查詢只是無法執行?有沒有辦法處理潛在的行鎖或者甚至可以處理緩慢的查詢?

回答

1

根據您的用戶權限,您可以執行SHOW PROCESSLIST或從information_schema.processlist中進行選擇,而UPDATE掛起以查看是否存在另一個查詢的爭用問題。還要對UPDATE中使用的WHERE子句的SELECT進行EXPLAIN,以查看是否需要更改語句。

如果是鎖爭用,那麼您最終應該會遇到鎖等待超時(默認值= 50秒,我相信)。否則,如果您有時間限制,則可以使用KILL QUERY和KILL CONNECTION解鎖光標執行。

+0

感謝您的意見。我終於找到了我的問題的罪魁禍首,幸運的是,這不是一個鎖定行問題。 – 2010-07-19 17:32:23