mysql配置文件詳解

[mysqld]

default-storage-engine = myisam 存儲引擎設置myisam性能高,但是不宜處理大的數據,

佔用資源少,innodb有事物處理高級功能,佔用資源大

datadir=/var/lib/mysql 數據庫所在的路徑

socket=/var/lib/mysql/mysql.sock 套接字路徑

old_passwords=1 兼容4.1版本之前的hash密碼

max_connections = 1000 最大連接數目,mysql會保留一個管理員的連接,所以最大連接數目實際

爲max_connections + 1,該變量的最大值爲16384,增加這個參數的值不會太佔用系統的資源

max_connect_errors=1000 默認值爲10,客戶端嘗試連接此MySQL服務器,但是失敗(如密碼錯誤等等)1000次,則MySQL會無條件強制阻止此客戶端連接,防止暴力破解密碼.

max_allowed_packet=61457280 發送最大包的值,默認值爲1048576Byte(1M).

max_length_for_sort_data=8096 默認值爲1024,設定一個觸發使用雙路排序的值,不足這個值的 ord by 排序使用單路排序

delayed_insert_timeout=300 設置延遲插入的超時時間,默認值300,若在指定的時間內沒有插入,則終止插入


table_open_cache=356 限制緩存表的最大數目,默認值爲64,5.1.3版本之前叫table_cache

show global status like 'open%_tables';可以看到Open_tables和Opened_tables的值

Open_tables / Opened_tables >= 0.85
Open_tables / table_cache <= 0.95

這個值至少要大於等於max_connections吧,圖中的明顯有問題.

wKiom1ht3hqC4AjuAAA7smNiE4E599.png


sort_buffer_size=2M 系統默認大小時2MB,是針對單個線程的,所以當多個線程同時進行排序的時候,系統中就會出現多個sort buffer。我們一般可以通過增大sort buffer的大小來提高order by或者group by的處理性能。


key_buffer_size=264M 索引區塊的RMA值,爲更好的處理索引,對於所有線程的.

mysql key_buffer_size是對MyISAM表性能影響最大的一個參數(注意該參數對其他類型的表設置無效)


wKioL1ht3r2Cff1fAAA-o_qWr4s280.png

Key_read_requests:表示總共的索引請求次數
Key_reads:從硬盤讀取索引的請求次數
key_cache_miss_rate = Key_reads / Key_read_requests * 100%
這個miss當然是越小越好,增大key_buffer_size的大小可以減小,這個key_cache_miss_rate的值


read_buffer_size=50M

這部分內存主要用於當需要順序讀取數據的時候,如無發使用索引的情況下的全表掃描,全索引掃描等。在這種時候,MySQL按照數據的存儲順序依次讀取數據塊,每次讀取的數據快首先會暫存在read_buffer_size中,當 buffer空間被寫滿或者全部數據讀取結束後,再將buffer中的數據返回給上層調用者,以提高效率。


join_buffer_size=128k  默認爲128k

應用程序經常會出現一些兩表(或多表)Join的操作需求,MySQL在完成某些 Join 需求的時候(all/indexjoin),爲了減少參與Join的“被驅動表”的讀取次數以提高性能,需要使用到 Join Buffer 來協助完成 Join操作。當 Join Buffer 太小,MySQL 不會將該 Buffer 存入磁盤文件,而是先將Join Buffer中的結果集與需要 Join的表進行 Join 操作,然後清空 Join Buffer 中的數據,繼續將剩餘的結果集寫入此 Buffer中,如此往復。這勢必會造成被驅動表需要被多次讀取,成倍增加 IO 訪問,降低效率。


tmp_table_size=100M 

當我們進行一些特殊操作如需要使用臨時表才能完成的Order By,Group By 等等,MySQL 可能需要使用到臨時表,太小的話,臨時表就只能寫到硬盤上了.

 

max_heap_table_size=100M

這個變量定義了用戶可以創建的內存表(memory table)的大小.這個值用來計算內存表的最大行數值。這個變量支持動態改變,即set @max_heap_table_size=#

,但是對於已經存在的內存表就沒有什麼用了,除非這個表被重新創建(create table)或者修改(alter table)或者truncate table。服務重啓也會設置已經存在的內存表爲全局max_heap_table_size的值。

這個變量和tmp_table_size一起限制了內部內存表的大小


myisam_sort_buffer_size=50M 重建索引時,允許最大臨時文件的大小,默認8M

query_cache_size=64M 設置查詢緩衝的大小,默認爲0.


query_cache_type = 1
查詢結果寫入緩存。這裏可以設置三種值 0 , 1,2 ,其中 0 表示關閉緩存,也就是查詢結構不寫入緩存, 1 是寫入, 2 是 demand 。但是事實證明,只要不關閉,查詢就會先去緩存中找。


skip-name-resolve 禁用反解析,即根據ip查找域名,禁止可以提高響應.

ft_min_word_len = 1開啓全文搜索,預先對於全站內容進行索引,默認爲4

character-set-server=utf8 設定使用的字符編碼服務

log-bin=mysql-binf 設置二進制日誌的開頭名

expire-logs-days=3 設置日誌過期時間

binlog_format = statement 設置 binlog_format 的模式, statement 表示記錄每一個 sql 修改。若設置爲 =row ,則表示記錄修改的行,另外還可以設置爲 mixedlevel ,爲兩者混合模式,在執行主從複製時使用 row 進行主從複製,在進行數據普通修改的時候進行 statement 複製。

server-id=1





#query

long_query_time=30 判斷爲慢查詢的時間,默認值爲10s,記錄超過30s的sql執行語句

slow_query_log_file=/var/log/mysql_slow.log 設定慢查詢的日誌文件

slow_query_log=on 開啓慢查詢

slow_query_log_timestamp_precision = microsecond 爲判定爲慢查詢的語句打上時間戳

log-slow-queries = /var/log/mysql_slow.log 慢查詢語句判定之後存放的位置


log_error = /var/log/mysqld.log 存放錯誤日誌的位置

slave_load_tmpdir = /data/mysql_tmp_no_del 從服務器引導臨時文件

tmpdir = /backup/mysql_tmp_no_del 臨時文件目錄


[mysqld_safe]

pid-file=/var/lib/mysql/mysqld.pid 指定存放 PID 的文件

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