MySql 性能优化
生活随笔
收集整理的這篇文章主要介紹了
MySql 性能优化
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
MySQL 憑借著出色的性能、低廉的成本、豐富的資源,已經(jīng)成為絕大多數(shù)互聯(lián)網(wǎng)公司的首選關(guān)系型數(shù)據(jù)庫(kù)。雖然性能出色,但所謂“好馬配好鞍”,如何能夠更好的使用它,已經(jīng)成為開(kāi)發(fā)工程師的必修課,我們經(jīng)常會(huì)從職位描述上看到諸如“精通 MySQL”、“SQL 語(yǔ)句優(yōu)化”、“了解數(shù)據(jù)庫(kù)原理”等要求。
什么是數(shù)據(jù)庫(kù)的性能
- 用查詢的響應(yīng)時(shí)間度量性能,性能即響應(yīng)時(shí)間。
- 優(yōu)化性能,在一定工作負(fù)載下,降低查詢的響應(yīng)時(shí)間。
性能趨勢(shì)
優(yōu)化方向
- 硬件優(yōu)化
- 操作系統(tǒng)優(yōu)化
- MySql 配置優(yōu)化
- 表結(jié)構(gòu)優(yōu)化
- 適用優(yōu)化
- 架構(gòu)優(yōu)化
硬件優(yōu)化
垂直擴(kuò)展、向上擴(kuò)展,購(gòu)買(mǎi)強(qiáng)悍的硬件獲取更高的性能。
- 無(wú)論使用公有云的RDS,還是自建MySQL,該優(yōu)化方向都是代價(jià)最小的,性能優(yōu)化的首選之一。
- 時(shí)間就是金錢(qián)。
- 人力成本遠(yuǎn)遠(yuǎn)大于硬件成本。
操作系統(tǒng)優(yōu)化
-
IO 調(diào)度策略 - 操作系統(tǒng)與磁盤(pán)的通信方式
- RAID卡策略 – MegaCli工具
- write back
- write through
-
BUU
- swapness,代表權(quán)重,即使設(shè)置0也有可能會(huì)使用swap。
- NUMA,高版本innodb_numa_interleave。
- ulimit
MySql 優(yōu)化配置
- innodb_buffer_pool_size
- innodb_io_capacity
- innodb_thread_concurrency
- innodb_flush_log_at_trx_commit
- sync_binlog
MySql 版本選擇
- MySQL
- Percona
- MariaDB
表結(jié)構(gòu)優(yōu)化
- 最佳實(shí)踐 - bigint類(lèi)型的自增主鍵。
使用優(yōu)化
- 分類(lèi)了四種在使用方面的性能問(wèn)題原因以及出現(xiàn)場(chǎng)景
使用優(yōu)化之 慢查詢
- 現(xiàn)象:負(fù)載增加、慢查數(shù)據(jù)量增加。
- 解決:分析慢查日志,優(yōu)先解決掉掃描行數(shù)大的慢查。
- 預(yù)防:
使用優(yōu)化之 并發(fā)量
- 現(xiàn)象:負(fù)載陡增、QPS/TPS增加、thread_running增加。
- 解決:架構(gòu)優(yōu)化,過(guò)載保護(hù),安全防護(hù)。
- 業(yè)務(wù)場(chǎng)景預(yù)防:容量壓測(cè)、業(yè)務(wù)評(píng)估,找到熱點(diǎn)數(shù)據(jù)、熱點(diǎn)操作,隔離、緩存、限流。
使用優(yōu)化之 數(shù)據(jù)量
- 現(xiàn)象:負(fù)載增加,某個(gè)表慢查數(shù)量增加。
- 解決:分析慢查日志,定位數(shù)據(jù)量異常的表。
- 預(yù)防:監(jiān)控?zé)o索引使用的查詢。
使用優(yōu)化之 執(zhí)行計(jì)劃
- 現(xiàn)象:負(fù)載增加,某個(gè)id的慢查數(shù)量增加。
- 原因:因?yàn)椴蓸诱`差、延后,靜態(tài)模型,優(yōu)化器會(huì)判斷失誤。
- 解決:
- 分析慢查,同一類(lèi)慢查掃描行數(shù)max與min之差如果該值過(guò)大,需要注意。
- SQL中加入提示詞,STRAIGHT_JOIN、FORCE_INDEX等。
- 預(yù)防:避免、監(jiān)控?cái)?shù)據(jù)傾斜情況發(fā)生。
使用優(yōu)化之 pt-query-digest
- 為每類(lèi)SQL生成fingerprint,很方便構(gòu)建SQL指紋庫(kù)。
- 方便做二次修改或者包一層。
架構(gòu)優(yōu)化
- 演進(jìn)方向
架構(gòu)優(yōu)化-以秒殺為例
- 熱點(diǎn)操作
- 讀操作
- 寫(xiě)操作
-
- 發(fā)現(xiàn)熱點(diǎn)數(shù)據(jù)
- 靜態(tài)數(shù)據(jù),可以提前預(yù)測(cè)的熱點(diǎn)數(shù)據(jù)。
- 動(dòng)態(tài)數(shù)據(jù),不可預(yù)測(cè)的熱點(diǎn)數(shù)據(jù)。
- 處理熱點(diǎn)數(shù)據(jù)的常見(jiàn)方法 - 緩存、限流
總結(jié)
想要做好數(shù)據(jù)庫(kù)優(yōu)化,就要先做好測(cè)量(監(jiān)控)。
監(jiān)控盡可能的全面(KV,事件類(lèi),日志類(lèi)),用數(shù)據(jù)說(shuō)話。
分享鏈接:https://ke.qq.com/course/404589?taid=3237791161265261&tuin=1d644a5
轉(zhuǎn)載于:https://www.cnblogs.com/reboot51/p/10869890.html
總結(jié)
以上是生活随笔為你收集整理的MySql 性能优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 物联网初步之电阻性电路分析 第三部分 电
- 下一篇: 如何解决区块链钱包更新慢问题?