WOT吳炳錫:奠定MYSQL江湖地位的開發(fā)注意事項(xiàng)
原創(chuàng)MYSQL對(duì)于大多數(shù)IT從業(yè)者來(lái)說(shuō)并不是一個(gè)陌生的詞匯,早在十幾年前隨著互聯(lián)網(wǎng)SNS的興起,MySQL數(shù)據(jù)庫(kù)就開始***風(fēng)騷,直至今日,它依舊是市場(chǎng)占有率***的關(guān)系數(shù)據(jù)庫(kù)。
隨著不斷地發(fā)展壯大,業(yè)界開始越來(lái)越重視MYSQL數(shù)據(jù)庫(kù),現(xiàn)在看來(lái)不只是互聯(lián)網(wǎng)企業(yè)在用MYSQL數(shù)據(jù)庫(kù),金融企業(yè)也在用MYSQL數(shù)據(jù)庫(kù),一些傳統(tǒng)企業(yè)也加入了MYSQL數(shù)據(jù)庫(kù)使用的陣營(yíng)中,基本上所有數(shù)據(jù)庫(kù)的相關(guān)場(chǎng)景里都能看到MYSQL的影子。
那么問(wèn)題來(lái)了,究竟是什么原因使得MYSQL的出鏡率如此之高?關(guān)于這個(gè)問(wèn)題,WOT2016互聯(lián)網(wǎng)運(yùn)維與開發(fā)者峰會(huì)特邀講師、知數(shù)堂培訓(xùn)創(chuàng)始人吳炳錫將基于MYSQL開發(fā)注意事項(xiàng)的角度來(lái)為我們進(jìn)行講解。
吳炳錫,知數(shù)堂培訓(xùn)創(chuàng)始人,中國(guó)CMUG核心組織者,10年+專職MySQL DBA,熟悉MySQL高可用方案與多機(jī)房架構(gòu)設(shè)計(jì)及運(yùn)維,擁有豐富的自動(dòng)化平臺(tái)開發(fā)及實(shí)踐經(jīng)驗(yàn)。
為不同的行業(yè)提供不同的MYSQL應(yīng)用場(chǎng)景
吳炳錫老師談到,不同行業(yè)的業(yè)務(wù)有不同的特點(diǎn),選擇好一個(gè)適合自己行業(yè)的MYSQL應(yīng)用場(chǎng)景至關(guān)重要。
- 互聯(lián)網(wǎng)行業(yè)
速度一直都是互聯(lián)網(wǎng)發(fā)展的***要義,互聯(lián)網(wǎng)行業(yè)所使用的數(shù)據(jù)庫(kù)特點(diǎn)簡(jiǎn)要概括就是一個(gè)字:快!響應(yīng)速度快,性能高。
- 金融行業(yè)
金融行業(yè)更加注重?cái)?shù)據(jù)的穩(wěn)定和安全,對(duì)于一致性的要求是眾多行業(yè)中***的。選擇集群,數(shù)據(jù)庫(kù)配置里的安全選項(xiàng)以及對(duì)事物的控制上都與其他行業(yè)有很大區(qū)別。
- 傳統(tǒng)行業(yè)
相比較速度和安全,傳統(tǒng)企業(yè)更加注重業(yè)務(wù)的處理,業(yè)務(wù)完成的整體地位要高于性能。
為不同的企業(yè)選擇不同的存儲(chǔ)引擎
和應(yīng)用場(chǎng)景相類似,存儲(chǔ)引擎也應(yīng)該按照行業(yè)的特點(diǎn)來(lái)進(jìn)行選擇。吳炳錫老師就常用的MYSQL存儲(chǔ)引擎進(jìn)行了分析。
- MyISAM
MyISAM是最傳統(tǒng)的MYSQL存儲(chǔ)引擎,但從MySQL5.5版本以后,官方就開始不進(jìn)行特別維護(hù)了,這個(gè)引擎現(xiàn)在基本上已經(jīng)可以作廢了。吳炳錫老師強(qiáng)烈建議還在使用這款存儲(chǔ)引擎的同志們盡快棄暗投明,選擇新的存儲(chǔ)引擎來(lái)替代它。
- Innodb
Innodb是現(xiàn)在比較新的引擎,也是吳炳錫老師重點(diǎn)推薦的一款存儲(chǔ)引擎。Innodb有兩個(gè)不同的版本,一個(gè)是Innobase,一個(gè)是Innodb Plugin?,F(xiàn)在用的MYSQL5.5和5.6兩個(gè)版本的都是基于Innodb Plugin的,性能較之從前提高了兩倍以上,是做常規(guī)業(yè)務(wù)的不二之選。
- 其他
另外還有可以提供高速寫入功能的TokuDB引擎,在數(shù)據(jù)庫(kù)里面做繁雜統(tǒng)計(jì)分析工作的Inforbright引擎等等眾多存儲(chǔ)引擎可供我們選擇。
MYSQL優(yōu)化的“三減一加”
用戶集中訪問(wèn)算得上是互聯(lián)網(wǎng)領(lǐng)域的“高發(fā)病”,面對(duì)高并發(fā)環(huán)境,吳炳錫老師提出了:三減一加的政策。減少數(shù)據(jù)訪問(wèn)、減少網(wǎng)絡(luò)傳輸、減少CPU開銷和增加資源。
高效索引設(shè)計(jì)的“軍規(guī)”
設(shè)計(jì)高效索引
- 查詢,更新,刪除where條件中必須有索引,處理行數(shù)不能超過(guò)1w
- 若查詢條件中不包含索引的最左列, 無(wú)法使用索引
- 對(duì)于范圍查詢, 只能利用索引的最左列
- 對(duì)于order by A語(yǔ)句,在A上建立索引, 可以避免排序
- 對(duì)于group by A語(yǔ)句,在A上建立索引, 可以避免排序
- 對(duì)于多列排序, 需要所有所有列排序方向一致, 才能利用索引。
寫在***
吳炳錫老師表示MySQL現(xiàn)在在業(yè)界內(nèi)出現(xiàn)了很多的分支,有官方版本還有一些其他版本,每一個(gè)版本都有其獨(dú)到之處,作為一名資深的MYSQL傳教士,他希望將來(lái)的業(yè)界能夠用更開放的心態(tài)將所有新的特性合并到一起,讓每一個(gè)下一版本變得更加優(yōu)秀,讓更多人從中受益!