MySQL調優的五個方向

  1. 客戶端與連接層的優化:調整客戶端DB連接池的參數和DB連接層的參數。
  2. MySQL結構的優化:合理的設計庫表結構,表中字段根據業務選擇合適的數據類型、索引。
  3. MySQL參數優化:調整參數的默認值,根據業務將各類參數調整到合適的大小。
  4. 整體架構優化:引入中間件減輕數據庫壓力,優化MySQL架構提高可用性。
  5. 編碼層優化:根據庫表結構、索引結構優化業務SQL語句,提高索引命中率。

帶來的性能收益排序為 4 > 2 > 5 > 3 > 1,性能收益越大意味著成本越高。

MySQL 連接層優化策略

一個用戶請求在Java程序中分配一條線程處理,然后變成一條SQL發往MySQL執行,Java程序和MySQL-Server之間通過建立網絡連接進行通信,這些連接稱為數據庫連接,MySQL內部也是通過一條條線程執行SQL語句。數據庫連接數不是越大越好。

數據庫連接數越大,內部創建出的工作線程會越多,需要的CPU配置就更高,線程數量超過服務器CPU核心數量,CPU會以時間片調度模式工作,在不同線程中反復切換執行,這個過程遠大于線程執行的開銷。

連接池分為客戶端連接池、服務端連接池,客戶端連接池是指Java自身維護的數據庫連接對象,如C3P0、DBCP、Druid、HikariCP...等連接池。服務端連接池是指MySQL-Server的連接層中,自身維護的一個連接池,用來實現線程復用的目的。

重點調整的是客戶端連接池的連接數,MySQL實例一般情況下只為單個項目提供服務,應用程序的連接數做了限制,也就限制了服務端的連接數。但數據庫實例不僅僅只為單個項目提供服務,有時候通過終端工具遠程連接MySQL,MySQL的最大連接數和客戶端連接池的最大連接數保持一致,很有可能導致MySQL連接數爆滿,最終造成終端無法連上MySQL。
客戶端的連接池大小計算公式:最大連接數 = (CPU核心數 * 2) + 有效磁盤數(SSD固態硬盤)

1. 偶發高峰類業務的連接數配置

在某個時間段流量顯然比平時高很多的業務,這類業務常駐線程數不適合太多。并發來臨時會創建大量連接,并發后一直保持數據庫連接會導致資源被占用。這類業務最大連接數按上面的公式配置,常駐連接數可配成CPU核數+1,同時縮短連接存活時間來即使釋放空閑的數據庫連接。

2. 分庫分表情況下的連接數配置

以上提到的都是建立在單庫情況下的配置,對于讀寫分離、雙主雙寫、分庫分表的情況下,就不適合這樣配置。因為部署了多個MySQL節點,意味著擁有墮胎服務器的硬件資源,要根據每個節點的硬件配置規劃處合理的連接數。

總結:

連接層的調優實際上是指調整它的參數,即常駐連接數、最大連接數、空閑連接存活時間以及等待隊列的容量。對于最佳連接數的計算,首先要把CPU核數放首位考慮,緊接著是磁盤,最后是網絡帶寬,因為帶寬會影響SQL執行時間,綜合考慮后計算出最合適的連接數大小。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39756.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39756.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39756.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【leetcode78-81貪心算法、技巧96-100】

貪心算法【78-81】 技巧【96-100】

谷粒商城-個人筆記(集群部署篇二)

前言 ?學習視頻:?Java項目《谷粒商城》架構師級Java項目實戰,對標阿里P6-P7,全網最強?學習文檔: 谷粒商城-個人筆記(基礎篇一)谷粒商城-個人筆記(基礎篇二)谷粒商城-個人筆記(基礎篇三)谷粒商城-個人筆記(高級篇一)谷粒商城-個…

【數據結構】02.順序表

一、順序表的概念與結構 1.1線性表 線性表(linear list)是n個具有相同特性的數據元素的有限序列。線性表是?種在實際中廣泛使用的數據結構,常見的線性表:順序表、鏈表、棧、隊列、字符串… 線性表在邏輯上是線性結構&#xff0…

GEE計算遙感生態指數RSEI

目錄 RESI濕度綠度熱度干度源代碼歸一化函數代碼解釋整體的代碼功能解釋:導出RSEI計算結果參考文獻RESI RSEI = f (Greenness,Wetness,Heat,Dryness)其遙感定義為: RSEI = f (VI,Wet,LST,SI)式中:Greenness 為綠度;Wetness 為濕度;Thermal為熱度;Dryness 為干度;VI 為植被指數…

【多媒體】Java實現MP4和MP3音視頻播放器【JavaFX】【音視頻播放】

在Java中播放音視頻可以使用多種方案,最常見的是通過Swing組件JFrame和JLabel來嵌入JMF(Java Media Framework)或Xuggler。不過,JMF已經不再被推薦使用,而Xuggler是基于DirectX的,不適用于跨平臺。而且上述方案都需要使用第三方庫…

拒絕信息差!一篇文章說清Stable Diffusion 3到底值不值得沖

