mysql常用引數優化 mysql常用優化引數

2021-10-17 19:34:25 字數 2884 閱讀 7582

修改全站搜尋

修改my.ini(my.cnf) ,在 [mysqld] 後面加入一行「ft_min_word_len=1」,然後 重啟mysql,再登入**後台(模組管理->全站搜尋)重建全文索引。

記錄慢查詢sql語句,修改my.ini(my.cnf),新增如下**:

#log-slow-queries

long_query_time = 1 #是指 執行超過多久的 sql 會被 log 下來

log-slow-queries = e:/wamp /logs/slow.log #設定把日誌寫在那裡,可以為空,系統會給乙個預設的檔案

#log-slow-queries = /var /youpath/slow.log linux下     host_name-slow.log

log-queries-not-using-indexes

mysql快取的設定

mysql>show variables like '%query_cache%';     mysql 本身是有對sql語句快取的機制的,合理設定我們的mysql快取可以降低資料庫的io資源。

#query_cache_type= 查 詢快取的方式(預設是 on)

query_cache_size 如果你希望禁用查詢快取,設定 query_cache_size=0。禁用了查 詢快取,將沒有明顯的開銷

query_cache_limit 不快取大於這個值的結果。(預設為 1m)

查詢快取的統計資訊

mysql> show status like 『qcache%』;

qcache_free_blocks 快取中相鄰記憶體塊的個數。數目大說明可能有碎片。flush query cache 會對 快取中的碎片進行整理,從而得到乙個空閒塊。

qcache_free_memory 快取中的空閒記憶體。

qcache_hits 每次查詢在快取中命中時就增大。

qcache_inserts 每次插入乙個查詢時就增大。命中次數除以插入次數就是不中比率;用 1 減去這個值就是命中率。在上 面這個例子中,大約有 87% 的查詢都在快取中命中。

qcache_lowmem_prunes 快取出現記憶體不足並且必須要進行清理以便為更多查詢提供空間的次數。這個數字最好長時間 來看;如果這個數字在不斷增長,就表示可能碎片非常嚴重,或者記憶體很少。(上面的 free_blocks 和 free_memory 可以告訴您屬於 哪種情況)。

qcache_not_cached 不適合進行快取的查詢的數量,通常是由於這些查詢不是 select 語句。

qcache_queries_in_cache 當前快取的查詢(和響應)的數量。

qcache_total_blocks 快取中塊的數量。通常,間隔幾秒顯示這些變數就可以看出區別,這可以幫助確定快取是否正在 有效地使用。執行 flush status 可以重置一些計數器,如果伺服器已經執行了一段時間,這會非常有幫助。

my.ini(my.conf)配置

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控制台執行以下命令觀察:

# > show variables like '%query_cache%';

# > show status like 'qcache%';

# 如果qcache_lowmem_prunes的值非常大,則表明經常出現緩衝不夠的情況;

#如果qcache_hits的值非常大,則表明查詢緩衝使用非常頻繁,如果該值較小反而會影響效率,那麼可以考慮不用查詢緩衝;

qcache_free_blocks,如 果該值非常大,則表明緩衝區中碎片很多

tmp_table_size = 256m

max_connections = 768

指定mysql允許的最大連線程序數。如果在訪問論壇時經常出現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資料庫伺服器則不要開 啟該選項!否則將無法正常連線!

mysq基礎優化

skip name resolve skip locking skip innodb skip bdb key buffer 1g記憶體推薦設定為256m,2g記憶體推薦設定為512m wait timeout 3或者5 2g記憶體推薦設定為5 max connections 如果訪問量很大可以設定...

Mysql 引數優化

1.my.cnf中的把 innodb buffer pool size 16g 別佔滿了記憶體。2.my.cnf中的把 innodb log buffer size 50m 這個主要是滿足大事務的需求。3.my.cnf中的把 innodb log file size 4g 這個是在硬碟,所以先設大 ...

mysql引數優化

back log 要求 mysql 能有的連線數量。當主要mysql執行緒在乙個很短時間內得到非常多的連線請求,這就起作用,然後主線程花些時間 儘管很短 檢查連線並且啟動乙個新執行緒。back log值指出在mysql暫時停止回答新請求之前的短時間內多少個請求可以被存在堆疊中。只有如果期望在乙個短時...