Ini terkait dengan pertanyaan ini . Itu membantu untuk mendapatkan kinerja yang lebih baik untuk tabel InnoDB.
Menurut manual MySQL , innodb_flush_log_at_trx_commit
adalah variabel dinamis global. Dengan demikian, saya dapat mengubahnya menggunakan perintah SET GLOBAL dan sepertinya berfungsi.
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
Tapi, itu tidak membuat pengaturan MySQL yang sebenarnya berubah. Ketika saya memperbarui my.cnf dan me -restart server MySQL, itu berhasil. Jadi, saya tidak bisa mengubah variabel global saat dijalankan?
Saya lebih suka nilai default innodb_flush_log_at_trx_commit=1
, tetapi saya harus mengubahnya ke 2 sebelum saya menjalankan proses pemulihan untuk database besar agar lebih cepat. Tetapi ketika proses selesai, saya ingin mengubah nilai kembali ke 1. Apakah mungkin untuk melakukan ini pada saat run time?
Saya tidak memiliki akses ke my.cnf di server hosting bersama saya.
SET GLOBAL max_connections = 1000;
dan ketika saya menjalankanSHOW VARIABLES LIKE 'max_connections';
untuk melihat nilai lama akan mendorong kacang berarti sampai saya log out dan kembali. +1 untuk sudut pandang ini yang diterima begitu saja dan sering dilupakan.