前言 就在幾天前,Stability AI正式開源了Stable Diffusion 3 Medium(以下簡稱SD3M)模型和適配CLIP文件。這家身處風雨飄搖中的公司,在最近的一年里一直處于破產邊緣,就連創始人兼CEO也頂不住壓力提桶跑路。 即便這樣&…

[leetcode]minimum-absolute-difference-in-bst 二叉搜索樹的最小絕對差

. - 力扣(LeetCode) /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(null…

java如何在字符串中間插入字符串

java在字符串中插入字符串,需要用到insert語句 語法格式為 sbf.insert(offset,str) 其中,sbf是任意字符串 offset是插入的索引 str是插入的字符串 public class Insert {public static void main(String[] args) {// 將字符串插入到指定索引StringBuffer sbfn…

FFmpeg5.0源碼閱讀——格式檢測

摘要:在拿到一個新的格式后,FFmpeg總是能夠足夠正確的判斷格式的內容并進行相應的處理。本文在描述FFmpeg如何進行格式檢測來確認正在處理的媒體格式類型,并進行相應的處理。 ??關鍵字:FFmpeg,format,probe 在調用FFmpeg的APIav…

變量的定義和使用

1.定義 變量,就是用來表示數據的名字 Python 中定義變量非常簡單,只需將數據通過等號()賦值給一個符合命名規范的標識符即可 name"Camille" name 123 變量的使用 變量的使用是指在程序中引用一個已經定義的變量。 例如,如果…

LeetCode 196, 73, 105

目錄 196. 刪除重復的電子郵箱題目鏈接表要求知識點思路代碼 73. 矩陣置零題目鏈接標簽簡單版思路代碼 優化版思路代碼 105. 從前序與中序遍歷序列構造二叉樹題目鏈接標簽思路代碼 196. 刪除重復的電子郵箱 題目鏈接 196. 刪除重復的電子郵箱 表 表Person的字段為id和email…

昇思MindSpore學習總結七——模型訓練

1、模型訓練 模型訓練一般分為四個步驟: 構建數據集。定義神經網絡模型。定義超參、損失函數及優化器。輸入數據集進行訓練與評估。 現在我們有了數據集和模型后,可以進行模型的訓練與評估。 2、構建數據集 首先從數據集 Dataset加載代碼&#xff0…

檢測站機動車授權簽字人試題附答案

16、___的輪胎胎冠上花紋深度不得小于3.2mm。( ) A、乘用車 B、摩托車 C、貨車的轉向輪(正確答案) D、掛車 17、最大設計時速≥100km/h的機動車其轉向盤自由轉動量不大于__。( ) A、30 度 B、20 度(正確答案) C、45 度 D、40度…

在windows上安裝objection

安裝命令pip install objection -i https://mirrors.aliyun.com/pypi/simple hook指定進程 objection -g 測試 explore 進程名不定是包名,也可能是app名字,如“測試”就是app的名字 若出現如下錯誤,說明python 缺少setuptools 直接安裝setu…

擲骰子游戲 、 求絕對值,平方根,對數,正弦值 題目

題目 JAVA33 擲骰子游戲分析:代碼: JAVA34 求絕對值,平方根,對數,正弦值分析:代碼: JAVA33 擲骰子游戲 描述開發一個擲骰子游戲,即每次運行程序時,產生一個[1,6]之間的隨…

秋招突擊——設計模式補充——單例模式、依賴倒轉原則、工廠方法模式

文章目錄 引言正文依賴倒轉原則工廠方法模式工廠模式的實現簡單工廠和工廠方法的對比 抽線工廠模式最基本的數據訪問程序使用工廠模式實現數據庫的訪問使用抽象工廠模式的數據訪問程序抽象工廠模式的優點和缺點使用反射抽象工廠的數據訪問程序使用反射配置文件實現數據訪問程序…

檢索增強生成RAG系列6--RAG提升之查詢結構化(Query Construction)

系列5中講到會講解3個方面RAG的提升,它們可能與RAG的準確率有關系,但是更多的它們是有其它用途。本期來講解第二部分:查詢結構化(Query Construction)。在系列3文檔處理中,我們著重講解了文檔解析&#xff…

C++ dll導出類的方法

要在C動態庫中導出類,可以使用以下步驟: 定義一個類并實現其成員函數。在類的聲明前加上__declspec(dllexport)標記(Windows平臺)或__attribute__((visibility("default")))標記(Linux平臺)&…

C語言學習筆記--第一個程序

第一個C語言程序 #include<stdio.h> //引用輸入輸出頭文件&#xff0c;每一次都需要引用這個文件 //.h是頭文件 // .c是源文件 // .cpp是C源文件&#xff0c;兼容C //C的第一個程序 // 行注釋&#xff08;只能注釋這一行&#xff09; /*塊注釋 */ int main() {printf(&…

能保存到相冊的風景視頻在哪下載?下載風景視頻網站分享

在當今以視覺為核心的時代&#xff0c;高清美麗的風景視頻不僅能夠豐富我們的日常生活&#xff0c;還能提供心靈上的慰藉。無論是為了制作視頻項目&#xff0c;還是僅僅想要珍藏一些精美的風景畫面&#xff0c;獲取高質量的風景視頻素材顯得尤為重要。許多人可能會問&#xff1…