สิ่งนี้เกี่ยวข้องกับคำถามนี้ มันจะช่วยให้ได้ประสิทธิภาพที่ดีขึ้นสำหรับตาราง InnoDB
ตามคู่มือ MySQL , innodb_flush_log_at_trx_commit
เป็นตัวแปรแบบไดนามิกทั่วโลก ดังนั้นฉันสามารถเปลี่ยนได้โดยใช้คำสั่ง SET GLOBAL และดูเหมือนว่าจะทำงานได้
mysql> SET GLOBAL innodb_flush_log_at_trx_commit=2;
Query OK, 0 rows affected
mysql> SHOW VARIABLES LIKE 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2 |
+--------------------------------+-------+
1 row in set
แต่มันไม่ได้เปลี่ยนการตั้งค่า MySQL จริง เมื่อฉันอัปเดตmy.cnfและรีสตาร์ทเซิร์ฟเวอร์ MySQL มันทำงานได้ ดังนั้นฉันไม่สามารถเปลี่ยนตัวแปรโกลบอลในขณะใช้งาน
ฉันชอบค่าเริ่มต้นinnodb_flush_log_at_trx_commit=1
แต่ฉันต้องการเปลี่ยนเป็น 2 ก่อนที่ฉันจะเรียกใช้กระบวนการกู้คืนสำหรับฐานข้อมูลขนาดใหญ่เพื่อให้เร็วขึ้น แต่เมื่อกระบวนการเสร็จสิ้นฉันต้องการเปลี่ยนค่ากลับเป็น 1 เป็นไปได้ไหมที่จะทำสิ่งนี้ในเวลาทำงาน
ฉันไม่สามารถเข้าถึงmy.cnfบนเซิร์ฟเวอร์โฮสต์ที่แชร์ของฉันได้
SET GLOBAL max_connections = 1000;
และเมื่อฉันวิ่งSHOW VARIABLES LIKE 'max_connections';
ไปดูค่าเก่าจะทำให้ถั่วหมายความว่าจนกว่าฉันจะออกจากระบบและกลับเข้ามา +1 สำหรับมุมมองนี้ที่ได้รับอนุญาตและมักถูกลืม