การแทรก Mysql อัปเดตช้ามาก

ฐานข้อมูลเซิร์ฟเวอร์ของเราอยู่ใน mysql 5.1 เรามี 754 ตารางในฐานข้อมูลของเรา เราสร้างตารางสำหรับแต่ละโครงการ จึงมีโต๊ะจำนวนมาก จากหนึ่งสัปดาห์ที่ผ่านมา ฉันสังเกตเห็นความล่าช้าในการแทรกและการอัปเดตตารางใดๆ เป็นเวลานานมาก ถ้าฉันสร้างตารางใหม่และแทรกลงไป จะต้องใช้เวลาหนึ่งนาทีในการแทรกประมาณ 300 recs

โดยที่ฐานข้อมูลทดสอบของเราในเซิร์ฟเวอร์เดียวกันมี 597 ตาราง การแทรกแบบเดียวกันนั้นเร็วมากในฐานข้อมูลการทดสอบ

เอ็นจิ้นเริ่มต้นคือ MYISAM แต่เรามีตารางไม่กี่ตารางใน INNODB

มีทริกเกอร์บางตัวทำงานอยู่ หลังจากที่ฉันลบทริกเกอร์ มันก็เร็วขึ้นอีก แต่มันก็ไม่เร็วพอ


person VYSHNAVI    schedule 10.05.2013    source แหล่งที่มา


คำตอบ (3)


ใช้ DESCRIBE เพื่อทราบแผนการดำเนินการค้นหาของคุณ

ดูเพิ่มเติมได้ที่ http://dev.mysql.com/doc/refman/5.1/en/explain.html สำหรับการใช้งาน

person swapnesh    schedule 10.05.2013
comment
@ hd1 สามารถจัดหมวดหมู่ได้กว้างเกินไป.. ไม่ใช่คำถามจริง..lol - person swapnesh; 10.05.2013

ตามที่ @swapnesh กล่าวถึง คำสั่ง DESCRIBE มีประโยชน์มากสำหรับการดีบักประสิทธิภาพ คุณยังตรวจสอบการติดตั้งเพื่อดูปัญหาได้โดยใช้:

คุณใช้มันแบบนี้:

wget https://raw.github.com/rackerhacker/MySQLTuner-perl/master/mysqltuner.pl
chmod +x mysqltuner.pl
./mysqltuner.pl

แน่นอน ในที่นี้ ฉันสมมติว่าคุณใช้ระบบที่ใช้ Unix บางประเภท

คุณสามารถใช้ OPTIMIZE ได้ ตาม Manual มันทำสิ่งต่อไปนี้:

จัดระเบียบพื้นที่จัดเก็บข้อมูลทางกายภาพของข้อมูลตารางและข้อมูลดัชนีที่เกี่ยวข้องใหม่ เพื่อลดพื้นที่จัดเก็บข้อมูลและปรับปรุงประสิทธิภาพ I/O เมื่อเข้าถึงตาราง การเปลี่ยนแปลงที่แน่นอนที่เกิดขึ้นกับแต่ละตารางขึ้นอยู่กับกลไกการจัดเก็บข้อมูลที่ใช้โดยตารางนั้น

ไวยากรณ์คือ:

OPTIMIZE TABLE tablename
person CodeTower    schedule 10.05.2013

โดยทั่วไปแล้วเม็ดมีดจะเร็วกว่าเมื่อทำในปริมาณมากแทนที่จะทำทีละชิ้น ลองแทรก 10, 30 หรือ 100 ระเบียนต่อคำสั่ง

หากคุณใช้ jdbc คุณอาจสามารถบรรลุผลแบบเดียวกันด้วยการแบทช์โดยไม่ต้องเปลี่ยน SQL

person Joni    schedule 10.05.2013