明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

知道MySQL怎么優(yōu)化

[摘要]MySQL優(yōu)化1.優(yōu)化索引、SQL語句、分析慢查詢;2.設(shè)計表的時候嚴格按照數(shù)據(jù)庫的設(shè)計范式來設(shè)計數(shù)據(jù)庫;3.我們還可以將我們的業(yè)務(wù)架構(gòu)進行緩存,靜態(tài)化和分布式;4.不用全文索引,使用Xunsear...

MySQL優(yōu)化

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

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

  • 3.我們還可以將我們的業(yè)務(wù)架構(gòu)進行緩存,靜態(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:最簡單的(兩塊硬件相加100G+100G=200G)
    - raid1:鏡像卷,把同樣的數(shù)據(jù)下兩份?梢噪S即從A/B里面讀取,效率更高,硬盤壞了一塊數(shù)據(jù)也不會丟失;
    - raid5:3塊硬盤,壞了一塊,另外兩塊也能工作。

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

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

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

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

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


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

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

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

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

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

以上就是了解MySQL如何優(yōu)化的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識。