了解MySQL如何優化

mysql優化

  • 1.優化索引、SQL語句、分析慢查詢

  • 2.設計表的時候嚴格按照數據庫的設計范式來設計數據庫;

  • 3.我們還可以將我們的業務架構進行緩存,靜態化和分布式

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

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

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

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

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

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

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

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

  • 12.此外還有一些表引擎選擇,參數優化還有些相關的小技巧都是優化MySQL的方式;


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

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

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

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

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

? 版權聲明
THE END
喜歡就支持一下吧
點贊14 分享