大牛帶你學優化~案例進階Mysql優化

在進行 MySQL 的優化以前必需要了解的就是 MySQL 的查詢過程,不少的查詢優化工做實際上就是遵循一些原則讓 MySQL 的優化器可以按照預想的合理方式運行而已。sql

MySQL 查詢過程數據庫

優化的哲學安全

注:優化有風險,修改需謹慎。網絡

  • 優化可能帶來的問題:
  • 優化不老是對一個單純的環境進行,還極可能是一個複雜的已投產的系統。
  • 優化手段原本就有很大的風險,只不過你沒能力意識到和預見到。
  • 任何的技術能夠解決一個問題,但必然存在帶來一個問題的風險。
  • 對於優化來講解決問題而帶來的問題,控制在可接受的範圍內纔是有成果。
  • 保持現狀或出現更差的狀況都是失敗。

優化的需求:架構

  • 穩定性和業務可持續性,一般比性能更重要。
  • 優化不可避免涉及到變動,變動就有風險。
  • 優化使性能變好,維持和變差是等機率事件。
  • 切記優化,應該是各部門協同,共同參與的工做,任何單一部門都不能對數據庫進行優化。

因此優化工做,是由業務需求驅使的!分佈式

優化由誰參與?在進行數據庫優化時,應由數據庫管理員、業務部門表明、應用程序架構師、應用程序設計人員、應用程序開發人員、硬件及系統管理員、存儲管理員等,業務相關人員共同參與。源碼分析

優化思路性能

優化什麼學習

在數據庫優化上有兩個主要方面:大數據

  • 安全:數據可持續性。
  • 性能:數據的高性能訪問。

優化的範圍有哪些

存儲、主機和操做系統方面:

  • 主機架構穩定性
  • I/O 規劃及配置
  • Swap 交換分區
  • OS 內核參數和網絡問題

應用程序方面:

  • 應用程序穩定性
  • SQL 語句性能
  • 串行訪問資源
  • 性能欠佳會話管理
  • 這個應用適不適合用 MySQL

數據庫優化方面:

  • 內存
  • 數據庫結構(物理&邏輯)
  • 實例配置

說明:無論是設計系統、定位問題仍是優化,均可以按照這個順序執行。

優化維度

數據庫優化維度有以下四個:

  • 硬件
  • 系統配置
  • 數據庫表結構
  • SQL 及索引

優化選擇:

  • 優化成本:硬件>系統配置>數據庫表結構>SQL 及索引。
  • 優化效果:硬件<系統配置<數據庫表結構

在這裏我爲你們準備一節sql的國防大學大牛精彩分享
視頻內容以下;
1.從實戰中來,分析SQL常見深坑;
2.優化全圖譜,從0開始;
3.索引的語法精解;
4.索引的雷區,用了索引效率會更慢?
5.30分鐘精通執行計劃;

一個SQL引起的思考

最簡單的索引

稍微複雜點的索引

索引分類

  • 普通索引:即一個索引只包含單個列,一個表能夠有多個單列索引
  • 惟一索引:索引列的值必須惟一,但容許有空值
  • 複合索引:即一個索引包含多個列
  • 聚簇索引(彙集索引):並非一種單獨的索引類型,而是一種數據存儲方式。具體細節取決於不一樣的實現,InnoDB的聚簇索引其實就是在同一個結構中保存了B-Tree索引(技術上來講是B+Tree)和數據行。
  • 非聚簇索引:不是聚簇索引,就是非聚簇索引
    show global variables like "%datadir%";

基礎語法

  • 查看索引
    SHOW INDEX FROM table_nameG
  • 建立索引

CREATE [UNIQUE ] INDEX indexName ON mytable(columnname(length));
ALTER TABLE 表名 ADD [UNIQUE ] INDEX [indexName] ON (columnname(length))

  • 刪除索引

DROP INDEX [indexName] ON mytable;

最後送波福利。如今加入Java高階架構qun;603619042,便可獲取Java工程化、高性能及分佈式、高性能、高架構、zookeeper、性能調優、Spring、MyBatis、Netty源碼分析和大數據等多個知識點高級進階乾貨的直播免費學習權限及相關視頻資料

相關文章
相關標籤/搜索