fbpx

MySQL高效能調校指南

像專業人士一樣調校 MySQL 的技巧 | 瞭解如何防止 MySQL 的效能瓶頸問題

從這 3 小時的課程,你會學到

  • 瞭解 MySQL 如何最佳化和執行查詢
  • 找到 MySQL 在你的查詢上花費時間最多的地方,以及為什麼?
  • 找到那些對系統的大部分負載負責的少數查詢
  • 如何從 MySQL 中大量的效能檢視和指標中找到相關資訊?
  • 在執行之前,如何根據統計資料和成本決策自動規劃查詢?
  • 理解什麼是叢集索引( Clustered Index )?
  • 如何選擇最佳主鍵?
  • 找到哪些表 (table)需要索引,哪些表沒有索引會更好
  • 我們如何幫助 MySQL 最佳化器做出更好的決定?
  • 在多列上使用索引時,哪些是常見的誤區?
  • 哪些是使冗餘索引有用的使用案例,以及什麼時候要避免它們?
  • 涵蓋製作伺服器配置的最佳做法
  • 哪些是 MySQL 最有可能從非預設值中受益的三個選項,以及如何設定它們?
  • InnoDB 中的資料生命週期,以便我們在進行配置修改時有背景知識
  • 瞭解為什麼需要 Transactions  和鎖,以及減少其影響的一些方法
  • MySQL 擴充選項介紹
  • 使用複製擴充閱讀的基本概念
  • 如何在 MySQL 中劃分資料
  • 利用佇列和分片擴充寫入的基本概念

要求

  • 你需要使用一台 Windows/Mac/Linux 電腦,有10GB的可用磁碟空間
  • 需要對資料庫物件(如表和索引)有基本的熟悉。
  • 對 Linux 有一定的瞭解會有幫助

課程說明

MySQL 效能調校線上課程課程。

MySQL架構

  • 檢視查詢執行中涉及的步驟
  • Cient/Server 協議如何影響 MySQL
  • 瞭解查詢最佳化器如何開展工作
  • 儲存引擎層如何使 MySQL 獨特

尋找查詢最佳化的候選者

  • 利用 “效能模式”,它是發現需要最佳化的查詢的一個金礦,因為它允許我們測量時間的流向
  • 找到對系統的大部分負載負責的少數查詢。檢查到前 1000 個查詢,通常不值得你去最佳化。
  • 如何從 MySQL 中大量的效能檢視和指標中找到相關資訊
  • 理解為什麼 UPDATE 和 DELETE 語句也是讀,儘管它們主要是寫語句。這將對I/O產生影響,並因此對響應時間產生影響

分析查詢

  • 理解為什麼 MySQL 在每個查詢請求之前都會建立一個查詢計劃
  • 如何閱讀查詢計劃,並瞭解每個基礎節點型別如何在 MySQL 上工作
  • 一系列的例子,顯示如何使用 EXPLAIN 輸出,以確定 MySQL 在你的查詢上花費的時間,以及為什麼要這樣做
  • 為了發現效能問題,需要尋找哪些重要的資訊?

叢集索引和選擇主鍵

  • 當我們使用索引組織的表,如 MySQL 中的表,主索引的選擇是非常重要的
  • 我們將看到主鍵如何影響隨機或順序I/O的數量,二級索引的大小,以及有多少頁需要被讀入緩衝池
  • 我們將理解,為什麼一個最佳的主鍵,相對於叢集索引來說,要儘可能的小(以位元組為單位),保持單調的增長,並將我們經常查詢的行分組,而且彼此之間的距離很近

為效能而編制索引

  • 索引的主要功能是什麼?
  • 我們將看到到底哪些表需要索引,哪些表沒有索引會更好
  • 我們將檢查 MySQL 是如何依靠統計資料來選擇最佳索引的,以及我們如何幫助它做出更好的決定

複合索引

  • 複合索引的常見錯誤
  • 如何決定多列索引的列的順序
  • 能夠推理出索引的工作原理,並根據這種理解而不是經驗法則來選擇索引
  • 哪些是使冗餘索引有用的用例,以及什麼時候應該避免它們
  • 在一些基準上工作,以檢查實際的數字效能

MySQL伺服器配置

  • 透過考慮一些最佳做法,檢查我們應該如何處理 MySQL 配置的變化,以便我們能夠成功地調整MySQL
  • 哪些是 MySQL 最有可能受益的三個選項,來自非預設值,還有如何設定它們
  • 透過對 InnoDB 中的資料生命週期的概述,以便我們在進行配置修改時有背景知識
  • 調整對某些使用情況很重要的參數,例如,用於高併發工作負載的緩衝池例項,以及如何對某些查詢使用並行執行。

MySQL事務和鎖

  • 事務( Transaction )對於確保資料完整性非常重要,但如果使用不當,就會導致嚴重的效能問題
  • 瞭解為什麼需要鎖和一些減少其影響的方法。
  • 索引、拆分事務和隔離級別如何幫助減少鎖的數量
  • 監測選項和檢查哪些報告表來發現鎖問題

擴充 MySQL 的介紹

  • 擴充套件 MySQL 意味著什麼,並且,我們將走過我們可能需要擴充的不同軸線。
  • 理解如何擴充不同型別的負載
  • 複製以及為什麼我們需要利用讀取池、健康檢查和服務發現。
  • 當決定對資料庫進行分片時,哪些是主要的關注點和隱患?
  • 如何在 MySQL 中劃分資料
  • 哪些是使用佇列的用例和優勢?
  • 用分片法擴充寫入的基本概念

目標受眾

  • 對影響應用設計和效能的高階資料庫內部結構感興趣的開發人員
  • 資料庫管理員
  • 對建立更好的MySQL應用感興趣的所有人

講師簡介

Lucian Oprea 軟體工程師 ( 更多講師課程介紹 )

我是一名來自羅馬尼亞的軟體工程師,有很強的電腦科學背景,有超過8年的專業經驗。

我熱衷於開發易於使用、智慧和架構良好的產品。我提倡編寫遵循最佳設計實踐的精心製作的程式碼。我力求把同樣的熱情和完整的水平帶到教學中。

英文字幕:有

  • 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To

報名參加課程

Sponsored by Udemy


🛫使用關鍵字連結獲得更多線上學習資訊?請參考這個網頁說明


幫我們個小忙!

使用 e-mail 追蹤 Soft & Share

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: