MySQL 關於性能的參數配置梳理

来源:https://www.cnblogs.com/xuliuzai/archive/2019/02/20/10406711.html
-Advertisement-
Play Games

以下List是我們常見的MySQL參數配置,這個參數對提高實例的性能大有裨益。 其中 建議設置值,僅供參考,需要根據自己的業務場景和硬體資源仔細推敲。 重用保存在緩存中線程的數量:如果Threads_created值過大MySQL伺服器一直在創建線程,比較耗資源,可以適當增加配置文件中thread_ ...


以下List是我們常見的MySQL參數配置,這個參數對提高實例的性能大有裨益。

其中 建議設置值,僅供參考,需要根據自己的業務場景和硬體資源仔細推敲。

參數 設置說明 建議設置值
lower_case_table_names 大小寫敏感:此參數不可以動態修改,必須重啟資料庫:
0.表名存儲為給定的大小和比較是區分大小寫的
1.表名存儲在磁碟是小寫的,但是比較的時候是不區分大小寫
2.表名存儲為給定的大小寫但是比較的時候是小寫的
0
max_connections 最大鏈接數據 2000
max_connect_errors 某一客戶端鏈接失敗的情況下嘗試連接MySQL伺服器最大嘗試次數 100
sort_buffer_size 排序緩衝增加sort_buffer_size值可以加速ORDER BYGROUP BY操作
想要加快ORDER BY的速度,首先看是否可以讓MySQL使用索引而不是額外的排序階段
8388608
join_buffer_size 聯合查詢緩衝此緩衝被使用來優化全聯接(FULL JOINS 不帶索引的聯接)
類似的聯接在極大多數情況下有非常糟糕的性能表現,但是將此值設大能夠減輕性能影響。如果全局大小比使用它的大多數查詢都大,那麼記憶體分配時就會導致性能下降
8388608
tmp_table_size 規定了內部記憶體臨時表的最大值,每個線程都要分配。這兩個參數是mysql對臨時表的大小控制,tmp_table_size 控制記憶體臨時表的最大值,超過限值後就往硬碟寫,寫的位置由變數 tmpdir 決定;max_heap_table_size 用戶可以創建的記憶體表(memory table)的大小.這個值用來計算記憶體表的最大行數值。 67108864
max_heap_table_size 67108864
innodb_buffer_pool_size  innodb緩衝池,用來緩存InnoDB索引頁面、Undo頁面以及一些其它輔助數據。 一般為物理記憶體的75%-85%
innodb_buffer_pool_instances InnoDB緩衝池劃分為多個實例適當地增加該參數,可以提升InnoDB的併發性能。通過這個參數,把原來一整塊Buffer Pool分割為多塊記憶體空間,每個空間獨立管理自己的空閑鏈表、刷新鏈表、LRU及其它數據結構。  
innodb_buffer_pool_dump_pct  InnoDB緩存池預熱恢復buffer pool中百分比數據 40
innodb_flush_log_at_trx_commit 0log buffer每秒一次寫入log file,並且log fileflush(刷到磁碟)操作同時進行。該模式下在事務提交的時候,不會主動觸發寫入磁碟的操作。
1
:每次事務提交時MySQL都會把log buffer的數據寫入log file,並且flush(刷到磁碟)中去,該模式為系統預設。
2
:每次事務提交時MySQL都會把log buffer的數據寫入log file,但是flush(刷到磁碟)操作並不會同時進行。該模式下,MySQL會每秒執行一次 flush(刷到磁碟)操作
1
slow_query_log 開啟慢查詢日誌,預設關閉. 1
log_slow_slave_statements  記錄由Slave所產生的慢查詢,預設值OFF。 1
log_queries_not_using_indexes 將沒有使用索引的SQL語句記錄到慢查詢日誌文件中,預設值OFF。 1
log_throttle_queries_not_using_indexes 來限制每分鐘可以寫入慢查詢日誌的數量。 10
long_query_time 慢查詢超時時間,預設10秒修改為1秒。 1
thread_cache_size

重用保存在緩存中線程的數量:如果Threads_created值過大MySQL伺服器一直在創建線程,比較耗資源,可以適當增加配置文件中thread_cache_size值。緩存命中率:Thread_Cache_Hit = (Connections - Threads_created) / Connections * 100%;

