Mysql優化配置

2021-06-28 16:12:09 字數 4623 閱讀 1616

mysql配置優化

一、環境介紹

mysql版本

:5.6.23

二、優化內容

字段介紹

推薦值skip-locking

避免mysql

的外部鎖定,減少出錯機率增強穩定性

back_log

mysql可能的連線數量(linux下推薦小於

512)

384key_buffer_size 

key_buffer_size指定用於索引的緩衝區大小,增加它可得到更好的索引處理效能。

對於內存在4gb

左右的伺服器該引數可設定為

256m

或384m

。 注意:該引數值設定的過大反而會是伺服器整體效率降低!

4g伺服器

256m

max_allowed_packet

當mysql

客戶端或

mysqld

伺服器收到大於

max_allowed_packet

位元組的資訊包時,將發出

「資訊包過大

」錯誤,並關閉連線 4m

thread_stack 

主要用來存放每乙個執行緒自身的標識資訊,如執行緒id

,執行緒執行時基本資訊等等,我們可以通過 

thread_stack 

引數來設定為每乙個執行緒棧分配多大的記憶體

192kb

table_cache

表快取記憶體的數目

512sort_buffer_size 

n第一次需要使用這個

buffer

的時候,一次性分配

設定的記憶體

512k

read_buffer_size 

讀查詢操作所能使用的緩衝區大小

4mjoin_buffer_size 

聯合查詢操作所能使用的緩衝區大小

8mmyisam_sort_buffer_size

當在repair table

或用create index

建立索引或

alter table

過程中排序 

myisam

索引分配的緩衝區。

64mthread_cache_size 

表示可以重新利用儲存在快取中線程的數量,

當斷開連線時如果快取中還有空間

,那麼客戶端的執行緒將被放到快取中

,如果執行緒重新被請求,那麼請求將從快取中讀取

,(3g以上記憶體推薦為

64)

64query_cache_size 

查詢快取區的最大長度

64mtmp_table_size 

如果一張臨時表超出該大小,mysql

產生乙個 

the table tbl_name is full 

形式的錯誤

256m

max_connections 

最大使用者連線數

最大連線數佔上限連線數的85%左右

3000

max_connect_errors 

它負責阻止過多嘗試失敗的客戶端以防止暴力破解密碼的情況。max_connect_errors

的值與效能並無太大關係

10000000

wait_timeout 

指定乙個請求的最大連線時間,對於4gb

左右記憶體的伺服器可以設定為

5-10。

10thread_concurrency 

該引數取值為伺服器邏輯cpu

數量×2 4

innodb_log_file_size

如果對 innodb 

資料表有大量的寫入操作,那麼選擇合適的 

innodb_log_file_size 

值對提公升

mysql

效能很重要

256m

innodb_log_buffer_size

事務日誌檔案寫操作快取區的最大長度 8m

innodb_flush_logs_at_trx_commit

1) =1時,在每個事務提交時,日誌緩衝被寫到日誌檔案,對日誌檔案做到磁碟操作的重新整理。

truly acid

。速度慢。

2) =2時,在每個事務提交時,日誌緩衝被寫到檔案,但不對日誌檔案做到磁碟操作的重新整理。只有作業系統崩潰或掉電才會刪除最後一秒的事務,不然不會丟失事務。

3) =0時, 日誌緩衝每秒一次地被寫到日誌檔案,並且對日誌檔案做到磁碟操作的重新整理。任何

mysqld

程序的崩潰會刪除崩潰前最後一秒的事務 2

innodb_buffer_pool_size 

innodb_buffer_pool_size 定義了 

innodb 

儲存引擎的表資料和索引資料的最大記憶體緩衝區大小

在專用資料庫伺服器上,

可以考慮該值為物理記憶體大小的 60%-80%  1g

innodb_additional_mem_pool_size

除了快取表資料和索引外,

可以為操作所需的其他內部項分配快取來提公升

innodb

的效能。這些記憶體就可以通過此引數來分配。推薦此引數至少設定為

2mb2m

三、優化重點

1:max_connections

