原文出自:
開發俏皮話
【讓我 996 不算啥,我只怕測試也 996 給我提 bug!】
筆者矚望
你好,無論我們在現實生活中是否相識,在 InfoQ 的世界里終會快樂相遇 , 在此提前預祝國慶節快樂,并且在屬于我們的“1024”那天不在加班 , 早點回家陪陪老婆和孩子啊 。
技術金字塔
本篇文章會按照自上而下以及自下而上的兩種方向去“游覽”【MySQL 技術金字塔】 , 兩個方向分別是從成本出發的(潛臺詞就是便宜越好,照顧公司成本哦?。? ,本章內容,可能有點多 , 希望大家慢慢消化 , 實在不行來片“嗎丁啉”,哈哈,開玩笑了!
主要技術分布為 6 大部分,如下圖金子圖所示:
研發成本角度
從軟件的【研發成本】的角度而言:伴隨著優化的方向,從金字塔頂部像金字塔底部的方向進行過度,伴隨著高度越來越低,成本會越來越低,這個方向其實是非常考驗技術人員與項目管理者的能力的 , 但是它確實,老板對象看到的,哈哈 。
實現效果角度
從軟件的【技術可行性和效果】的角度而言:伴隨著優化的方向,從金字塔低部像金字塔頂部的方向進行過度,伴隨著高度越來越高 , 成本會越來越高,耗費的財力和人力也會相對的有所降低,但是如果多花錢,老板肯定不愿意 , 比如,請一些行業大牛或者一些牛掰的服務器等,可以看出來正好與上面的方向相反 。
總結一下,以上這兩點的方針 , 遵循著研發成本的越來越低+效果方案越來越高 , 那么我們就劃分出一個公式,作為系統服務調優方法論,我們就按照金字塔層面,進行自下而上進行調優!我們接下來就來按照這個方向進行分析 。
調優白皮書
SQL 調優
根據業務需求,不單純的寫好 SQL 語句,還要對 SQL 語句進行調優,使得其性能變得最佳化 。
調優思路
由三個步驟組成:發現問題、分析問題和解決問題 。
發現慢 SQL 及日志
查詢慢 SQL 的日志是 MySQL 內置的一個功能,可以記錄執行時間超過我們配置閾值的 SQL 語句 。
參數與默認值:
修改數據庫服務配置
修改我們安裝后的配置文件 f , 在[]段落中加入以上參數配置:
之后進行重啟服務
修改全局會話配置
這種方式,不需要重啟就可以生效,但是當服務器重啟的時候 , 又會重新丟失配置 。以上的配置可以
將慢查詢 SQL 記錄到 mysql 數據庫中的表中以及對應的的文件中去 。
分析慢 SQL 及日志
分析慢 SQ 的查詢日志
查詢表,當根據上面的設置,當設置為 TABLE 的時候 , 就會將 mysql 的慢查詢日志記錄到 mysql. 表中去mysql索引類型都有哪些,我們可以采用 * from mysql.去進行查詢,可以根據此方面進行分析和統計 sql 的執行性能 。
分析慢 SQL 日志文件
當設置為 FILE 的時候 , 因為文件過大,不方便查看,所以可以采用專門的工具進行分析,這里主要介紹原生的工具進行分析,如下圖所示:
【獨一無二的「MySQL 調優金字塔」相信也許你擁有了它,你就贏了】 –help:
命令分析慢 SQL
關鍵字進行執行慢 SQL 語句 , 進行指標分析:
返回的基本結果如下:
查詢類型,如下幾組值:
和類似,只是子查詢使用的是非唯一索引

文章插圖

文章插圖
好了看到這里你是否會覺得已經眼花繚亂了?現在開始重頭戲 , 上面的可以作為知識擴展和了解,但下面的內容建議你一定要理解哦,會對性能優化有很大的幫助哦!
根據聯接類型瀏覽所有行 , 并為所有匹配 WHERE 子句的行保存排序關鍵字和行的指針來完成排序 。然后關鍵字被排序,并按排序順序檢索行 。
在不同版本的變化
show取值
SQL 性能分析
我們主要介紹一下三種:
show
它是 MySQL 的一個性能分析命令,可以跟蹤 SQL 各種資源消耗 。使用格式如下:
SHOW PROFILE [type [, type] ... ] [FOR QUERY n][LIMIT row_count [OFFSET offset]]復制代碼
默認情況下mysql索引類型都有哪些 , show只展示和兩列,如果想展示更多信息,可指定 type,使用步驟如下:
select @@have_profiling;復制代碼
select @@profiling;復制代碼
set profiling=1復制代碼
Show命令
首先使用show 分析指定查詢:
使用 show進行分析,默認情況下,只展示和兩列,如果想展示更多信息,可指定 type 。
使用 SHOWFOR QUERY 1;,1 代表的 (show )
展示 CPU 相關的開銷
分析完成后,記得關閉掉 SHOW功能:
. 用來做性能分析,內容對應 SHOW和 SHOW語句產生的信息,SHOW本質上使用的也是 . 表 。
表字段
查詢
. 表已被廢棄,在未來可能會被刪除 。未來將可使用替代,
是 MySQL 建議的性能分析方式,未來 show /show 、 . 都會廢棄 。
在 .6 及更高版本才能使用 。可以使用 show進行查看 。
下面來用去實現 show類似的效果: 查看是否開啟性能監控
查看啟用情況,MySQL 5.7 開始默認啟用 。
你也可以執行類似如下的 SQL 語句,只監控指定用戶執行的 SQL:
這樣 , 就只會監控機器上用戶發送過來的 SQL 。其他主機、其他用戶發過來的 SQL 統統不監控,執行如下 SQL 語句 , 開啟相關監控項:
使用開啟監控的用戶,執行 SQL 語句,比如:
執行如下 SQL,獲得語句的。
這一步類似于 show。執行如下 SQL 語句做性能分析,這樣就可以知道這條語句各種階段的信息了 。
三種方式對比與選擇
MySQL 官方文檔聲明 SHOW已被廢棄,并建議使用作為替代品 。,目前可以繼續用 SHOW了解 , 為未來做好準備
相關參數
緩存技術分析
MySQL 的 IO 持久化的將耗費大量資源 。所以采用基于內存的 redis 會更好!
總結分析
具體的分析性能介紹后續會在【舉世無雙的「MySQL 調優金字塔」相信也許你擁有了它,你就很可能擁有了全世界 。】進行深入介紹,此外還會伴有對索引原理的深入理解和分析 。
本文到此結束,希望對大家有所幫助 。
- ?比鴨子大比鵝小的家禽叫什么
- ?白芝麻的營養價值與功效
- 傷心難過的時候該怎么辦 ?當一個人很難過的時候怎么辦
- ?媒體時代的三件法寶是指
- ?玻利維亞哪國的
- ?名揚天下指的什么動物
- ?盤點那些演技炸裂的演員
- ?冰塊敷臉的正確方法
- 別人問你暗戀誰怎么回答 ?當你喜歡的人問你喜歡誰怎么回復
- ?超級本和筆記本的區別
