MySQL veritabanına sahip bir web sunucum var. Çeşitli projelerime hizmet eden birkaç veritabanı var. Ubuntu’yu 16.04’e yükselttiğimden beri, genel olarak beni çok sıkıntıya soktu. Bu soru özellikle, bir tablonun, masa kilidinin kilitlenmesinin neden hızlı bir şekilde alınmamasının açık bir nedeni olmadan kilitlendiği bir durumla ilgilidir.
Bunun gibi bir sürü sıkışmış sorgum var:
581723 algebrainc_ro localhost algebrainc Query 10309 Waiting for table level lock SELECT\n *\nFROM inventory\nWHERE inventory_id = '21601'
581724 algebrainc_ro localhost algebrainc Query 10309 Waiting for table level lock SELECT\n *\nFROM inventory\nWHERE inventory_id = '21592'
581725 algebrainc_ro localhost algebrainc Query 10309 Waiting for table level lock SELECT\n *\nFROM inventory\nWHERE inventory_id = '21602'
581726 algebrainc_ro localhost algebrainc Query 10309 Waiting for table level lock SELECT\n *\nFROM inventory\nWHERE inventory_id = '21596'
581729 algebrainc_ro localhost algebrainc Query 10306 Waiting for table level lock SELECT inventory_id, ebay_title FROM inventory WHERE ebay_id = '32999992936'
581730 algebrainc localhost algebrainc Query 10282 Waiting for table level lock SELECT \n complete_status status,\n ebay_transactions.inventory_id,\n ebay_transactions.ebay_id, \n quantity, purchase_price, \n ebay_title \nFROM ebay_transactions, inventory \nWHERE \n ebay_transactions.inventory_id = inventory.inventory_id \n AND created_date > date_add( now(), interval -7 day )\nORDER BY \n created_date
Kurcalama ve hiçbir şey arayan bir süre sonra performance_schema
gibi table_handles
ve metadata_locks
ben çok bulamadık.
Bir süre sonra bunun mysqldump
belirli bir masayı boşaltmak için periyodik olarak yaptığım süreçlerden kaynaklandığını anladım. mysqldump
Şunun gibi bir düzine takılmış işlem (cron):
ichudov 1178 0.0 0.0 29004 3248 pts/46 Ss+ 20:24 0:00 mysqldump -ualgebrainc -px xxxxxxxx algebrainc XXXXXXXX_posts
ichudov 1394 0.0 0.0 29004 900 pts/26 Ss+ Jun23 0:00 mysqldump -ualgebrainc -px xxxxxxxx algebrainc XXXXXXXX_posts
ichudov 2537 0.0 0.0 29004 920 pts/22 Ss+ Jun24 0:00 mysqldump -ualgebrainc -px xxxxxxxx algebrainc XXXXXXXX_posts
(gizlilik için maskeli tablo adı)
Öldürme mysqldump
işlemlerinden sonra masa kilitleri çıkarıldı ve her şey normale döndü.
Peki neden mysqldump
süreçler işleri kilitliyor ve çalışmıyor?