mysql 系變數統 MySQL系統變數

2021-10-18 03:10:28 字數 2114 閱讀 4885

在資料庫中,變數分為系統變數(以『@@』開頭)以及使用者自定義變數。系統變數分為全域性系統變數以及會話系統變數,靜態變數屬於特殊的全域性系統變數。

全域性系統變數(global)和會話系統變數(session),有時也把全域性系統變數稱為全域性變數,把會話系統變稱為local變數或者系統會話變數。mysql服務成功啟動後,如果沒有mysql客戶機連線mysql伺服器,那麼mysql伺服器記憶體中的系統變數全部是全域性系統變數。

每個mysql客戶機成功連線mysql伺服器後,都會產生與之對應的會話。會話期間,沒有mysql服務例項會在mysql伺服器記憶體中生成與該會話對應的會話系統變數,這些會話系統變數的初始值是全域性系統變數值的複製。由於各會話在會話期間所做的操作不盡相同,為了標記各個會話,會話系統變數又新增12個變數,例如,會話系統變數pseudo_thread_id用於標記當前會話的mysql連線id。

會話系統變數的特點在於,它僅僅用於定義當前會話的屬性,會話期間,當前會話對某個會話系統變數值得修改,不會影響其他會話同乙個會話系統變數的值,即mysql客戶機1的會話系統變數值不會被mysql客戶機2看到或修改;mysql客戶機1關閉或者mysql客戶機1與伺服器斷開連線後,與mysql客戶機1相關的所有會話系統變數將自動釋放,以便於節省mysql伺服器的記憶體。

全域性系統變數的特點在於,它是用於定義mysql服務例項的屬性、特點,會話1對某個全域性系統變數值得修改會導致會話2中同乙個全域性系統變數值得修改。

檢視系統變數值「show global variables;」命令即可檢視全域性系統變數值;使用「show session variable;」即可檢視與當前會話相關的所有會話系統變數以及所有的全域性系統變數。

在mysql中,有一些系統變數僅僅是會話系統變數。例如,mysql連線id會話系統變數pseudo_thread_id,可以使用下面兩種方法檢視該會話系統變數的值。

show session variables like 『pseudo_thread_id』;

show  variables like 『pseudo_thread_id』;

在mysql中,有一些系統變數即是全域性系統變數,又是會話系統變數。例如,系統變數character_set_client既是全域性系統變數,又是會話系統變數。

備註:作為mysql編碼規範,mysql中的系統變數以兩個「@」開頭,其中「@@global」僅僅用於標記全域性系統變數,「@@session」僅僅用於標記會話系統變數。「@@」首先標記會話系統變數,如果會話系統變數不存在,則標記全域性系統變數。例如,檢視innodb_data_file_path而言,可以使用「select  @@global.innodb_data_file_path;」。

設定系統變數的值

方法一:修改mysql源**,然後對mysql配置檔案,繼而修改mysql系統變數的值(適用於mysql高階使用者);

方法二:通過修改mysql配置檔案,繼而修改mysql系統變數的值(需要重新啟動mysql服務);

方法三:在mysql服務執行期間,使用「set」命令重新設定系統變數的值,如果將乙個系統值設定為mysql預設值,可以使用default關鍵字;例如,set @@global.innodb_file_per_table=default;注意set命令不會導致my.ini配置檔案的內容發生變化。

如果重新設定全域性系統變數值(例如innodb_file_per_table)的值,可以使用下面兩種方法(global關鍵字不能省略)

set @@global.innodb_file_per_table=on;

set   global.innodb_file_per_table=on;

重新設定會話系統變數(session)的值,有四種方法:

set @@session.pseudo_thread_id=5;

set  session pseudo_thread_id=5;

set @@pseudo_thread_id=5;

set pseudo_thread_id=5;

對於大部分的系統變數而言,可以在mysql服務執行期間通過「set」命令重新設定其值。在mysql中還有一些特殊的全域性變數(例如log_in  tmpdir  version  datadir),在mysql服務例項執行期間它們的值不能動態修改,不能使用set命令進行重新設定的,這種變數稱為靜態變數,資料庫管理員可以使用方法一或方法二對靜態變數的值重新設定。

mysql 支撐系統 MySQL支援的作業系統列表

我們使用gnu autoconf,因此將mysql移植到所有使用posix執行緒和c 編譯器的現代系統是可能的。要求伺服器支援執行緒。如果只是編譯客戶端 則只需要c 編譯器 我們主要在linux suse和red hat freebsd和sun solaris 版本8和9 上使用並開發本軟體。已經報...

mysql系統訊息 MySQL案例分享之系統訊息

從前有個大師,率領一群徒弟,為客戶做了乙個軟體系統。某天,客戶提出了乙個新的需求,向系統中的所有使用者傳送系統訊息。由於當時系統剛上線不久,系統中的使用者也就幾十個。大師為了考驗自己的徒弟,便將該需求分配給他的徒弟,要求每個人都做一套方案出來,於是便有了下面的故事。徒弟們接收到該項任務後,每個人都想...

mysql 更新系統表 快速公升級MySQL系統表

一些mysql發布對mysql資料庫中的系統表的結構進行了更改,新增了新許可權或特性。當你更新到新版本mysql,你應同時更新系統表,以確保它們的結構最新。首先備份mysql資料庫,然後按照下面的程式操作。在unix或unix類系統中,執行mysql fix privilege tables指令碼來...