MySQL效能最佳化-記憶體參數配置

來源:互聯網
上載者:User

標籤:cpu   溢出   安全   關聯   宕機   緩衝區   image   img   記憶體   

  Mysql對於記憶體的使用,可以分為兩類,一類是我們無法通過配置參數來配置的,如Mysql伺服器運行、解析、查詢以及內部管理所消耗的記憶體;另一類如緩衝池所用的記憶體等。

  Mysql記憶體參數的配置及重要,設定不當很有可能會造成很大的效能問題甚至是伺服器宕機,記憶體相關參數的配置需要考慮以下兩點:

    (1)確定可以使用的記憶體上限;

    (2)確定Mysql每個串連使用的記憶體;

  在Mysql的體系中(如所示),簡單來說可以分為兩層,第一層代表各種可以用過Mysql連線協定串連到Mysql的用戶端,例如PHP、JAVA、C API 、.NET、ODBC、JDBC等等,這一層主要負責串連管理、授權認證、安全等,串連到Mysql的用戶端都會在伺服器的進程中有一個獨立的線程,這個串連的查詢只會單獨的在這個線程中執行,也就是並不支援多CPU的並發運算。第二層可以概括為Mysql的服務層。

  

  在伺服器中每個串連所分配的記憶體主要由下面四個參數控制:

  (1)sort_buffer_size 串連進行排序時候分配該配置參數大小的記憶體進行排序操作,比如該大小設定為100M,如果有100個串連同時進行排序將分配10G的記憶體,很容易造成伺服器記憶體溢出;

  (2)join_buffer_size  定義mysql的每個線程所使用串連的緩衝區的大小,對於這個參數需要注意的是,如果一個查詢中關聯了多張表,那麼就會為每個關聯分配一個串連緩衝,所以每個查詢可能會有多個串連緩衝;

  (3)read_buffer_size 對MyISAM表進行全表掃描時分配的讀緩衝池的大小,mysql只會在有查詢需要時為該緩衝分配記憶體,分配的記憶體為配置參數指定記憶體的大小,大小一般為4K的倍數;

  (4)read_rnd_buffer_size 索引緩衝的大小,有查詢需要時才分配記憶體,分配的大小為需要記憶體的大小,而不是配置參數的大小;

  上面四個參數全部是為每個線程分配的,如果有一百個串連可能會分配100倍以上記憶體的和。

 

MySQL效能最佳化-記憶體參數配置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.