大牛带你学优化~案例进阶Mysql优化
在進行 MySQL 的優化之前必須要了解的就是 MySQL 的查詢過程,很多的查詢優化工作實際上就是遵循一些原則讓 MySQL 的優化器能夠按照預想的合理方式運行而已。
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_name\G創建索引
CREATE [UNIQUE ] INDEX indexName ON mytable(columnname(length));
ALTER TABLE 表名 ADD [UNIQUE ] INDEX [indexName] ON (columnname(length))刪除索引
DROP INDEX [indexName] ON mytable;
最后送波福利。現在加入Java高階架構即可獲取Java工程化、高性能及分布式、高性能、高架構、zookeeper、性能調優、Spring、MyBatis、Netty源碼分析和大數據等多個知識點高級進階干貨的直播免費學習權限及相關視頻資料
轉載于:https://juejin.im/post/5cc705405188255f1d7e976f
總結
以上是生活随笔為你收集整理的大牛带你学优化~案例进阶Mysql优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: thymeleaf 学习笔记
- 下一篇: linux cmake编译源码,linu