mySQL占用虛擬內存達8百多兆成績處理思緒。本站提示廣大學習愛好者:(mySQL占用虛擬內存達8百多兆成績處理思緒)文章只能為提供參考,不一定能成為您想要的結果。以下是mySQL占用虛擬內存達8百多兆成績處理思緒正文
為了裝mysql情況測試,裝上後發明啟動後mysql占用了很年夜的虛擬內存,達8百多兆。網上搜刮了一下,獲得高人指導my.ini。再也沒見再具體的了..只好翻開my.ini逐行的啃,固然英文差了點,不外若干M照樣看得明的^-^
更改後以下:
innodb_buffer_pool_size=576M ->256M InnoDB引擎緩沖區占了年夜頭,重要就是拿它開刀
query_cache_size=100M ->16M 查詢緩存
tmp_table_size=102M ->64M 暫時表年夜小
key_buffer_size=256m ->32M
重啟mysql辦事後,虛擬內存降到200以下.
別的mysql裝置目次下有幾個文件:my-huge.ini 、my-large.ini、my-medium.ini...這幾個是依據內存年夜小作的建議設置裝備擺設,老手在設置的時刻也能夠參考一下。
2G內存的MYSQL數據庫辦事器 my.ini優化 (my.ini)
2G內存,針對站少,優良型的設置,實驗特:
table_cache=1024 物理內存越年夜,設置就越年夜.默許為2402,調到512-1024最好
innodb_additional_mem_pool_size=8M 默許為2M
innodb_flush_log_at_trx_commit=0 比及innodb_log_buffer_size排隊滿後再同一貯存,默許為1
innodb_log_buffer_size=4M 默許為1M
innodb_thread_concurrency=8 你的辦事器CPU有幾個就設置為幾,默許為8
key_buffer_size=256M 默許為218 調到128最好
tmp_table_size=64M 默許為16M 調到64-256最掛
read_buffer_size=4M 默許為64K
read_rnd_buffer_size=16M 默許為256K
sort_buffer_size=32M 默許為256K
max_connections=1024 默許為1210
實驗一:
table_cache=512或1024
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=1M
innodb_thread_concurrency=8 你的辦事器CPU有幾個就設置為幾,默許為8
key_buffer_size=128M
tmp_table_size=128M
read_buffer_size=64K或128K
read_rnd_buffer_size=256K
sort_buffer_size=512K
max_connections=1024
實驗二:
table_cache=512或1024
innodb_additional_mem_pool_size=8M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=4M
innodb_thread_concurrency=8
key_buffer_size=128M
tmp_table_size=128M
read_buffer_size=4M
read_rnd_buffer_size=16M
sort_buffer_size=32M
max_connections=1024
普通:
table_cache=512
innodb_additional_mem_pool_size=8M
innodb_flush_log_at_trx_commit=0
innodb_log_buffer_size=4M
innodb_thread_concurrency=8
key_buffer_size=128M
tmp_table_size=128M
read_buffer_size=4M
read_rnd_buffer_size=16M
sort_buffer_size=32M
max_connections=1024
經由測試.沒有特別情形,最好照樣用默許的.
2G內存,針對站多,抗壓型的設置,最好:
table_cache=1024 物理內存越年夜,設置就越年夜.默許為2402,調到512-1024最好
innodb_additional_mem_pool_size=4M 默許為2M
innodb_flush_log_at_trx_commit=1
(設置為0就是比及innodb_log_buffer_size排隊滿後再同一貯存,默許為1)
innodb_log_buffer_size=2M 默許為1M
innodb_thread_concurrency=8 你的辦事器CPU有幾個就設置為幾,建議用默許普通為8
key_buffer_size=256M 默許為218 調到128最好
tmp_table_size=64M 默許為16M 調到64-256最掛
read_buffer_size=4M 默許為64K
read_rnd_buffer_size=16M 默許為256K
sort_buffer_size=32M 默許為256K
max_connections=1024 默許為1210
thread_cache_size=120 默許為60
query_cache_size=64M
優化mysql數據庫機能的十個參數
(1)、max_connections:
許可的同時客戶的數目。增長該值增長 mysqld 請求的文件描寫符的數目。這個數字應當增長,不然,你將常常看到 too many connections 毛病。 默許數值是100,我把它改成1024 。
(2)、record_buffer:
每一個停止一個次序掃描的線程為其掃描的每張表分派這個年夜小的一個緩沖區。假如你做許多次序掃描,你能夠想要增長該值。默許數值是131072(128k),我把它改成16773120 (16m)
(3)、key_buffer_size:
索引塊是緩沖的而且被一切的線程同享。key_buffer_size是用於索引塊的緩沖區年夜小,增長它可獲得更利益理的索引(對一切讀和多重寫),到你能累贅得起那樣多。假如你使它太年夜,體系將開端換頁而且真的變慢了。默許數值是8388600(8m),我的mysql主機有2gb內存,所以我把它改成 402649088(400mb)。
4)、back_log:
請求 mysql 能有的銜接數目。當重要mysql線程在一個很短時光內獲得異常多的銜接要求,這就起感化,然後主線程花些時光(雖然很短)檢討銜接而且啟動一個新線程。
back_log 值指出在mysql臨時停滯答復新要求之前的短時光內若干個要求可以被存在客棧中。只要假如希冀在一個短時光內有許多銜接,你須要增長它,換句話說,這值對到來的tcp/ip銜接的偵聽隊列的年夜小。你的操作體系在這個隊列年夜小上有它本身的限制。試圖設定back_log高於你的操作體系的限制將是有效的。
當你不雅察你的主機過程列表,發明年夜量 264084 | unauthenticated user | xxx.xxx.xxx.xxx | null | connect | null | login | null 的待銜接過程時,就要加年夜 back_log 的值了。默許數值是50,我把它改成500。
(5)、interactive_timeout:
辦事器在封閉它前在一個交互銜接上期待行為的秒數。一個交互的客戶被界說為對 mysql_real_connect()應用 client_interactive 選項的客戶。 默許數值是28800,我把它改成7200。
(6)、sort_buffer:
每一個須要停止排序的線程分派該年夜小的一個緩沖區。增長這值加快order by或group by操作。默許數值是2097144(2m),我把它改成 16777208 (16m)。
(7)、table_cache:
為一切線程翻開表的數目。增長該值能增長mysqld請求的文件描寫符的數目。mysql對每一個獨一翻開的表須要2個文件描寫符。默許數值是64,我把它改成512。
(8)、thread_cache_size:
可以復用的保留在中的線程的數目。假如有,新的線程從緩存中獲得,當斷開銜接的時刻假如有空間,客戶的線置在緩存中。假如有許多新的線程,為了進步機能可以這個變量值。經由過程比擬 connections 和 threads_created 狀況的變量,可以看到這個變量的感化。我把它設置為 80。
(9)mysql的搜刮功效
用mysql停止搜刮,目標是能不分年夜小寫,又能用中文停止搜刮
只需起動mysqld時指定 --default-character-set=gb2312
(10)、wait_timeout:
辦事器在封閉它之前在一個銜接上期待行為的秒數。 默許數值是28800,我把它改成7200。
注:參數的調劑可以經由過程修正 /etc/my.cnf 文件偏重啟 mysql 完成。這是一個比擬謹嚴的任務,下面的成果也僅僅是我的一些意見,你可以依據你本身主機的硬件情形(特殊是內存年夜小)進一步修正。