MySQL的歷史記錄保存方式主要是通過配置參數來實現的。在MySQL的配置文件my.cnf中有一個參數叫做“general_log”,開啟它后,系統就會將每次執行的SQL語句記錄到系統日志中,并保存在磁盤上的log文件中,這個log文件的位置和命名可以通過另一個參數“general_log_file”來指定。下面是一段my.cnf配置文件中開啟general_log和設置log文件路徑的示例代碼:
[mysqld] general_log=1 general_log_file=/var/log/mysql/mysql.log
通過“general_log”參數,MySQL可以記錄所有執行的SQL語句,但這樣做會明顯增加系統負擔和IO操作。為了避免這個問題,我們可以通過寫入到表“mysql.general_log”中來保存SQL執行歷史記錄,這樣就可以在需要時方便地查詢和分析歷史記錄。下面是一段創建“mysql.general_log”表并記錄SQL語句的示例代碼:
CREATE TABLE mysql.general_log ( event_time TIMESTAMP(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), user_host MEDIUMTEXT NOT NULL, thread_id BIGINT(21) UNSIGNED NOT NULL, server_id INT(10) UNSIGNED NOT NULL, command_type VARCHAR(64) NOT NULL, argument MEDIUMBLOB NOT NULL ) ENGINE=BLACKHOLE DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; SET GLOBAL general_log = 'ON';
通過此方式保存SQL執行歷史記錄,我們就可以在進行性能調優或者查找問題時,快速定位并解決問題。
上一篇html密碼隱藏顯示代碼
下一篇c 遍歷json