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...