了解MySQL如何優(yōu)化

mysql優(yōu)化

  • 1.優(yōu)化索引、SQL語句、分析慢查詢

  • 2.設(shè)計(jì)表的時(shí)候嚴(yán)格按照數(shù)據(jù)庫的設(shè)計(jì)范式來設(shè)計(jì)數(shù)據(jù)庫;

  • 3.我們還可以將我們的業(yè)務(wù)架構(gòu)進(jìn)行緩存,靜態(tài)化和分布式

  • 4.不用全文索引,使用Xunsearch,ES或者云服務(wù)器上的索引;

  • 5.如果效率還是不夠好,可以采用主從方式將數(shù)據(jù)讀寫分離;

  • 6.可以加上memcached緩存,將經(jīng)常被訪問到但不經(jīng)常變化的數(shù)據(jù)放至memcached緩存服務(wù)器里面,這樣的話能夠節(jié)約磁盤I/O;

  • 7.還可以優(yōu)化硬件,在硬件層面,我們可以使用更好的一些硬盤(固態(tài)硬盤),使用一些磁盤陣列技術(shù)(raid0,raid1,raid5)
    ? ? – raid0:最簡(jiǎn)單的(兩塊硬件相加100G+100G=200G)
    ? ? – raid1:鏡像卷,把同樣的數(shù)據(jù)下兩份。可以隨即從A/B里面讀取,效率更高,硬盤壞了一塊數(shù)據(jù)也不會(huì)丟失;
    ? ? – raid5:3塊硬盤,壞了一塊,另外兩塊也能工作。

  • 8.如果還是慢,先不要切分表,可以使用MySQL內(nèi)部自帶的表分區(qū)技術(shù),將數(shù)據(jù)分成不同的文件,這樣能夠讓磁盤在讀取的時(shí)候效率更高;

  • 9.可以做垂直分表,將不經(jīng)常用讀的數(shù)據(jù)放到另外一個(gè)表里去(節(jié)約磁盤I/O);

  • 10.數(shù)據(jù)量特別大,我們優(yōu)化起來會(huì)很困難,這時(shí)可以使用數(shù)據(jù)庫中間件的方式,將數(shù)據(jù)進(jìn)行分庫分表分機(jī)器。(原理:數(shù)據(jù)路由);

  • 11.此外,還可以采用一些更快的存儲(chǔ)方式,例如nosql存儲(chǔ)一些我們需要經(jīng)常訪問到的數(shù)據(jù)(數(shù)據(jù)庫取出來后,再到NoSQL中取出一些其他數(shù)據(jù));

  • 12.此外還有一些表引擎選擇,參數(shù)優(yōu)化還有些相關(guān)的小技巧都是優(yōu)化MySQL的方式;


慢查詢:指超過指定時(shí)間的SQL語句查詢,分析MySQL語句查詢性能的方法除了使explain輸出執(zhí)行計(jì)劃,還可以讓MySQL記錄下查詢超過指定時(shí)間的語句。

Xunsearch:免費(fèi)開源的專業(yè)全文檢索解決方案,旨在幫助一般開發(fā)者針對(duì)既有的海量數(shù)據(jù)快速而方便地建立自己的全文搜索引擎。全文檢索可以幫助降低服務(wù)器的搜索負(fù)荷、極大程度的提高搜索速度和用戶體驗(yàn)。

elasticsearch:一個(gè)基于lucene的搜索服務(wù)器。它提供了一個(gè)分布式多用戶能力的全文搜索引擎,基于restful web接口

表引擎 優(yōu)點(diǎn) 不足
ISAM 讀取速度快,且不占用大量?jī)?nèi)存和存儲(chǔ)資源 不支持事務(wù),不能容錯(cuò);如果硬盤崩潰了,數(shù)據(jù)文件就無法恢復(fù)(常備份)
MYISAM ISAM擴(kuò)展格式和缺省數(shù)據(jù)引擎,提供了ISAM里所沒有的索引和字段管理的大量功能,MYISAM使用表鎖 不支持事務(wù),不支持外鍵
INNODB和BERKLEY(BDB) 支持事務(wù),支持外鍵 數(shù)據(jù)讀取較慢
HEAP 允許只駐留在內(nèi)存里的臨時(shí)表格,因此比ISAM和MYISAM都快 管理的數(shù)據(jù)都是不穩(wěn)定的,如果在關(guān)機(jī)前數(shù)據(jù)沒保存,那么所有的數(shù)據(jù)都會(huì)丟失(表格用完之后就刪除表格);需要select表達(dá)式來選擇和操控?cái)?shù)據(jù)時(shí)非常有用

范式 特點(diǎn)
第一范式(1NF) 具有原子性,即的信息不可再分【列唯一】
第二范式(2NF) 以第一范式為基礎(chǔ),數(shù)據(jù)表的每一個(gè)實(shí)例或者,必須要唯一的區(qū)分(每行上建主鍵)【行唯一】
第三范式(3NF) 基于第二范式,一個(gè)數(shù)據(jù)庫,不包含已在其他表中的非主鍵列

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊14 分享