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_schemagibi table_handlesve metadata_locksben çok bulamadık.
Bir süre sonra bunun mysqldumpbelirli 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 mysqldumpişlemlerinden sonra masa kilitleri çıkarıldı ve her şey normale döndü.
Peki neden mysqldumpsüreçler işleri kilitliyor ve çalışmıyor?