Điều này có liên quan đến câu hỏi này . Nó giúp có được hiệu suất tốt hơn cho các bảng InnoDB.
Theo hướng dẫn của MySQL , innodb_flush_log_at_trx_commit
là một biến động toàn cầu. Vì vậy, tôi có thể thay đổi nó bằng lệnh SET GLOBAL và nó dường như đang hoạt động.
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
Nhưng, nó không làm cho thiết lập MySQL thực sự thay đổi. Khi tôi cập nhật my.cnf và khởi động lại máy chủ MySQL, nó đã hoạt động. Vì vậy, tôi không thể thay đổi biến toàn cầu trong thời gian chạy?
Tôi thích giá trị mặc định innodb_flush_log_at_trx_commit=1
, nhưng tôi cần thay đổi nó thành 2 trước khi tôi chạy quy trình khôi phục cho cơ sở dữ liệu lớn để nhanh hơn. Nhưng khi quá trình thực hiện, tôi muốn thay đổi giá trị trở lại 1. Có thể làm điều này trong thời gian chạy không?
Tôi không có quyền truy cập vào my.cnf trên máy chủ lưu trữ được chia sẻ của mình.
SET GLOBAL max_connections = 1000;
và khi tôi chạySHOW VARIABLES LIKE 'max_connections';
để xem giá trị cũ sẽ điều khiển các hạt có nghĩa là cho đến khi tôi đăng xuất và quay lại. +1 cho quan điểm này được chấp nhận và thường bị lãng quên.