mysql數據庫的優化和查詢效率的優化


一、數據庫的優化

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

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

3.使用緩存,把經常訪問到的數據而且不需要經常變化的數據放在緩存中,能節約磁盤IO;

4.優化硬件;采用SSD,使用磁盤隊列技術(RAID0,RAID1,RDID5)等;

5.采用MySQL 內部自帶的表分區技術,把數據分層不同的文件,能夠提高磁盤的讀取效率;

6.垂直分表;把一些不經常讀的數據放在一張表里,節約磁盤I/O;

7.主從分離讀寫;采用主從復制把數據庫的讀操作和寫入操作分離開來;

8.分庫分表分機器(數據量特別大),主要的的原理就是數據路由;

9.選擇合適的表引擎,參數上的優化;

10.進行架構級別的緩存,靜態化和分布式;

11.不采用全文索引;

12.采用更快的存儲方式,例如NoSQL存儲經常訪問的數據**。

 

二、查詢效率的優化

1、存儲引擎的選擇,如果數據庫中表需要事務處理,應該考慮使用InnoDB,因為它完全符合ACID特性。如果不需要事務處理,使用默認存儲引擎MyISAM是比較明智的;

2、分表分庫,主從;

3、對查詢進行優化,要盡量避免全表掃描,首先應考慮在 where 及 order by 涉及的列上建立索引;

4、應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃描;

5、應盡量避免在 where子句中使用 != 或 <> 操作符,否則將引擎放棄使用索引而進行全表掃描;

6、應盡量避免在 where 子句中使用 or 來連接條件,如果一個字段有索引,一個字段沒有索引,將導致引擎放棄使用索引而進行全表掃描;

7、Update 語句,如果只更改1、2個字段,不要Update全部字段,否則頻繁調用會引起明顯的性能消耗,同時帶來大量日志;

8、對於多張大數據量(這里幾百條就算大了)的表JOIN,要先分頁再JOIN,否則邏輯讀會很高,性能很差。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM