MySQL ERROR 1206: The total number of locks exceeds the lock table size

Posted In Database - By Tum. On Thursday, June 25th, 2015 With 0 Comments

mysql-logo
ถ้าหากทำการรัน query บน table ที่มีจำนวน row มากมายมหาศาลบน InnoDB storage engine และได้ error

สาเหตุ ERROR 1206 ช้างบน หมายถึง MySQL ไม่มีเนื้อที่เหลือพอที่จะสามารถเก็บทุก row lock ที่จะใช้ในการ execute บน query ที่จะรันได้

การแก้ไข ทำการเพิ่ม innodb_buffer_pool_size ให้มีขนาดใหญ่กว่าเดิม (default 8MB) และ restart MySQL

การแก้ไขเฉพาะหน้า ให้ทำการกำหนดจำนวน row ที่จะถูก query ลง ตัวอย่างเช่น ถ้าหากต้องการลบข้อมูล 500,000 row จาก table หนึ่งแล้วเกิด “ERROR 1206 (HY000): The total number of locks exceeds the lock table size” ขึ้น ให้ทำการลดจำนวน row ที่จะ query ลง เช่น ลบข้อมูลทีละ 10,000 row แทน แต่ถ้าเป็นการ insert ให้ทำการ insert ในครั้งเดียว

Leave a comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

*