MySQL優化思路及方向

来源:https://www.cnblogs.com/qian-fen/archive/2023/05/29/17439922.html
-Advertisement-
Play Games

本系列為:MySQL資料庫詳解,為千鋒資深教學老師獨家創作,致力於為大家講解清晰MySQL資料庫相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關註】持續追更 ...


本系列為:MySQL資料庫詳解,為千鋒資深教學老師獨家創作,致力於為大家講解清晰MySQL資料庫相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關註】持續追更~

文末有本文重點總結,技術類問題,也歡迎大家和我們溝通交流!

前言

從今天開始本系列文章就帶各位小伙伴學習資料庫技術。資料庫技術是Java開發中必不可少的一部分知識內容。也是非常重要的技術。本系列教程由淺入深, 全面講解資料庫體系。 非常適合零基礎的小伙伴來學習。


全文大約【1853】 字,不說廢話,只講可以讓你學到技術、明白原理的純乾貨!本文帶有豐富案例及配圖視頻,讓你更好的理解和運用文中的技術概念,並可以給你帶來具有足夠啟迪的思考...

一. 優化介紹

在進行優化講解之前,鄭重的和各位小伙伴說,本課程只是給大家提供一些優化方面的方向和思路,而具體業務場景的不同,使用的MySQL服務版本不同,都會使得優化方案的制定也不同。優化不存在按照某種方式去做就一定好用的絕對真理。

1. MySQL介紹

MySQL憑藉著出色的性能、低廉的成本、豐富的資源,已經成為絕大多數互聯網公司的首選關係型資料庫。

可以看到Google,Facebook,Twitter,百度,新浪,騰訊,淘寶,網易,久游等絕大多數互聯網公司資料庫都是用的MySQL資料庫,甚至將其作為核心應用的資料庫系統。

我們知道一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現性能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,所以查詢語句的優化顯然是重中之重。

我們將這裡進行一個較為全面的分析,讓大家瞭解到MySQL的性能到底與哪些地方有關,以便於讓大家尋找出其性能問題的根本原因,而儘可能清楚的知道該如何去優化自己的資料庫。

2. 優化可能帶來的問題

優化不總是對一個單純的環境進行,還很可能是一個複雜的已投產的系統!

優化手段有很大的風險,一定要意識到和預見到!

任何的技術可以解決一個問題,但必然存在帶來一個問題的風險!

對於優化來說調優而帶來的問題,控制在可接受的範圍內才是有成果。

保持現狀或出現更差的情況都是失敗!

3. 優化的需求

穩定性和業務可持續性,通常比性能更重要!

優化不可避免涉及到變更,變更就有風險!

優化使性能變好,維持和變差是等概率事件!

優化應該是各部門協同,共同參與的工作,任何單一部門都不能對資料庫進行優化!

4. 優化由誰參與

在進行資料庫優化時,應由資料庫管理員、業務部門代表、應用程式架構師、應用程式設計人員、應用程式開發人員、硬體及系統管理員、存儲管理員等,業務相關人員共同參與。

5. 優化的方向

在資料庫優化上有兩個主要方向:即安全與性能。

安全:數據安全性。

性能:數據的高性能訪問。

本課程主要是在性能優化方向進行介紹。

6. 優化的維度

截屏2023-05-29 11.03.37.png

從上圖中可以看出,我們把資料庫優化分為四個緯度:硬體,系統配置,資料庫表結構,SQL及索引。

硬體: CPU、記憶體、存儲、網路設備等。

系統配置: 伺服器系統、資料庫服務參數等。

資料庫表結構: 高可用、分庫分表、讀寫分離、存儲引擎、表設計等。

SQL及索引: sql語句、索引使用等。

從優化成本進行考慮: 硬體>系統配置>資料庫表結構>SQL及索引。

從優化效果進行考慮: 硬體<系統配置<資料庫表結構<SQL及索引。

7. 資料庫使用優化思路

在這裡儘可能的全面介紹資料庫的調優思路,但是在多數時候,我們進行調優不需要進行這麼全面、大範圍的調優,一般情況下,我們進行資料庫層面的優化就可以了,那我們該如何調優的呢?

應急調優的思路:

針對突然的業務辦理卡頓,無法進行正常的業務處理!需要立馬解決的場景!

show processlist(查看鏈接session狀態)。

explain(分析查詢計劃),show index from table(分析索引)。

