mysql配置文件my.cnf基本配置與參數調優

由於本人使用的mysql服務器一般都是隻採用innodb引擎,並希望配置能儘量大的提高性能,每次設置都要去百度搜索比較多篇文章再結合設置,於是自己提取了一些常用的配置項方便使用。


1,最大連接數max_connections
--------------------------------------------------
默認爲100,一般設置爲1000-2000合適一些。

max_connections=2000


2,concurrent_insert參數
--------------------------------------------------
默認爲1,一般也爲1,如果寫操作鎖表比較嚴重,同時對於存儲硬盤空間允許有碎片,可以設置爲2.

concurrent_insert=1


3,innodb_buffer_pool_size
--------------------------------------------------
默認8M。如果數據庫採用innodb表,修改此值非常重要。由於Innodb把數據和索引都緩存起來,無需留給操作系統太多的內存,因此如果只需要用Innodb的話則可以設置它高達 70-80% 的可用內存。

innodb_buffer_pool_size = 24G


4,innodb_flush_log_at_trx_commit
--------------------------------------------------
默認值是1。意味着每次提交的更新事務(或者每個事務之外的語句)都會刷新到磁盤中,而這相當耗費資源,尤其是沒有電池備用緩存時。很多應用程序,尤其是從 MyISAM轉變過來的那些,把它的值設置爲 2 就可以了,也就是不把日誌刷新到磁盤上,而只刷新到操作系統的緩存上。日誌仍然會每秒刷新到磁盤中去,因此通常不會丟失每秒1-2次更新的消耗。如果設置爲 0 就快很多了,不過也相對不安全了。MySQL服務器崩潰時就會丟失一些事務。設置爲 2 指揮丟失刷新到操作系統緩存的那部分事務。

innodb_flush_log_at_trx_commit=2


5,table_cache
---------------------------------------------------
默認值是64。爲所有線程打開表的數量,當 Mysql 訪問一個表時,如果該表在緩存中已經被打開,則可以直接訪問緩存;如果表還沒有被緩存,但是在 Mysql 表緩衝區中還有空間,那麼這個表就被打開並放入表緩衝區。增加該值能增加mysqld要求的文件描述符的數量。MySQL對每個唯一打開的表需要2個文件描述符。可把它改爲512。
open_files_limit=10240

table_cache=512


6,thread_cache_size
---------------------------------------------------
默認是8。可以複用的保存在中的線程的數量。如果有,新的線程從緩存中取得,當斷開連接的時候如果有空間,客戶的線置在緩存中。如果有很多新的線程,爲了提高性能可以這個變量值。通過比較 Connections 和 Threads_created 狀態的變量,可以看到這個變量的作用,一般(Connections-Threads_created)/Connections應該在90%以上。初步可以把它設置爲 256,以後識情況調整。

thread_cache_size=256


7,skip-name-resolve
---------------------------------------------------
禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。但需要注意,如果開啓該選項,則所有遠程主機連接授權都要使用IP地址方式,否則MySQL將無法正常處理連接請求!關閉後,本地localhost依然可以正常使用。

skip-name-resolve


8,back_log
---------------------------------------------------
指定MySQL可能的連接數量。當MySQL主線程在很短的時間內接收到非常多的連接請求,該參數生效,主線程花費很短的時間檢查連接並且啓動一個新線程。back_log參數的值指出在MySQL暫時停止響應新請求之前的短時間內多少個請求可以被存在堆棧中。如果系統在一個短時間內有很多連接,則需要增大該參數的值,該參數值指定到來的TCP/IP連接的偵聽隊列的大小。不同的操作系統在這個隊列大小上有它自己的限制。試圖設定back_log高於你的操作系統的限制將是無效的。默認值爲50。對於Linux系統推薦設置爲小於512的整數。

back_log=256


9,max_allowed_packet
---------------------------------------------------
設置最大包,限制server接受的數據包大小,避免超長SQL的執行有問題 默認值爲16M,當MySQL客戶端或mysqld服務器收到大於max_allowed_packet字節的信息包時,將發出“信息包過大”錯誤,並關閉連接。對於某些客戶端,如果通信信息包過大,在執行查詢期間,可能會遇到“丟失與MySQL服務器的連接”錯誤。默認值16M。

max_allowed_packet=32M


10,sort_buffer_size
---------------------------------------------------
默認2M, sort_buffer_size 並不是越大越好,由於是connection級的參數,過大的設置+高併發可能會耗盡系統內存資源。例如:500個連接將會消耗 500*sort_buffer_size(8M)=4G內存

sort_buffer_size=8M


11,join_buffer_size
---------------------------------------------------
用於表間關聯緩存的大小,默認128k。

join_buffer_size=1M


12,transaction_isolation
---------------------------------------------------
設定默認的事務隔離級別.可用的級別如下:
READ-UNCOMMITTED, READ-COMMITTED, REPEATABLE-READ, SERIALIZABLE
1.READ UNCOMMITTED-讀未提交2.READ COMMITTE-讀已提交3.REPEATABLE READ -可重複讀4.SERIALIZABLE -串行

transaction_isolation=READ-COMMITTED


13,tmp_table_size
---------------------------------------------------
tmp_table_size 的默認大小是 32M。如果一張臨時表超出該大小,MySQL產生一個 The table tbl_name is full 形式的錯誤,如果你做很多高級 GROUP BY 查詢,增加 tmp_table_size 值。

tmp_table_size=256M


14,innodb_log_buffer_size
---------------------------------------------------
默認1M,此參數確定些日誌文件所用的內存大小,以M爲單位。緩衝區更大能提高性能,但意外的故障將會丟失數據.MySQL開發人員建議設置爲1-8M之間。

innodb_log_buffer_size=8M


15,innodb_log_file_size
---------------------------------------------------
此參數確定數據日誌文件的大小,以M爲單位,更大的設置可以提高性能,但也會增加恢復故障數據庫所需的時間

innodb_log_file_size=128M


16,錯誤日誌
---------------------------------------------------
錯誤日誌文件包含了當mysqld啓動和停止時,以及服務器在運行過程中發生任何嚴重錯誤時的相關信息。
配置方法:

log-error="log/error.log"


17,二進制日誌
---------------------------------------------------
二進制日誌包含了所有更新了數據或者已經潛在更新了數據的所有語句。語句以“事件”的形式保存,它描述數據更改。
配置方法:

log-bin="log/bin/bin.log"


18,慢查詢日誌
---------------------------------------------------
慢查詢日誌可以用來找到執行時間長的查詢,可以用於優化。
配置方法:
log-slow-queries="log/slow_query.log"

long_query_time=1






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章