これはこの質問に関連しています。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';
ために実行すると、ログアウトして再度ログインするまで、意味のない問題が発生することを経験しました。