MySQL機能優化之路---修正設置裝備擺設文件my.cnf。本站提示廣大學習愛好者:(MySQL機能優化之路---修正設置裝備擺設文件my.cnf)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL機能優化之路---修正設置裝備擺設文件my.cnf正文
在Apache, PHP, MySQL的系統架構中,MySQL關於機能的影響最年夜,也是症結的焦點部門。關於Discuz!服裝論壇t.vhao.net法式也是如斯,MySQL的設置能否公道優化,直接影響到服裝論壇t.vhao.net的速度和承載量!同時,MySQL也是優化難度最年夜的一個部門,不只須要懂得一些MySQL專業常識,同時還須要長時光的不雅察統計而且依據經歷停止斷定,然後設置公道的參數。 上面我們懂得一下MySQL優化的一些基本,MySQL的優化我分為兩個部門,一是辦事器物理硬件的優化,二是MySQL本身(my.cnf)的優化。
1、辦事器硬件對MySQL機能的影響
①磁盤尋道才能(磁盤I/O),以今朝高轉速SCSI硬盤(7200轉/秒)為例,這類硬盤實際上每秒尋道7200次,這是物理特征決議的,沒有方法轉變。MySQL每秒鐘都在停止年夜量、龐雜的查詢操作,對磁盤的讀寫量可想而知。所以,平日以為磁盤I/O是制約MySQL機能的最年夜身分之一,關於日均拜訪量在100萬PV以上的Discuz!服裝論壇t.vhao.net,因為磁盤I/O的制約,MySQL的機能會異常低下!處理這一制約身分可以斟酌以下幾種處理計劃: 應用RAID-0+1磁盤陣列,留意不要測驗考試應用RAID-5,MySQL在RAID-5磁盤陣列上的效力不會像你等待的那樣快。
②CPU 關於MySQL運用,推舉應用S.M.P.架構的多路對稱CPU,例如:可使用兩顆Intel Xeon 3.6GHz的CPU,如今我較推舉用4U的辦事器來專門做數據庫辦事器,不只僅是針關於mysql。
③物理內存關於一台應用MySQL的Database Server來講,辦事器內存建議不要小於2GB,推舉應用4GB以上的物理內存,不外內存關於如今的辦事器而言可以說是一個可以疏忽的成績,任務中碰到了高端辦事器根本上內存都跨越了16G。
2、MySQL本身身分當處理了上述辦事器硬件制約身分後,讓我們看看MySQL本身的優化是若何操作的。 對MySQL本身的優化重要是對其設置裝備擺設文件my.cnf中的各項參數停止優化調劑。上面我們引見一些對機能影響較年夜的參數。 因為my.cnf文件的優化設置是與辦事器硬件設置裝備擺設互相關注的, 因此我們指定一個設想的辦事器硬件情況:CPU: 2顆Intel Xeon 2.4GHz 內存: 4GB DDR 硬盤: SCSI 73GB(很罕見的2U辦事器 ) 。
上面,我們依據以上硬件設置裝備擺設聯合一份曾經優化好的my.cnf停止解釋:
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking
#防止MySQL的內部鎖定,削減失足概率加強穩固性。
skip-name-resolve
#制止MySQL對內部銜接停止DNS解析,應用這一選項可以清除MySQL停止DNS解析的時光。但須要留意,假如開啟該選項,則一切長途主機銜接受權都要應用IP地址方法,不然MySQL將沒法正常處置銜接要求!
back_log = 384
#back_log參數的值指出在MySQL臨時停滯呼應新要求之前的短時光內若干個要求可以被存在客棧中。 假如體系在一個短時光內有許多銜接,則須要增年夜該參數的值,該參數值指定到來的TCP/IP銜接的偵聽隊列的年夜小。分歧的操作體系在這個隊列年夜小上有它本身的限制。 試圖設定back_log高於你的操作體系的限制將是有效的。默許值為50。關於Linux體系推舉設置為小於512的整數。
key_buffer_size = 256M
#key_buffer_size指定用於索引的緩沖區年夜小,增長它可獲得更好的索引處置機能。關於內存在4GB閣下的辦事器該參數可設置為256M或384M。留意:該參數值設置的過年夜反而會是辦事器全體效力下降!
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 128K
sort_buffer_size = 6M
#查詢排序時所能應用的緩沖區年夜小。留意:該參數對應的分派內存是每銜接獨有,假如有100個銜接,那末現實分派的總共排序緩沖區年夜小為100 × 6 = 600MB。所以,關於內存在4GB閣下的辦事器推舉設置為6-8M。
read_buffer_size = 4M
#讀查詢操作所能應用的緩沖區年夜小。和sort_buffer_size一樣,該參數對應的分派內存也是每銜接獨享。
join_buffer_size = 8M
#結合查詢操作所能應用的緩沖區年夜小,和sort_buffer_size一樣,該參數對應的分派內存也是每銜接獨享。
myisam_sort_buffer_size = 64M
table_cache = 512
thread_cache_size = 64
query_cache_size = 64M
#指定MySQL查詢緩沖區的年夜小。可以經由過程在MySQL掌握台不雅察,假如Qcache_lowmem_prunes的值異常年夜,則注解常常湧現緩沖不敷的情形;假如Qcache_hits的值異常年夜,則注解查詢緩沖應用異常頻仍,假如該值較小反而會影響效力,那末可以斟酌不消查詢緩沖;Qcache_free_blocks,假如該值異常年夜,則注解緩沖區中碎片許多。
tmp_table_size = 256M
max_connections = 768
#指定MySQL許可的最年夜銜接過程數。假如在拜訪服裝論壇t.vhao.net時常常湧現Too Many Connections的毛病提 示,則須要增年夜該參數值。
max_connect_errors = 10000000
wait_timeout = 10
#指定一個要求的最年夜銜接時光,關於4GB閣下內存的辦事器可以設置為5-10。
thread_concurrency = 8
#該參數取值為辦事器邏輯CPU數目*2,在本例中,辦事器有2顆物理CPU,而每顆物理CPU又支撐H.T超線程,所以現實取值為4*2=8
skip-networking
#開啟該選項可以完全封閉MySQL的TCP/IP銜接方法,假如WEB辦事器是以長途銜接的方法拜訪MySQL數據庫辦事器則不要開啟該選項!不然將沒法正常銜接!
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
thread_cache_size=120
#默許為60
query_cache_size=32M
※值得留意的是:
許多情形須要詳細情形詳細剖析
1、假如Key_reads太年夜,則應當把my.cnf中Key_buffer_size變年夜,堅持Key_reads/Key_read_requests至多1/100以上,越小越好。
2、假如Qcache_lowmem_prunes很年夜,就要增長Query_cache_size的值。