ฉันควรตีความ "ล็อคเวลา" ในบันทึกแบบสอบถามช้า mysql ได้อย่างไร


12

ฉันพยายามที่จะเข้าใจวิธีการตีความเวลาล็อคที่ดีที่สุดสำหรับการค้นหาที่ปรากฏในบันทึกการสืบค้นช้า MySQL ของเรา

เช่นถ้าแบบสอบถาม UPDATE มีเวลาล็อค 10 วินาที ฉันคิดว่ามันเป็นเวลารวมหลังจากแบบสอบถามการอัพเดทเพื่อรับล็อค แม้ว่ากำลังรอให้คิวรีแบบเลือกก่อนหน้านี้เสร็จสมบูรณ์ แต่ไม่ได้ดำเนินการกับการกระทำ UPDATE ตัวเองนาฬิกาควรจะถูกทำเครื่องหมายเนื่องจากมันกำลังล็อคคิวรี SELECT ทั้งหมดที่เรียงกันหลังจากคิวรี UPDATE

และวิธีการเกี่ยวกับการเลือกแบบสอบถามล็อค ทำไมแบบสอบถามที่เลือกบางรายการจึงมีเวลาล็อค เป็นเพราะมีคิวรี่ UPDATE ติดตามดังนั้นพวกเขาจะล็อคตารางด้วยกัน

คำตอบ:


19

lock_timeในบันทึกแบบสอบถามช้าเป็นจริงระยะเวลาแบบสอบถามใช้เวลารอคอยที่จะได้รับการล็อคจะต้องมีการเรียกใช้ ตัวอย่างเช่นUPDATESแบบสอบถามต้องการล็อคการเขียน

การล็อคยังขึ้นอยู่กับเอ็นจิ้นการจัดเก็บที่คุณใช้ในตาราง เมื่อเขียน InnoDB จะใช้การล็อคระดับแถวและล็อคเฉพาะแถวที่มีการเปลี่ยนแปลงเท่านั้น MyISAM จะล็อคทั้งตารางจนกว่าการอัพเดต / แทรก / ลบจะเสร็จสิ้น

การล็อกทั้งตารางสำหรับ MyISAM นั้นเป็นสาเหตุใหญ่ที่SELECTจะมีการล็อก lock_time ในบันทึกการสืบค้นที่ช้าของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.