天天看點

MySQL資料庫的優化的思路方式方法?

1資料庫結構優化

a建表的時候優化:

列選擇原則

1字段類型優先級:整形>date,time->char varchar->text、blob

2合理地設定字段大小夠用就可以

3盡量不要用text類型

4盡量不用NULL() 索引NULL列需要額外的空間來儲存

5對于非負型的資料 (如整型 IP) 來說,要優先用無符号整型來存儲 無符号占多出一倍。

6同财務相關的金額類資料必須使用 decimal 類型。

b反範式設計表 目的–減少表的關聯查詢

方法->備援字段(某字段存儲另一表的統計資訊)

備援表(表中統計或彙總其他表的資訊)

c将字段很多的表分解成多個表:對于使用頻率低的字段分離出來形成新表。

d增加中間表

2查詢語句優化

a 常見的查詢優化

避免直接使用 select *

中 IN 包含的值不應過多

當隻需要一條資料的時候,使用 limit 1

SQL 語句要避免造成索引失效的

如果排序字段沒有用到索引,就盡量少排序

不建議使用%字首模糊查詢

b緩存優化 資料庫打開了 Query Cache(簡稱 QC)功能

c讀寫分離 主資料庫處理增、改、删操作,而從資料庫處理查詢操作。

d mysql的分庫分表 垂直拆分(業務)與水準拆分(表ID)

f EXPLAIN

用 EXPLAIN 檢視 SQL 執行計劃,在查詢語句中加入explain(解釋)

查出來有一個重要的字段是type 表示表的連接配接類型

從最佳類型到最差類型 system const(了解為最佳) eq_ref 等等10個 直到all是最差。

3索引及優化

索引:提高資料查詢的效率 就說是比如:然後說兩條。

  1. 選擇唯一性索引
  2. 唯一性索引的值是唯一的,可以更快速的通過該索引來确定某條記錄。
  3. 為經常需要排序、分組和聯合操作的字段建立索引:
  4. 為常作為查詢條件的字段建立索引。
  5. 限制索引的數目: 越多的索引,會使更新表變得很浪費時間。
  6. 盡量使用資料量少的索引
  7. 如果索引的值很長,那麼查詢的速度會受到影響。
  8. 盡量使用字首來索引
  9. 如果索引字段的值很長,最好使用值的字首來索引。
  10. 删除不再使用或者很少使用的索引
  11. 最左字首比對原則,非常重要的原則。
  12. 盡量選擇區分度高的列作為索引
  13. 區分度的公式是表示字段不重複的比例
  14. 索引列不能參與計算,保持列“幹淨”:帶函數的查詢不參與索引。
  15. 盡量的擴充索引,不要建立索。

4伺服器優化

配置較大的記憶體 配置高速磁盤(SSD等)

5存儲引擎的選擇優化

MyISAM 更适合讀密集的表,而 InnoDB 更适合寫密集的的表。