mysql優化一些引數的設定

2021-08-31 05:13:59 字數 3246 閱讀 7390

在整體的系統執行過程中,資料庫伺服器 mysql 的壓力是最大的,不僅占用很多的記憶體和 cpu 資源,而且占用著大部分的磁碟 io 資源,連 php 的官方都在聲稱,說 php 指令碼 80% 的時間都在等待 mysql 查詢返回的結果。由此可見,提高系統的負載能力,降低 mysql 的資源消耗迫在眉睫。

1、頁面快取功能:

頁面快取功能降低mysql的資源消耗的(系統本身就已經考慮,採用生成html頁面,大大降低了資料庫的壓力)。

2、mysql伺服器的優化

2.1、修改全站搜尋

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

2.2、記錄慢查詢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

2.3、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)

2.4、查詢快取的統計資訊

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 可以重置一些計數器,如果伺服器已經執行了一段時間,這會非常有幫助。

2.5、my.ini(my.conf)配置

2.5.1、key_buffer_size = 256m

# key_buffer_size指定用於索引的緩衝區大小,增加它可得到更好的索引處理效能。 對於內存在4gb左右的伺服器該引數可設定為256m或384m。注意:該引數值設定的過大反而會是伺服器整體效率降低!

2.5.2、

max_allowed_packet = 4m

thread_stack = 256k

table_cache = 128k

sort_buffer_size = 6m

查詢排序時所能使用的緩衝區大小。注意:該引數對應的分配記憶體是每連線獨佔!如果有100個連線,那麼實際分配的總共排序緩衝區大小為100 × 6 = 600mb。所以,對於內存在4gb左右的伺服器推薦設定為6-8m。

2.5.3、

read_buffer_size = 4m

讀查詢操作所能使用的緩衝區大小。和sort_buffer_size一樣,該引數對應的分配記憶體也是每個連線獨享!

2.5.4、join_buffer_size = 8m

聯合查詢操作所能使用的緩衝區大小,和sort_buffer_size一樣,該引數對應的分配記憶體也是每個連線獨享!

2.5.5、

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,如 果該值非常大,則表明緩衝區中碎片很多

2.5.6、

tmp_table_size = 256m

max_connections = 768

指定mysql允許的最大連線程序數。如果在訪問論壇時經常出現too many connections的錯誤提示,則需要增大該引數值。

2.5.7、

max_connect_errors = 10000000

wait_timeout = 10

指定乙個請求的最大連線時間,對於4gb左右記憶體的伺服器可以設定為5-10。

2.5.8、

thread_concurrency = 8

該引數取值為伺服器邏輯cpu數量×2,如果伺服器有2顆物理cpu,而每顆物理cpu又支援h.t超執行緒,所以實際取值為4 × 2 = 8

2.5.9、

skip-networking

開啟該選項可以徹底關閉mysql的tcp/ip連線方式,如果web伺服器是以遠端連線的方式訪問mysql資料庫伺服器則不要開啟該選項!否則將無法正常連線!

MySQL效能優化的一些引數配置

首先開啟mysql配置檔案my.ini 一般是在c盤programdata裡面的mysql資料夾下 1.修改back log引數值 由預設的50修改為500,即back log 500 2.修改wait timeout引數值,由預設值的8小時,修改為30分鐘 wait timeout 1800 這裡...

mysql的一些優化

前言 sql優化,是一種概率層面的優化。至於是否實際使用了我們的優化,需要通過explain進行推測。注意 服務層中有sql優化器,可能會影響我們的優化,同時註明 sql的優化前提是有索引 有索引 有索引 in和exists的使用場景 select from a where exists selec...

一些 Mysql 的優化經驗

一些 mysql 的 優化經驗 從資料庫結構做起 字段型別的定義時遵循以下規則 選用字段長度最小 優先使用定長型 盡可能的定義 not null 數值型字段中避免使用 zerofill 如果要儲存的資料為字串,且可能值已知且有限,優先使用 enum 或 set 索引的優化至關重要 以下如果沒有特殊說...