1. <del id="uvx8x"></del>

      首頁>新聞資訊>MySQL 系統變量配置基礎

      MySQL 系統變量配置基礎

      MySQL變量的概念


      個人認為可以理解成MySQL在啟動或者運行過程中讀取的一些參數問題,利用這些參數來啟動服務、響應或者支持用戶的請求等


      變量的配置

      如果打算長期使用,應該寫入配置文件,而不是在命中指定,因為在命中設置的變量會隨著MySQL服務的重啟而恢復默認值

      另外要注意是設置的當前Session的變量還是全局的變量。


      變量單位

      不同的變量的單位不同,比如table_cache是指緩存的表的個數,而key_buffer_size則是以字節為單位

      另外還有以頁或者百分比為單位的變量

      許多變量可以通過后綴制訂單位,

      比如1M表示一百萬字節,在配置文件中或者在命令行下有效,

      但是在使用set命令的時候,這些單位就無效,必須使用數字,單位為字節

      比如:set @@session.sort_buffer_size = 1024*1024或者set @@session.sort_buffer_size = 1048576

      但是配置文件中設置的時候就不能使用表達式


      變量的作用域

      有些變量的作用是服務器級別的,有些是Session級別的,剩下的的一些是對象級別的。

      許多回話的變量是全局變量相等,可以為是默認值

      如果改變會話級的變量,它只影響當前Session,當前Session關閉后當前設置的參數會失效

      舉例:

      query_cache_size是全局級的

      sort_buffer_size可以在全局級設置,每個Session也可以獨立設置

      join_buffer_size可以在全局級設置,也可以在Session級設置,一個查詢中如果有多個表關聯,可以為每個關聯分配一個join buffer

      除了在配置文件中設置變量之外,(部分變量)也可以在運行時修改,MySQL稱之為動態配置變量

      比如: set global sort_buffer_size = 1024*1024*1024

      set sort_buffer_size = 1024*1024*1024

      set @@sort_buffer_size = 1024*1024*1024

      set @@session.sort_buffer_size = 1024*1024*1024

      set @@global.sort_buffer_size = 1024*1024*1024


      常見變量的設置與獲取資源說明:

      key_buffer_size

      為鍵緩沖區(key buffer,也叫鍵緩存key cache)分配所有指定的空間,

      操作系統不會為該設置立馬分配內存,而是等到使用的時候才分配。

      table_cache_size

      當有線程打開表時,MySQL會檢查這個標量的值,如果大于緩存中表的數量,線程可以把最先打開的表放入緩存,

      如果該值比緩存中的表數小,MySQL將從緩存中刪除不常用的表

      thread_cache_size

      當有連接關閉時,MySQL檢查緩存中是否還有空間來緩存線程。

      如果有:則緩存改線程已被下次連接重用

      如果沒有:他講銷毀改線程而不再緩存,

      緩存中使用的線程數,不會立即減少,只有在新的連接刪除緩存中的一個線程并使用后才會減少

      MySQL只在關閉連接時候才在緩沖中增減線程,在創建新的連接的時候才從緩存中刪除線程

      query_cache_size

      MySQL啟動的時候,一次性分配并且初始化這塊內存,如果修改這個變量(即使設置為與當前值一樣)

      MySQL會立刻刪除所有緩存的查詢,重新分配這片緩存到指定大小,并且重新初始化內存

      read_buffer_size

      MySQL只會在查詢需要時才會為該緩存分配內存,并且會一次性分配改參數指定大小的全部內存

      read_rnd_buffer_size

      MySQL只會在查詢需要時才會為該緩存分配內存,并且只分配需要的內存大小而不是全部指定的大小

      應該叫做,max_read_rnd_buffer_size

      sort_buffer_size

      MySQL只會在查詢需要做排序操作的時候拆毀為該緩存分配內存,

      一旦需要排序,MySQL就會立刻分配給改參數指定大小的全部內存,而不管排序是否需要這么大的內存。


      由此可見,不用的變量,設置之后的啟用時間,啟用原理,生效方式等都是有一定差異的。


      設置變量的潛在的影響

      動態設置全局變量可能會導致意外的副作用。

      某些變量改變后會立即生效,比如從緩沖中刷新贓塊,從而引起服務器相應請求的一些不穩定甚至更嚴重的問題

      在线观看污视频网站,欧美精品一区二区久久久,日韩精品视频入口一区色,国产在线视频欧美亚综合

        1. <del id="uvx8x"></del>