經常會遇見」mysql: error 1040: too many connections」的情況,一種是訪問量確實很高,mysql伺服器抗不住,這個時候就要考慮增加從伺服器分散讀壓力,另外一種情況是mysql配置檔案中max_connections值過小:

比較理想的設定是

max_used_connections / max_connections * 100% ≈ 85%

最大連線數佔上限連線數的85%左右,如果發現比例在10%以下,mysql伺服器連線數上限設定的過高了。

2:key_buffer_size

key_buffer_size是對myisam表效能影響最大的乙個引數:

key_cache_miss_rate = key_reads / key_read_requests * 100%

key_cache_miss_rate在0.1%以下都很好(每1000個請求有乙個直接讀硬碟),如果key_cache_miss_rate在0.01%以下的話,key_buffer_size分配的過多,可以適當減少

3:臨時表

比較理想的配置是:

created_tmp_disk_tables / created_tmp_tables * 100% <= 25%

4:open table

open_tables / opened_tables * 100% >= 85%

open_tables / table_cache * 100% <= 95%

5:程序使用情況

如果發現threads_created

值比較大

,那麼就可以考慮把

thread_cache_size

的值設大一些

6:查詢快取

查詢快取利用率 = (query_cache_size - qcache_free_memory) / query_cache_size * 100%

查詢快取利用率在25%以下的話說明query_cache_size設定的過大,可適當減小;查詢快取利用率在80%以上而且qcache_lowmem_prunes > 50的話說明query_cache_size可能有點小,要不就是碎片太多。

查詢快取命中率 = (qcache_hits - qcache_inserts) / qcache_hits * 100%

查詢快取碎片率 = 20.46%,查詢快取利用率 = 62.26%,查詢快取命中率 = 1.94%,命中率很差,可能寫操作比較頻繁吧,而且可能有些碎片。

7:檔案開啟數

比較合適的設定:open_files / open_files_limit * 100% <= 75%

8:表鎖情況

table_locks_immediate表示立即釋放表鎖數,table_locks_waited表示需要等待的表鎖數,如果table_locks_immediate / table_locks_waited > 5000,最好採用innodb引擎,因為innodb是行鎖而myisam是表鎖,對於高併發寫入的應用innodb效果會好些。

9:表掃瞄情況

計算表掃瞄率:

表掃瞄率 = handler_read_rnd_next / com_select

如果表掃瞄率超過4000,說明進行了太多表掃瞄,很有可能索引沒有建好,增加read_buffer_size值會有一些好處,但最好不要超過8mb。

四、mysql指定ip使用者訪問

主機部分就是代表允許的主機訪問

,%符號代表允許所有的主機

新增使用者授權

ip命令例子

:使用myuser/mypassword從ip

為61.129.51.8

的主機連線到

mysql

伺服器:

grant all privileges on *.* to 

'myuser'@'61.129.0.0'

identified by 'mypassword' with grant option; 

flush privileges;

mysql配置優化 MySQL配置效能優化

下面配置的優化,可能影響比較大,可能可以顯著提高讀寫效能。1 mysql一些主要配置項介紹 innodb buffer pool size 這是你安裝完innodb後第乙個應該設定的選項。緩衝池是資料和索引快取的地方 這個值越大越好,這能保證你在大多數的讀取操作時使用的是記憶體而不是硬碟。如果是純資...

Mysql優化配置

mysql配置優化 一 環境介紹 mysql版本 5.5.27 二 優化內容 字段介紹 推薦值skip locking 避免mysql 的外部鎖定,減少出錯機率增強穩定性 back log mysql可能的連線數量 linux下推薦小於 512 key buffer size key buffer ...

MySQL 配置優化

1.連線請求的變數 a.max connections 如果伺服器的併發連線請求量比較大,建議調高此值,以增加並行連線數量,當然這建立在機器能支撐的情況下,因為如果連線數越多,介於mysql會為每個連線提供連線緩衝區,就會開銷越多的記憶體,所以要適當調整該值,不能盲目提高設值。數值過小會經常出現er...