1. 程式人生 > >數據庫MySQL/mariadb知識點——數據庫變量

數據庫MySQL/mariadb知識點——數據庫變量

sys bash 選項參數 name true val option inf err

技術分享圖片

變量

在 MySQL 數據庫中,變量有兩種,分別為:系統變量和自定義變量。

根據變量的作用範圍,又分為:

  • 會話級別變量:僅對當前客戶端當次連接有效;
  • 全局級別變量:對所有客戶端的任一次連接都有效。

服務器變量還可分為動態變量和非動態變量,動態變量可以在服務器不重啟的情況下修改

註意:其中有些參數支持運行時修改,會立即生效;有些參數不支持,且只能通過修改配置文件,並重啟服務器程序生效;有些參數作用域是全局的,且不可改變;有些可以為每個用戶提供單獨(會話)的設置

服務器選項

# mysqld --help -verbose #獲取所有可以的選項

# mysqld --print-defaults #獲取默認設置

#mysqld_safe –-skip-name-resolve=1

:在啟動服務時加選項參數,禁止反解析IP,提高登錄效率;同時也可以將skip_name_resolve=1參數加入到my.cnf配置文件中

服務器系統變量

查看所有全局變量

MariaDB [(none)]> SHOW GLOBAL VARIABLES;

查看當前所有會話變量

MariaDB [(none)]> SHOW VARIABLES;

修改全局變量:僅對修改後新創建的會話有效;對已經建立的會話無效

mysql> SET GLOBAL system_var_name=value; 
mysql> SET @@global.system_var_name=value; 

修改會話變量

mysql> SET [SESSION] system_var_name=value; 
mysql> SET @@[session.]system_var_name=value; 

服務器狀態變量

查看狀態變量(只讀):用於保存mysqld運行中的統計數據的變量,不可更改

MariaDB [(none)]> SHOW GLOBAL STATUS;  #全局狀態變量
MariaDB [(none)]> SHOW STATUS;  #會話狀態變量

參考官方文檔:

  • https://dev.mysql.com/doc/refman/5.7/en/mysqld-option-tables.html
  • https://mariadb.com/kb/en/library/full-list-of-mariadb-options-system-and-status-variables

SQL_MODE

?sql_mode既是選項有是變量,作用對其設置可以完成一些約束檢查的工作,可分別進行全局的設置或當前會話的設置。

MariaDB [(none)]> SHOW VARIABLES LIKE ‘sql_mode‘;  #查看sql_mode變量,默認為空  
  • NO_AUTO_CREATE_USER 禁止GRANT創建密碼為空的用戶
  • NO_AUTO_VALUE_ON_ZERO 在自增長的列中插入0或NULL將不會是下一個自增長值
  • NO_BACKSLASH_ESCAPES 反斜杠“”作為普通字符而非轉義字符
  • PAD_CHAR_TO_FULL_LENGTH 啟用後,對於CHAR類型將不會截斷空洞數據
  • PIPES_AS_CONCAT 將"||"視為連接操作符而非“或運算符”
  • TRADITIONAL:包括STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,TRADITIONAL,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,是一個參數的集合
MariaDB [(none)]> SET  sql_mode=‘TRADITIONAL‘; 

參考官方文檔:https://mariadb.com/kb/en/library/sql-mode 

數據庫MySQL/mariadb知識點——數據庫變量