可遇不可求的Question之Mysql在不重啓服務的狀況下修改運行時變量篇

比方說在一些實際生產環境中,想改個MYSQL的配置,可是又不想中止服務重起MYSQL,有什麼辦法呢?使用SET命令能夠作到,請看下面幾個例子:html

1.設置key_buffer_size的大小爲10M。mysql

SET GLOBAL key_buffer_size = 10485760;

sql

SET @@global.key_buffer_size = 10485760;

2.設置最大鏈接數爲200數據庫

SET GLOBAL max_connections=200;

服務器

SET @@global.max_connections=200;

3.更改慢查詢SQL日誌時間session

SET @@long_query_time=3;

要查看有哪些變量,可執行SHOW VARIABLES;得到。spa

 

參考手冊:日誌

SET語法code

SET variable_assignment [, variable_assignment] ...
 
variable_assignment:
      user_var_name = expr
    | [GLOBAL | SESSION] system_var_name = expr
    | @@[global. | session.]system_var_name = expr

SET用於設置不一樣類型的變量。這些變量會影響服務器或客戶端的操做。SET能夠用於向用戶變量或系統變量賦值。htm

用於分配帳戶密碼的SET PASSWORD語句在13.5.1.5節,「SET PASSWORD語法」中進行了討論。

多數系統變量能夠在運行時間被更改。能夠被動態設置的系統變量在5.3.3.1節,「動態系統變量」中進行了討論。

註釋:舊版本的MySQL採用SET OPTION做爲這個命令,可是因爲有了SET,如今不同意使用SET OPTION

如下例子顯示了您能夠用於設置變量的不一樣語法。

用戶變量能夠被寫做@var_name,並能夠進行以下設置:

SET @var_name = expr;

9.3節,「用戶變量」中給出了有關用戶變量的更多信息。

系統變量能夠被做爲var_name引用到SET語句中。在名稱的前面能夠自選地添加GLOBAL@@global,以明確地指示該變量是全局變量。或者在名稱前面添加SESSION, @@session,或@@,以指示它是一個會話變量。LOCAL@@localSESSION@@session地同義詞。若是沒有修改符,則SET設置會話變量。

支持系統變量的@@var_name語法,以便使MySQL語法與其它數據庫系統相兼容。

相關文章
相關標籤/搜索