一個月過去了五督,【mysql優(yōu)化專題】圍繞著mysql優(yōu)化進行了十三篇的優(yōu)化文章绵载,下面進行一次完整的總結(jié)!我嘗試用最簡短最通俗易懂的話闡述明白每篇文章乘盖,讓本專題畫上完美的句號!堅持到文末憔涉,留下你寶貴的評論订框!
目錄:
一、為什么要進行mysql優(yōu)化兜叨?(重點)
二穿扳、增刪改優(yōu)化,多數(shù)人都會忽略的優(yōu)化
三浪腐、關(guān)于單表查詢纵揍,可以這么優(yōu)化
四、關(guān)于多表查詢议街,不得不看的優(yōu)化
五泽谨、索引優(yōu)化(重點中的重點)
六、表的優(yōu)化特漩,分表分庫(重點)
七吧雹、存儲過程和存儲函數(shù)教學(xué)
八、視圖應(yīng)用優(yōu)化詳解
九涂身、引擎(InnoDB,MyISAM)的內(nèi)存優(yōu)化
十雄卷、通過慢查詢?nèi)罩径ㄎ粌?yōu)化
十一、滿分主從復(fù)制面試寶典(重點)
十二蛤售、高可用性丁鹉、負(fù)載均衡的mysql集群解決方案(重點)
一、這大概是一篇最好的mysql優(yōu)化入門文章(1)
為什么要進行mysql優(yōu)化悴能?究竟在優(yōu)化什么揣钦。這篇為你開啟入門之旅。
增刪改優(yōu)化冯凹,大多數(shù)人都會忽略的優(yōu)化。
三炒嘲、單表查詢優(yōu)化的一些小總結(jié)宇姚,非索引設(shè)計(3)
查詢緩存匈庭,不要濫用語句,等等浑劳,這里有一些關(guān)于單表查詢的總結(jié)阱持。值得一看。
四呀洲、你們要的多表查詢優(yōu)化來啦紊选!請查收(4)
應(yīng)盡量避免在 where 子句中對字段進行 null 值判斷,否則將導(dǎo)致引擎放棄使用索引而進行全表掃描道逗。
還有很多很多的點我們需要注意,詳細內(nèi)容請點擊第四篇献烦。
五滓窍、索引優(yōu)化:90%程序員面試都用得上的索引優(yōu)化手冊(5)
關(guān)于索引,分為以下幾點來講解:
1巩那、索引的概述(什么是索引,索引的優(yōu)缺點)
2吏夯、索引的基本使用(創(chuàng)建索引)
3、索引的基本原理(面試重點)
4即横、索引的數(shù)據(jù)結(jié)構(gòu)(B樹噪生,hash)
5、創(chuàng)建索引的原則(重中之重东囚,面試必問跺嗽!敬請收藏!)
掌握了以上重點页藻,索引l優(yōu)化還有什么難得到你呢桨嫁?
六、優(yōu)化之路高級進階——表的設(shè)計及優(yōu)化(6)
關(guān)于表的優(yōu)化份帐,那就有更多的內(nèi)容可以優(yōu)化了璃吧,小到字段屬性的選取,三放式的取舍废境,大到分庫分表畜挨,增量查詢等等,互聯(lián)網(wǎng)大型分布式項目噩凹,怎么可能再跟以前一樣粗陋巴元?作為準(zhǔn)備進階架構(gòu)師的你,好意思說表都搞不定栓始?
七务冕、90%程序員沒聽過的存儲過程和存儲函數(shù)教學(xué)(7)
儲存過程是一個可編程的函數(shù),它在數(shù)據(jù)庫中創(chuàng)建并保存幻赚。它可以有SQL語句和一些特殊的控制結(jié)構(gòu)組成禀忆。當(dāng)希望在不同的應(yīng)用程序或平臺上執(zhí)行相同的函數(shù)臊旭,或者封裝特定功能時,存儲過程是非常有用的箩退。
八离熏、視圖應(yīng)用竟然還可以這么優(yōu)化?不得不收藏(8)
什么是視圖戴涝?視圖是基于 SQL 語句的結(jié)果集的可視化的表滋戳。視圖并不在數(shù)據(jù)庫中以存儲的數(shù)據(jù)值集形式存在,而是存在于實際引用的數(shù)據(jù)庫表中啥刻,視圖的構(gòu)成可以是單表查詢奸鸯,多表聯(lián)合查詢,分組查詢以及計算(表達式)查詢等可帽。
九娄涩、詳解引擎(InnoDB,MyISAM)的內(nèi)存優(yōu)化攻略?(9)
InnoDB用一塊內(nèi)存區(qū)域做I/O緩存池映跟,該緩存池不僅用來緩存InnoDB的索引塊蓄拣,而且也用來緩存InnoDB的數(shù)據(jù)塊。
十努隙、什么是慢查詢球恤?如何通過慢查詢?nèi)罩緝?yōu)化?(10)
MySQL會記錄下查詢超過指定時間的語句荸镊,我們將超過指定時間的SQL語句查詢稱為慢查詢咽斧。mysql中有許許多多的日志,錯誤日志贷洲,通用日志收厨,更新日志,二進制日志(就是用來進行主從復(fù)制的日志)优构,慢查詢?nèi)罩?/b>等诵叁。
十一、主從復(fù)制面試寶典钦椭!面試官都沒你懂得多拧额!(11)
1、什么是主從復(fù)制
2彪腔、主從復(fù)制的作用(重點)
3侥锦、主從復(fù)制的原理(重中之重)
4、三步輕松構(gòu)建主從
5德挣、必問面試題干貨分析(最最重要的點)
十二恭垦、高可用性、負(fù)載均衡的mysql集群解決方案(12)
一個龐大的分布式系統(tǒng)的性能瓶頸中,最脆弱的就是連接番挺。連接有兩個唠帝,一個是客戶端與后端的連接,另一個是后端與數(shù)據(jù)庫的連接玄柏〉涤疲客戶端與后端中可以利用類似nginx的負(fù)載均衡解決藏雏,而數(shù)據(jù)庫層是最脆弱的一層氓扛,一般在應(yīng)用設(shè)計時在上游就需要把請求攔截掉算墨,數(shù)據(jù)庫層只承擔(dān)“能力范圍內(nèi)”的訪問請求,所以徘意,我們通過在服務(wù)層引入隊列和緩存苔悦,讓最底層的數(shù)據(jù)庫高枕無憂。
如果請求激增,還是有大量的查詢壓力到MySQL怎么辦呢映砖?
這時候间坐,集群出現(xiàn)了。在后端與數(shù)據(jù)庫中我們可以利用類似mycat的負(fù)載均衡實現(xiàn)mysql集群邑退,提高mysql的總體性能。(可用組合很多劳澄,如LVS+keepalived組合地技、haproxy+keepalived組合)
最后的總結(jié):
mysql的問題其實是由于一系列的軟肋決定的,所以不得不利用中間件或者其它方案去解決秒拔,包括:
在強制約束和事務(wù)與全文索引之間做出選擇(InnoDb vs MyISAM)
在客戶機代碼中“模擬”事務(wù)是不容易的
如果不執(zhí)行約束莫矗,就很容易得到不一致的db狀態(tài)
如果沒有全文搜索,會變得瘋狂砂缩,比如% y %
必須在更新觸發(fā)器之前創(chuàng)建檢查約束的錯誤
當(dāng)數(shù)據(jù)變得太大時作谚,Mysql的承受能力就不妙了
Mysql創(chuàng)建的執(zhí)行計劃效率低下
Mysql有超過多個連接的問題(最好說多個連接)
但是! Oracle是所有這些問題的解決方案庵芭,它是一個完整的DBMS:事務(wù)妹懒、檢查合同、視圖的很多選項双吆、全文搜索…
所以問題的本質(zhì)是:成本眨唬!解決大部分問題,換個Oracle就行了好乐。
【mysql優(yōu)化專題】到這里就算完美結(jié)束了匾竿,掌握這些,mysql部分你基本就可以蔚万。如果還想要更深入岭妖,我可以再繼續(xù)深入,看情況吧,人多就繼續(xù)深入昵慌,算是另一個層次假夺。
已完結(jié)專題(關(guān)注后查看):
【mysql優(yōu)化專題】【多線程/池專題】【架構(gòu)技術(shù)專題】
更新中專題(關(guān)注后查看):
【dubbo專題】【dubbo源碼專題】【JVM專題】【HTTP協(xié)議專題】【設(shè)計模式專題】
【高并發(fā)專題】【架構(gòu)技術(shù)專題】【netty專題】【數(shù)據(jù)結(jié)構(gòu)專題】【redis專題】