Mysql最佳化配置

來源:互聯網
上載者:User

Mysql配置最佳化

一、環境介紹

Mysql版本:5.5.27

二、最佳化內容

欄位

介紹

推薦值

skip-locking

避免MySQL的外部鎖定,減少出錯幾率增強穩定性

 

back_log

MySQL可能的串連數量(linux下推薦小於512)

384

key_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

表快取的數目

512

sort_buffer_size 

n第一次需要使用這個buffer的時候,一次性分配設定的記憶體

512K

read_buffer_size 

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

4M

join_buffer_size 

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

8M

myisam_sort_buffer_size

當在REPAIR TABLE或用CREATE INDEX建立索引或ALTER TABLE過程中排序 MyISAM索引分配的緩衝區。

64M

thread_cache_size 

表示可以重新利用儲存在緩衝中線程的數量,當中斷連線時如果緩衝中還有空間,那麼用戶端的線程將被放到緩衝中,如果線程重新被請求,那麼請求將從緩衝中讀取,(3G以上記憶體推薦為64)

64

query_cache_size 

查詢快取區的最大長度

64M

tmp_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。

10

thread_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的效能。這些記憶體就可以通過此參數來分配。推薦此參數至少設定為2MB

2M

 

三、最佳化重點

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去查看各個變數的值,然後根據公式去計算各個變數的值,是否在標準範圍內,不在標準範圍內的,都相應的上下調動一下.

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.