程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL設置裝備擺設文件my.cnf中文詳解附mysql機能優化辦法分享

MySQL設置裝備擺設文件my.cnf中文詳解附mysql機能優化辦法分享

編輯:MySQL綜合教程

MySQL設置裝備擺設文件my.cnf中文詳解附mysql機能優化辦法分享。本站提示廣大學習愛好者:(MySQL設置裝備擺設文件my.cnf中文詳解附mysql機能優化辦法分享)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL設置裝備擺設文件my.cnf中文詳解附mysql機能優化辦法分享正文


上面先說我的辦事器的硬件和服裝論壇t.vhao.net情形,
CPU: 2顆四核Intel Xeon 2.00GHz
內存: 4GB DDR
硬盤: SCSI 146GB
服裝論壇t.vhao.net:在線會員 普通在 5000 人閣下 – 最高記載是 13264.
上面,我們依據以上硬件設置裝備擺設聯合一份曾經做過一次優化的my.cnf停止剖析解釋:有些參數能夠還得依據服裝論壇t.vhao.net的變更情形和法式員的法式停止再調劑。
[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking # 防止MySQL的內部鎖定,削減失足概率加強穩固性。

 skip-name-resolve

制止MySQL對內部銜接停止DNS解析,應用這一選項可以清除MySQL停止DNS解析的時光。但須要留意,假如開啟該選項,則一切長途主機銜接受權都要應用IP地址方法,不然MySQL將沒法正常處置銜接要求!
back_log = 500
請求 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。
key_buffer_size = 384M
# key_buffer_size指定用於索引的緩沖區年夜小,增長它可獲得更利益理的索引(對一切讀和多重寫),到你能累贅得起那樣多。假如你使它太年夜,體系將開端換頁而且真的變慢了。關於內存在4GB閣下的辦事器該參數可設置為384M或512M。經由過程檢討狀況值Key_read_requests和 Key_reads,可以曉得key_buffer_size設置能否公道。比例key_reads / key_read_requests應當盡量的低,至多是1:100,1:1000更好(上述狀況值可使用SHOW STATUS LIKE ‘key_read%'取得)。留意:該參數值設置的過年夜反而會是辦事器全體效力下降!
max_allowed_packet = 32M
增長該變量的值非常平安,這是由於僅當須要時才會分派額定內存。例如,僅當你收回長查詢或mysqld必需前往年夜的成果行時mysqld才會分派更多內存。該變量之所以取較小默許值是一種預防辦法,以捕捉客戶端和辦事器之間的毛病信息包,並確保不會因有時應用年夜的信息包而招致內存溢出。
table_cache = 512
table_cache指定表高速緩存的年夜小。每當MySQL拜訪一個表時,假如在表緩沖區中還有空間,該表就被翻開並放入個中,如許可以更快地拜訪表內容。經由過程檢討峰值時光的狀況值Open_tables和Opened_tables,可以決議能否須要增長table_cache的值。假如你發明 open_tables等於table_cache,而且opened_tables在赓續增加,那末你就須要增長table_cache的值了(上述狀況值可使用SHOW STATUS LIKE ‘Open%tables'取得)。留意,不克不及自覺地把table_cache設置成很年夜的值。假如設置得太高,能夠會形成文件描寫符缺乏,從而形成機能不穩固或許銜接掉敗。
sort_buffer_size = 4M
查詢排序時所能應用的緩沖區年夜小。留意:該參數對應的分派內存是每銜接獨有!假如有100個銜接,那末現實分派的總共排序緩沖區年夜小為100 × 4 = 400MB。所以,關於內存在4GB閣下的辦事器推舉設置為4-8M。
read_buffer_size = 4M
讀查詢操作所能應用的緩沖區年夜小。和sort_buffer_size一樣,該參數對應的分派內存也是每銜接獨享!
join_buffer_size = 8M
結合查詢操作所能應用的緩沖區年夜小,和sort_buffer_size一樣,該參數對應的分派內存也是每銜接獨享!
myisam_sort_buffer_size = 64M
MyISAM表產生變更時從新排序所需的緩沖
query_cache_size = 64M
指定MySQL查詢緩沖區的年夜小。可以經由過程在MySQL掌握台履行以下敕令不雅察:
# > SHOW VARIABLES LIKE ‘%query_cache%'; # > SHOW STATUS LIKE ‘Qcache%'; # 假如Qcache_lowmem_prunes的值異常年夜,則注解常常湧現緩沖不敷的情形;
假如Qcache_hits的值異常年夜,則注解查詢緩沖應用異常頻仍,假如該值較小反而會影響效力,那末可以斟酌不消查詢緩沖;Qcache_free_blocks,假如該值異常年夜,則注解緩沖區中碎片許多。
thread_cache_size = 64
可以復用的保留在中的線程的數目。假如有,新的線程從緩存中獲得,當斷開銜接的時刻假如有空間,客戶的線置在緩存中。假如有許多新的線程,為了進步機能可以這個變量值。經由過程比擬 Connections 和 Threads_created 狀況的變量,可以看到這個變量的感化
tmp_table_size = 256M
max_connections = 1000
指定MySQL許可的最年夜銜接過程數。假如在拜訪服裝論壇t.vhao.net時常常湧現Too Many Connections的毛病提醒,則須要增年夜該參數值。
max_connect_errors = 10000000
關於統一主機,假如有超越該參數值個數的中止毛病銜接,則該主機將被制止銜接。如需對該主機停止解禁,履行:FLUSH HOST;。
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數據庫辦事器則不要開啟該選項!不然將沒法正常銜接!
long_query_time = 10
log-slow-queries =
log-queries-not-using-indexes
開啟慢查詢日記( slow query log )
慢查詢日記關於跟蹤有成績的查詢異常有效。它記載一切查過long_query_time的查詢,假如須要,還可以記載不應用索引的記載。上面是一個慢查詢日記的例子:
開啟慢查詢日記,須要設置參數log_slow_queries、long_query_times、log-queries-not-using-indexes。
log_slow_queries指定日記文件,假如不供給文件名,MySQL將本身發生缺省文件名。long_query_times指定慢查詢的阈值,缺省是10秒。log-queries-not-using-indexes是4.1.0今後引入的參數,它指導記載不應用索引的查詢。設置 long_query_time=10
外附上應用show status敕令檢查mysql狀況相干的值及其寄義:
應用show status敕令
寄義以下:
aborted_clients 客戶端不法中止銜接次數
aborted_connects 銜接mysql掉敗次數
com_xxx xxx敕令履行次數,有許多條
connections 銜接mysql的數目
Created_tmp_disk_tables 在磁盤上創立的暫時表
Created_tmp_tables 在內存裡創立的暫時表
Created_tmp_files 暫時文件數
Key_read_requests The number of requests to read a key block from the cache
Key_reads The number of physical reads of a key block from disk
Max_used_connections 同時應用的銜接數
Open_tables 開放的表
Open_files 開放的文件
Opened_tables 翻開的表
Questions 提交到server的查詢數
Sort_merge_passes 假如這個值很年夜,應當增長my.cnf中的sort_buffer值
Uptime 辦事器曾經任務的秒數
晉升機能的建議:
1.假如opened_tables太年夜,應當把my.cnf中的table_cache變年夜

2.假如Key_reads太年夜,則應當把my.cnf中key_buffer_size變年夜.可以用Key_reads/Key_read_requests盤算出cache掉敗率

3.假如Handler_read_rnd太年夜,則你寫的SQL語句裡許多查詢都是要掃描全部表,而沒有施展索引的鍵的感化

4.假如Threads_created太年夜,就要增長my.cnf中thread_cache_size的值.可以用Threads_created/Connections盤算cache射中率

5.假如Created_tmp_disk_tables太年夜,就要增長my.cnf中tmp_table_size的值,用基於內存的暫時表取代基於磁盤的

===================================================================
存儲引擎是甚麼?MySQL中的數據用各類分歧的技巧存儲在文件(或許內 准確的編譯辦法雖然主要,但它只是進步MySQL辦事器機能任務的一部門。MySQL辦事器的很多參數會影響辦事器的機能表示,並且我們可以把這些參數保留到設置裝備擺設文件,使得每次MySQL辦事器啟動時這些參數都主動施展感化。這個設置裝備擺設文件就是my.cnf。
MySQL辦事器供給了my.cnf文件的幾個示例,它們可以在/usr/local/mysql/share/mysql/目次下找到,名字分離為 my-small.cnf、my-medium.cnf、my-large.cnf和my-huge.cnf。文件名字中關於范圍的解釋描寫了該設置裝備擺設文件實用的體系類型。例如,假如運轉MySQL辦事器的體系內存不多,並且MySQL只是偶然應用,那末應用my-small.cnf設置裝備擺設文件最為幻想,這個設置裝備擺設文件告知mysqld daemon應用起碼的體系資本。反之,假如MySQL辦事器用於支撐一個年夜范圍的在線商場,體系具有2G的內存,那末應用mysql-huge.cnf 最為適合。
要應用上述示例設置裝備擺設文件,我們應當先復制一個最合適請求的設置裝備擺設文件,並把它定名為my.cnf。這個復制獲得的設置裝備擺設文件可以依照以下三種方法應用:
全局:把這個my.cnf文件復制到辦事器的/etc目次,此時文件中所界說的參數將全局有用,即對該辦事器上運轉的一切MySQL數據庫辦事器都有用。
部分:把這個my.cnf文件復制到[MYSQL-INSTALL-DIR]/var/將使該文件只對指定的辦事器有用,個中[MYSQL-INSTALL-DIR]表現裝置MySQL的目次。
用戶:最初,我們還可以把該文件的感化規模局限到指定的用戶,這只需把my.cnf文件復制到用戶的根目次便可。
那末,若何設置my.cnf文件中的參數呢?或許進一步說,哪些參數是我們可以設置的呢?一切這些參數都對MySQL辦事器有著全局性的影響,但同時每個參數都和MySQL的特定部門關系較為親密。例如,max_connections參數屬於mysqld一類。那末,若何能力得知這一點呢?這只需履行以下敕令:

% >/usr/local/mysql/libexec/mysqld –help
該敕令將顯示出和mysqld有關的各類選項和參數。要尋覓這些參數異常便利,由於這些參數都在“Possible variables for option –set-variable (-O) are”這行內容的前面。找到這些參數以後,我們便可以在my.cnf文件中依照以下方法設置一切這些參數:

set-variable = max_connections=100

這行代碼的後果是:同時銜接MySQL辦事器的最年夜銜接數目限制為100。不要忘了在my.cnf文件[mysqld]末節加上一個set-variable指令,詳細請拜見設置裝備擺設文件中的示例。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved