Mysql資料庫如何優化?

2021-09-12 19:56:52 字數 2269 閱讀 9185

1、優化分片鍵(如果有分庫分表)

(1)不要使用分割槽,分割槽效能很低,難以維護

(2)不要使用主從資料庫,讀寫分離有了快取就再也不需要分主從了,畢竟延遲問題是無法解決的(雖然很小)

(3)如果使用分庫分表,那麼查詢條件務必先走分片鍵,否則就成了全表查詢,效能超低

2、優化索引

(1)索引列務必重複度低

(2)使用索引就不能用or查詢,否則索引不起作用

(3)使用索引,like模糊查詢不能以%開頭

(4)查詢條件務必以索引列開頭,否則索引失效

(5)聯合索引遵守最左原則

3、優化快取

分離冷熱資料,對於大記憶體訪問評率低的資料適當分離

提高快取命中率,命名問題

4、優化sql

見下面5、硬體優化(治標不治本)

一.優化sql語句又分為以下幾個方面:

優化查詢語句

1、通過explain和describe關鍵字分析select查詢語句,從而使開發人員知道查詢效率低的原因。

語法如下:explain  select * from bookmanager where name='admin' \g;

2、通過新增索引進行優化

說起資料庫的效能,索引可能使最物美價廉的東西了。使用索引可以快速的定位表中的某條記錄,不用新增記憶體、不用修改程式,也不用呼叫sql語句,只需執行乙個建立正確的索引,查詢速度就可能提高千倍萬倍。

索引並不一定是主鍵或者唯一的字段,如果表中的某個字段總是被搜尋,就可以為其建立索引。

建立索引的語句如下:

create index index_name on table_name(manname);

使用索引應注意的事項:

(1)使用多列索引時,查詢條件必須使用索引的第乙個字元。

(2)like關鍵字配置的字串不能以符號「%」開頭。

(3)or關鍵字連線的所有條件都必須使用索引。如果or前後有乙個條件的列不是索引,那麼查詢中講不使用索引。

3、優化order by

有兩種方式如下:

(1)索引優化:對by後的列新增索引,從而大達到優化的目的。

(2)where+order by 的組合優化:通過where進行限制後在進行order by

4、優化group by    (同3中通過加索引和where進行優化)

5、優化limit

6、優化子查詢

在mysql中通過使用連線查詢來代替子查詢,從而達到優化目的。原因:子查詢在執行的時候 資料庫需要位內層查詢語句的查詢結果建立乙個臨時表,然後外層語句查詢臨時表,所以子查詢的效率比較低,而連線查詢就不存在這個問題。

總結優化查詢的基本原則如下:

盡可能對每一條執行的sql語句進行explain

盡力少使用join(少使用多表查詢)

盡量少排序

盡量避免select * 查詢

盡量使用連線代替子查詢

盡量少使用or關鍵字

盡量使用union all代替union

盡量早過濾

避免「型別轉換」

優化先優化高併發的sql語句

從全域性出發優化,而不是片面調整

優化其他執行語句

1、優化insert語句

禁用索引,禁用唯一性檢查,使用一條insert插入多條語句。

2、優化update語句

使用乙個update語句同時做多個更新。

3、優化delete語句

刪除一條記錄的時間與索引的數量成正比。刪除乙個表的所有行,使用truncate table tbname 而不要使用delete from table

二、優化資料庫結構

1、優化字段型別

資料庫最耗時的就是io處理,所以盡可能減少io讀寫量。

數字型別:盡量不要使用double型別,不僅是長度問題,還有精度問題。對於整數,資料量大時區分tinyint、int、bigint,如果確定不實用負數,新增unsigned定義。

字元型別:盡量不要使用text型別,效能低於char和varchar,定長使用char,不定長使用varchar

時間型別:盡量不使用timestamp,只精確到某一天的話,可用date型別。

enum和set:狀態字段用enum,如果存放可預先定義的屬性資料可以嘗試用set

2、優化字元編碼

3、適當進行拆分

4、適當增加冗餘

5、優化資料庫表

三、優化mysql伺服器

優化原則如下:

記憶體中的資料要比磁碟上的資料訪問的快。

讓資料盡可能長時間的留在記憶體裡能減少磁碟讀寫活動的工作量。

mysql資料庫如何優化?

30種sql查詢語句優化方法 1 應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,如 select id from t where num is null 可以在num上設定預設值0,確保表中num列沒有null值,然後這樣查詢 select ...

資料庫如何優化

1.程式優化,用 prepareedstatement 進行增刪改查 2.程式優化,盡量批量處理,避免逐條處理,減小 io數 3.查詢結果不要用 來查詢所有字段,要明確指明結果字段 4.減少多表連線數,盡量少的表進行連線 5.表連線時,盡量用主鍵進行連線或用唯一索引 6.表的查詢多時,一定建立索引 ...

MySQL資料庫如何做好優化

碰到過好幾次這樣的題目,可每次都不能答的完全正確.現在大概列出如下 忘各位補充 1.資料庫的設計 盡量把資料庫 設計的更小的佔磁碟空間.1 盡可能使用更小的整數型別.mediumint就比int更合適 2 盡可能的定義欄位為not null,除非這個字段需要null.3 如果沒有用到變長字段的話比如...