[mysqld]
port = 3306
serverid = 1
socket = /tmp/mysql.sock
skip-locking # 避免MySQL的外部鎖定,減小出錯概率加強穩定性。
skip-networking # 開啓該選項能夠完全關閉MySQL的TCP/IP鏈接方式,若是WEB服務器是以遠程鏈接的方式訪問MySQL數據庫服務器則不要開啓該選項!不然將沒法正常鏈接!
skip-name-resolve # 禁止MySQL對外部鏈接進行DNS解析,使用這一選項能夠消除MySQL進行DNS解析的時間。但須要注意,若是開啓該選項,則全部遠程主機鏈接受權都要使用IP地址方式,不然MySQL將沒法正常處理鏈接請求!
back_log = 384 ########### 個人1G內存沒有設置此項使用的默認值 50,目前觀察還不錯。
# 1. 指定MySQL可能的鏈接數量,當MySQL主線程在很短的時間內接收到很是多的鏈接請求,該參數生效,主線程花費很短的時間檢查鏈接而且啓動一個新線程。
# 2. back_log參數的值指出在MySQL暫時中止響應新請求以前的短期內多少個請求能夠被存在堆棧中。 若是系統在一個短期內有不少鏈接,則須要增大該參數的值,該參數值指定到來的TCP/IP鏈接的偵聽隊列的大小。不一樣的操做系統在這個隊列大小上有它本身的限制。
# 3. 注意:試圖設定back_log高於你的操做系統的限制將是無效的。默認值爲50。對於Linux系統推薦設置爲小於512的整數。
key_buffer_size = 256M ########### 我設置的128M,目前觀察還不錯。
# 只對MyISAM表起做用,指定用於索引的緩衝區大小,增長它可獲得更好的索引處理性能。尤爲是索引讀的速度。
# 1. 對於內存在4GB左右的服務器該參數可設置爲256M或384M。
# 2. 另一個估計key_buffer_size的辦法 把你網站數據庫的每一個表的索引所佔空間大小加起來看看, 以此服務器爲例:比較大的幾個表索引加起來大概125M 這個數字會隨着表變大而變大.
# 3. 通常咱們設爲16M,實際上稍微大一點的站點 這個數字是遠遠不夠的,經過檢查狀態值 Key_read_requests和Key_reads,能夠知道key_buffer_size設置是否合理。比例 key_reads / key_read_requests應該儘量的低,至少是1:100,1:1000更好(上述狀態值可使用SHOW STATUS LIKE ‘key_read%’得到)。
如下的狀態值都是本人(hexu.org)經過 Sqlyog 得到的實例分析:
#> SHOW STATUS LIKE 'key_read%'
##> key_read_requests – 650759289
##> key_reads - 79112
##> 比例接近1:8000 健康情況很是好
# 4. 注意:該參數值設置的過大反而會是服務器總體效率下降!
query_cache_type = 1 # 指定是否使用查詢緩衝
query_cache_limit = 2M
query_cache_size = 64M ########### 個人1G內存設置爲64M,目前觀察還不錯。
# 使用查詢緩衝,MySQL將Select語句和查詢結果存放在緩衝區中,從此對於一樣的Select語句(區分大小寫),將直接從緩衝區中讀取結果。
# 1. 根據MySQL用戶手冊,使用查詢緩衝最多能夠達到238%的效率。 指定MySQL查詢緩衝區的大小。能夠經過在MySQL控制檯執行如下命令觀察:
#> SHOW VARIABLES LIKE '%query_cache%';
#> SHOW STATUS LIKE 'Qcache%';
# 1. 若是Qcache_lowmem_prunes的值很是大,則代表常常出現緩衝不夠的狀況,同時Qcache_hits的值很是大,則代表查詢緩衝使用很是頻繁,此時須要增長緩衝大小
# 2. 若是Qcache_hits的值不大,則代表你的查詢重複率很低,這種狀況下使用查詢緩衝反而會影響效率,那麼能夠考慮不用查詢緩衝。此外,在Select語句中加入SQL_NO_CACHE能夠明確表示不使用查詢緩衝。
# 3. 若是Qcache_free_blocks的值很是大,則代表緩衝區中碎片不少
max_allowed_packet = 4M
thread_stack = 256K
table_cache = 256 ########### 個人1G內存設置爲256,目前觀察還不錯。
# 指定表高速緩存的大小。每當MySQL訪問一個表時,若是在表緩衝區中還有空間,該表就被打開並放入其中,這樣能夠更快地訪問表內容。
# 1. 對於有1G內存的機器,推薦值是128-256。
# 2. 經過檢查峯值時間的狀態值Open_tables和Opened_tables,能夠決定是否須要增長table_cache的值。
# 3. 若是你發現open_tables等於table_cache,而且opened_tables在不斷增加,那麼你就須要增長table_cache的值了。
#> SHOW STATUS LIKE ’Open%tables‘;
# 1. Open tables 256
# 2. Opened tables 9046
# 雖然open_tables已經等於table_cache,可是相對於服務器運行時間來講,已經運行了20 天,opened_tables的值也很是低。所以,增長table_cache的值應該用處不大。若是運行了6個小時就出現上述值 那就要考慮增大table_cache
# 4. 注意:不能盲目地把table_cache設置成很大的值。若是設置得過高,可能會形成文件描述符不足,從而形成性能不穩定或者鏈接失敗。
sort_buffer_size = 6M # 查詢排序時所能使用的緩衝區大小。
read_buffer_size = 4M # 讀查詢操做所能使用的緩衝區大小。
join_buffer_size = 8M # 聯合查詢操做所能使用的緩衝區大小
# 注意:sort/read/join_buffer_size 三個參數對應的分配內存是每鏈接獨佔!若是有100個鏈接,那麼實際分配的總共排序緩衝區大小爲100 × 6 = 600MB。因此,對於內存在4GB左右的服務器推薦設置爲6-8M。
myisam_sort_buffer_size = 64M
table_cache = 512
tmp_table_size = 256M
max_connections = 768
# 指定MySQL容許的最大鏈接進程數。若是在訪問論壇時常常出現Too Many Connections的錯誤提 示,則須要增大該參數值。
max_connect_errors = 10000000
wait_timeout = 10
# 指定一個請求的最大鏈接時間,對於4GB左右內存的服務器能夠設置爲5-10。
thread_cache 32
# 沒找到具體說明,不過設置爲32後 20天才建立了400多個線程 而之前一天就建立了上千個線程 因此仍是有用的
thread_concurrency = 8
# 該參數取值爲服務器邏輯CPU數量×2,在本例中,服務器有2顆物理CPU,而每顆物理CPU又支持H.T超線程,因此實際取值爲4 × 2 = 8
thread_cache_size = 8
# 默認是 8 ,這個值表示能夠從新利用保存在緩存中線程的數量, 當斷開鏈接時:
# 1. 若是緩存中還有空間,那麼客戶端的線程將被放到緩存中,
# 2. 若是線程從新被請求,那麼請求將從緩存中讀取,
# 3. 若是緩存中是空的或者是新的請求,那麼這個線程將被從新建立,
# 4. 若是有不少新的線程,增長這個值能夠改善系統性能.經過比較 Connections 和 Threads_created 狀態的變量,能夠看到這個變量的做用。
# 5. 根據物理內存設置規則以下:
# Mem: 1G 能夠設置爲 8
# Mem: 2G 能夠設置爲 16
# Mem: 3G 能夠設置爲 32
# Mem: >3G 能夠設置爲 64
ft_min_word_len = 4 ########### 個人設置爲2
#被全文檢索索引的最小的字長. 你也許但願減小它,若是你須要搜索更短字的時候. 注意在你修改此值以後,你須要重建你的 FULLTEXT 索引
log-bin = /home/mysql/logs/binlog/mysql-bin
# 若是你不須要記錄2進制log 就把這個功能關掉,注意關掉之後就不能恢復出問題前的數據了,須要您手動備份,
# 1. 二進制日誌包含全部更新數據的語句,其目的是在恢復數據庫時用它來把數據儘量恢復到最後的狀態。
# 2. 另外,若是作同步複製( Replication )的話,也須要使用二進制日誌傳送修改狀況。
# 3. 若是不提供文件名,MySQL將本身產生缺省文件名。MySQL會在文件名後面自動添加數字引,每次啓動服務時,都會從新生成一個新的二進制文件。
# 4. 此外說明:
# 1. 使用log-bin-index能夠指定索引文件;
# 2. 使用binlog-do-db能夠指定記錄的數據庫;
# 3. 使用binlog-ignore- db能夠指定不記錄的數據庫。
# 注意第一:binlog-do-db和binlog-ignore-db一次只指定一個數據庫,指定多個數據庫須要多個語句。
# 注意第二:MySQL會將全部的數據庫名稱改爲小寫,在指定數據庫時必須所有使用小寫名字,不然不會起做用。
log_slow_queries = /home/mysql/logs/slowlog/slow.query
# 指定日誌文件,若是不提供文件名,MySQL將本身產生缺省文件名。
long_query_time = 2 ########### 我設置的若是查詢時間大於 2s,就記錄慢查詢到log_slow_querys指的文件中
log_long_format
# 打開此項會記錄使得那些沒有使用索引的查詢也被做爲到慢速查詢附加到慢速日誌裏
log-queries-not-using-indexes
# 打開此項會記錄使得那些沒有使用索引的查詢也被做爲到慢速查詢附加到慢速日誌裏
skip-innodb #去掉innodb支持