通過執行計劃判斷,索引問題(有沒有、合不合理)或者語句本身問題。

show status like '%lock%'; # 查詢鎖狀態。

SESSION_ID; # 殺掉有問題的session。

常規調優的思路:

針對業務周期性的卡頓,例如在每天10-11點業務特別慢,但是還能夠使用,過了這段時間就好了

查看slowlog,分析slowlog,分析出查詢慢的語句。

按照一定優先順序,進行一個一個的排查所有慢語句。

分析top sql,進行explain調試,查看語句執行時間。

調整索引或語句本身。


二. 結語

在這裡對本文核心要點進行總結:

  1. 各位小伙伴要謹記優化前一定要備份各種數據規避各種風險再動手優化尤其是線上伺服器。
  2. 根據優化的效果與思路進行優化,不斷調整,優化沒有一成不變的東西,具體問題具體分析。

三. 配套視頻

如果你不習慣閱讀技術文章,或是對文中的技術概念不能很好地理解,可以來看看幫你篩選出的視頻教程。與本文配套的Java學習視頻,戳我直達


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

-Advertisement-
Play Games
更多相關文章
  • # Rollup ROLLUP 在多維分析中是“上捲”的意思,即將數據按某種指定的粒度進行進一步聚合。 通過建表語句創建出來的表稱為 Base 表(Base Table,基表) 在 Base 表之上,我們可以創建任意多個 ROLLUP 表。這些 ROLLUP 的數據是基於 Base 表產生的,並且在 ...
  • 《中外詩歌精品收藏ACCESS資料庫》共收錄中外經典詩歌14000首、詩歌知識500餘條。古今中外經典詩詞曲一網打盡。包含中國先秦到近當代的作品如詩經、古詩、南北朝民歌、唐詩、宋詞、元曲、近當代的自由詩 和世界各國著名詩人如拜倫、莎士比亞、雪萊、泰戈爾、裴多菲、普希金、狄金森、歌德、海涅等的經典名作 ...
  • 摘要:遷移前後結果集row_number欄位值前後不一致,前在DWS上運行不一致。 本文分享自華為雲社區《GaussDB(DWS)遷移 - oracle相容 --row_number輸出結果不一致》,作者:譡里個檔 。 【問題表現】 遷移前後結果集row_number欄位值前後不一致,前在DWS上運 ...
  • 本系列為:MySQL資料庫詳解,為千鋒資深教學老師獨家創作,致力於為大家講解清晰MySQL資料庫相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關註】持續追更~文末有本文重點總結,技術類問題,也歡迎大家和我們溝通交流! ...
  • 雖然之前已經有了《7千多條周公解夢斷夢秘書ACCESS資料庫》、《4千多周公解夢包含化解方法ACCESS資料庫》等相關的周公解夢的資料庫,但今天發現的周公解夢的記錄數量已經達到了上萬條,雖然分類沒有《7千多條周公解夢斷夢秘書ACCESS資料庫》多,但記錄數多出了不少。 分類情況彙總有:01自然類(6 ...
  • 《上萬條全球各國紙幣大全含圖ACCESS資料庫》是今天採集自錢幣大全網站的紙幣資料,大類包含:中國大陸、中國臺灣、中國香港、中國澳門、亞洲紙鈔、歐洲紙鈔、美洲紙鈔、非洲紙鈔 、大洋洲、其他紙鈔等,而且紙幣信息包含:國家名稱、英文名稱、目錄編號、紙鈔面額、紙鈔年版、紙鈔規格、所屬類別、詳細信息等。 收 ...
  • 我記得之前我採集、提取過兩份菜譜資料資料庫,一份是菜譜數據不上萬的帶圖片的,詳情點擊這裡,一份是2萬多條記錄但格式未整理並且沒有圖片的。而今天的這個3萬多條含圖片的菜譜資料ACCESS資料庫包含了3萬多條常菜譜做法,並且結構簡潔,最主要的是每個菜譜都包含圖片。 菜譜分50個大類和400多種小類,大類 ...
  • 一個學語文的朋友問我有沒有關於中華典故以及萬物由來的數據,我看了看手頭的資料發現還真沒有,而且網上似乎也沒有這一類的成品,因此就用程式採集了一個中華典故網的文章。 分類統計情況有:成語典故(共4198條)、典故雜聞(共702條)、國外典故(共29條)、科學典故(共29條)、歷史典故(共374條)、神 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...