本系列為:MySQL資料庫詳解,為千鋒資深教學老師獨家創作,致力於為大家講解清晰MySQL資料庫相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關註】持續追更 ...
本系列為:MySQL資料庫詳解,為千鋒資深教學老師獨家創作,致力於為大家講解清晰MySQL資料庫相關知識點,含有豐富的代碼案例及講解。如果感覺對大家有幫助的話,可以【關註】持續追更~
文末有本文重點總結,技術類問題,也歡迎大家和我們溝通交流!
前言
從今天開始本系列文章就帶各位小伙伴學習資料庫技術。資料庫技術是Java開發中必不可少的一部分知識內容。也是非常重要的技術。本系列教程由淺入深, 全面講解資料庫體系。 非常適合零基礎的小伙伴來學習。
全文大約【1853】 字,不說廢話,只講可以讓你學到技術、明白原理的純乾貨!本文帶有豐富案例及配圖視頻,讓你更好的理解和運用文中的技術概念,並可以給你帶來具有足夠啟迪的思考...
一. 優化介紹
在進行優化講解之前,鄭重的和各位小伙伴說,本課程只是給大家提供一些優化方面的方向和思路,而具體業務場景的不同,使用的MySQL服務版本不同,都會使得優化方案的制定也不同。優化不存在按照某種方式去做就一定好用的絕對真理。
1. MySQL介紹
MySQL憑藉著出色的性能、低廉的成本、豐富的資源,已經成為絕大多數互聯網公司的首選關係型資料庫。
可以看到Google,Facebook,Twitter,百度,新浪,騰訊,淘寶,網易,久游等絕大多數互聯網公司資料庫都是用的MySQL資料庫,甚至將其作為核心應用的資料庫系統。
我們知道一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現性能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作,所以查詢語句的優化顯然是重中之重。
我們將這裡進行一個較為全面的分析,讓大家瞭解到MySQL的性能到底與哪些地方有關,以便於讓大家尋找出其性能問題的根本原因,而儘可能清楚的知道該如何去優化自己的資料庫。
2. 優化可能帶來的問題
優化不總是對一個單純的環境進行,還很可能是一個複雜的已投產的系統!
優化手段有很大的風險,一定要意識到和預見到!
任何的技術可以解決一個問題,但必然存在帶來一個問題的風險!
對於優化來說調優而帶來的問題,控制在可接受的範圍內才是有成果。
保持現狀或出現更差的情況都是失敗!
3. 優化的需求
穩定性和業務可持續性,通常比性能更重要!
優化不可避免涉及到變更,變更就有風險!
優化使性能變好,維持和變差是等概率事件!
優化應該是各部門協同,共同參與的工作,任何單一部門都不能對資料庫進行優化!
4. 優化由誰參與
在進行資料庫優化時,應由資料庫管理員、業務部門代表、應用程式架構師、應用程式設計人員、應用程式開發人員、硬體及系統管理員、存儲管理員等,業務相關人員共同參與。
5. 優化的方向
在資料庫優化上有兩個主要方向:即安全與性能。
安全:數據安全性。
性能:數據的高性能訪問。
本課程主要是在性能優化方向進行介紹。
6. 優化的維度
從上圖中可以看出,我們把資料庫優化分為四個緯度:硬體,系統配置,資料庫表結構,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調試,查看語句執行時間。
調整索引或語句本身。
二. 結語
在這裡對本文核心要點進行總結:
- 各位小伙伴要謹記優化前一定要備份各種數據規避各種風險再動手優化尤其是線上伺服器。
- 根據優化的效果與思路進行優化,不斷調整,優化沒有一成不變的東西,具體問題具體分析。
三. 配套視頻
如果你不習慣閱讀技術文章,或是對文中的技術概念不能很好地理解,可以來看看幫你篩選出的視頻教程。與本文配套的Java學習視頻,戳我直達