資料庫優化

2021-08-03 22:26:47 字數 2381 閱讀 9792

資料庫調優,就好比蓋樓打地基,地基打得不穩,樓層一高,就會塌方。資料庫也是如此,資料少,併發小,隱藏的問題是發現不了的,只要達到一定規模後,所有的問題就會全部曝露出來了,所以前期的設計階段尤為重要。

硬體、網路取決於公司的經濟實力。

軟體再分為表設計(字段型別、儲存引擎)、sql語句優化與索引、配置檔案引數、體系架構等方面的優化。

乙個好的資料庫設計對於資料庫的效能優化常常會起到事半功倍的效果。合理的資料庫結構不僅可以使資料庫占用更小的磁碟空間,而且能夠使查詢速度更快。

表優化的常用方法
設計資料庫表時應盡量遵守正規化理論的約定,盡可能減少冗餘字段。但是合理地加入冗餘欄位也可以提高查詢速度。這就是以空間換時間。

總結:在開發應用程式時,設計的資料庫要最大程度地遵守三正規化。但是,三正規化最大的問題在於通常需要join很多表,而這個會導致查詢效率很低。所以有時候基於查詢效能考慮,我們需要有意違反三正規化,適度的冗餘,以達到提高查詢效率的目的。

原則:選擇欄位的一般原則是保小不保大,能用占用位元組少的字段就不用大字段。

tinyint型別最大儲存是255。

create table tmp(id tinyint);

insert into tmp(id) values(256);//溢位

區別是:如果你選擇是int(11),那麼你存放了乙個1,那麼結果是1前面有10個0,int(21)前面有20個零

實驗:

create table t(a int(11) zerofill,b int(21) zerofill);//zerofill 是補全零的

insert into t values(1,1);

select * from t;

+-------------+-----------------------+

| a | b |

+-------------+-----------------------+

| 00000000001 | 000000000000000000001 |

+-------------+-----------------------+

1 row in set (0.00 sec)

字串型別

* char

char儲存空間定長,容易造成空間的浪費。char資料型別儲存大小最大為255字元。

最大255個字元的意思是最大只能存放255個字母或者255個漢字

字串型別總結
innodb支援行鎖、事務。如果應用中需要執行大量的讀寫操作,應該選擇innodb,這樣可以提高多使用者併發操作的效能。在mysql5.5之後版本,oracle已經很少支援myisam了,所以建議優先選擇innodb引擎。

系統優化中乙個很重要的方面就是sql語句的優化。對於海量資料,劣質sql語句和高效sql語句之間的速度差別可以達到上百倍。

開啟慢查詢日誌的好處是可以通過記錄、分析慢sql語句來優化sql語句

開啟慢查詢日誌,在my.cnf配置檔案中,加入以下引數:

slow_query_log = 1

slow_query_log_file = mysql.slow

long_query_time = 1 # 超過1秒的sql會記錄下來

分類:主鍵索引、唯一索引、普通索引、全文索引

適當的索引對應用的效能來說相當重要,而且也建議在mysql中使用索引,它的速度是很快的。

但是索引也是有成本的。每次向表中寫入時,如果帶有乙個或多個索引,那麼mysql也要更新各個索引。索引還增加了資料庫的規模,也就是說索引也是佔據空間的。

只有當某列被用於where子句時,才能享受索引效能提公升的好處。如果不使用索引,它就沒有價值,而且會帶來維護上的開銷。

用不到索引的情況(避免)

order by 的字段混合使用asc和desc用不到索引

select * from user order by id desc,name asc;
where 子句使用的字段和order by 的字段不一致

select * from user where name = 'jack' order by id;
對不同關鍵字使用order by 排序

select * from user order by name,id;

資料庫優化 資料庫設計優化

一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...

資料庫引擎優化顧問優化資料庫

現在一直在做的專案,資料量相對也不小,開始的時候沒有覺得,因為是剛開始,資料量還很小,在程式使用過程中速度還挺快,但是隨著資料量的不停的增長,發現程式越來越慢,甚至出現了超時的問題,因此要對程式和資料庫進行優化,前期專案比較緊,沒有針對大資料量業務進行分析設計,所以索引等相關優化沒有做到位,通過後期...

資料庫優化

資料庫優化 1 合理使用索引 索引是資料庫中重要的資料結構,它的根本目的就是提高查詢效率。索引的使用要恰到好處,其使用原則如下 在經常進行連線,但是沒有指定為外來鍵的列上建立索引,而不經常連線的字段則由優化器自動生成索引 在頻繁進行排序或分組 即進行groupby或orderby操作 的列上建立索引...