256
innodb_io_capacity InnoDB有後臺線程在不斷地做Flush操作,影響這個操作頻率的就是這個innodb_io_capacity參數。如果碰到系統因為後臺Flush操作而產生周期性性能降低的情況,特別是在使用SSD設備的時候,可以適當提高這個參數的值,以加速Flush的頻率。(但 For systems with individual 5400 RPM or 7200 RPM drives, you might lower the value to the former default of 100.)  32768 (SSD 配置)
innodb_thread_concurrency 在併發量大的實例上,增加這個值,可以降低InnoDB在併發線程之間切換的花銷,以增加系統的併發吞吐量。 32
slave_parallel_workers 在進行多線程複製的時候,如果設置此參數為非零值,則可以打開多線程併發執行回放日誌的操作,以提升Slave的同步性能。 16
sync_binlog MySQL 同步Binlog到磁碟的方式。1 最安全,但性能較差,每一個事務提交時,MySQL都會把Binlog刷新到磁碟中;0性能最好,但不安全。事務提交時,MySQL將Binlog信息寫入到Binlog文件(OS Cache)中,但是MySQL不控制Binlog的刷盤操作,由文件系統自己控制其緩存的刷新 0
tx_isolation 設置MySQL的隔離級別,讀未提交(read-uncommitted);不可重覆讀(read-committed);可重覆讀(repeatable-read);串列化(serializable)。這四種級別越來越嚴格。 REPEATABLE-READ
binlog_order_commits 事務在提交的時候寫入Binlog的順序。這是把雙刃劍,如果打開可以保證事務都以相同的順序寫入二進位文件,如果關閉則可以提升性能。需要根據實際情況決定。 on
max_allowed_packet MySQL發送和接受的最大數據包大小,設置過小會導致數據包分裂情況嚴重。 134217728
thread_stack 每個連接線程被創建時,MySQL給它分配的記憶體大小。 262144

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • #nginx開啟的進程數worker_processes 4; #4核CPU #定義全局錯誤日誌定義類型,[debug|info|notice|warn|crit]error_log logs/error.log info; #指定進程ID存儲文件位置pid logs/nginx.pid; #一個n ...
  • list 值就是一組根據插入順序排列的字元串, 從左向右排列, 左邊為頭(head), 右側為尾(tail). 左邊為頂部, 右邊為底部. 下圖為 list 值的示意圖: 從左側開始向鍵為 num 的 list 插入數據: 查看 num 里的數據, 因為數據是從左側開始插入, 並且插入的先後順序是從 ...
  • 哈希值存儲示意圖:首先, 我想先認真理解一下哈希值的數據結構:前面講過, redis 存儲的是鍵值對, 鍵永遠都是可以列印的 ASCII 碼, 值是字元串, 或者是以其他形式包裹的字元串. 上兩節介紹了單純字元串值的相關命令, 現在開始接觸第一個所謂的"以其他形式包裹的字元串" 哈希值. 大家看上圖 ...
  • 上一節介紹了關於字元串值的一些基本命令, 這一節將介紹一些進階命令: 清理終端: 設置一個鍵值對, 同時設置過期時間為10秒: 查看剩餘的過期時間: 設置一個鍵值對, 同時設置過期時間為30000毫秒, 註意, 使用 psetex 設置過期時間, 時間的單位為毫秒: 設置一個鍵值對, 但是想要確認這 ...
  • 正如前面所講的, redis 的數據結構就是一系列的鍵值對鍵 -> printable ASCII (可列印的 ASCII 碼, 最大值是 512MB)值 -> Primitives (基本的) string 字元串 (最大值是 512MB) Containers (of string) (以其他形 ...
  • “distinct” 是可選參數,用於剔除查詢結果中重覆的數據。 4.1 簡單查詢 ①查詢所有欄位 註意: 1、一般情況下,除非需要使用表中所有欄位的數據,否則最好不要使用星號通配符,使用通配符雖然可以節省輸入查詢語句的時間,但由於獲取的數據過多會降低查詢的效率; 2、對於欄位顯示的信息較多時,分號 ...
  • -- Oracle資料庫日期|時間查詢 SELECT SYSDATE FROM DUAL; SELECT TO_CHAR(SYSDATE , 'YYYY') FROM DUAL; -- 年 SELECT TO_CHAR(SYSDATE , 'MM') FROM DUAL; -- 月 SELECT T ...
  • 3.1 添加數據 ①為所有欄位添加數據 方法1:欄位包含全部定義的欄位 方法2:值必須與欄位定義順序一致 ②為部分欄位添加數據 欄位僅為定義欄位的部分欄位 ③同時添加多條記錄 註意: ①插入數據時,欄位列表與數據列表要一一對應。 ②插入數據的類型,需要與欄位設置的類型一致。數據應該不超出欄位的表示範 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...