優化資料庫

2022-08-24 09:42:11 字數 1375 閱讀 7959

為什麼查詢速度會慢?

查詢效能低下最基本的原因是訪問的資料太多

某些不必要的額外操作,某些操作被額外地重複很多次,某些操作執行得太慢。 

優化查詢的目的就是減少和消除這些操作所花費的時間。

1、索引

create table mytable(

idserial int primary key,

category_id int default 0not null ,

user_id int default 0not null ,

adddate int default 0not null

);如果在查詢時常用類似以下的語句:

select * from mytable where category_id=1;

最直接的應對之道,是為category_id建立乙個簡單的索引:

create index mytable_categoryid on mytable (category_id);

ok.如果有不止乙個選擇條件呢?例如:

select * from mytable where category_id=1 and user_id=2;

第一反應可能是,再給user_id建立乙個索引。不好,這不是乙個最佳的方法。可以建立多重的索引。

create index mytable_categoryid_userid on mytable(category_id,user_id);

注意到在命名時的習慣了嗎?使用"表名_欄位1名_欄位2名"的方式。

2、分庫

分表分割槽

3、預處理

4、mysql like 查詢

5、資料庫引擎

6、讀寫分離

why 那麼為什麼要讀寫分離呢? 

因為資料庫的「寫」(寫10000條資料到oracle可能要3分鐘)操作是比較耗時的。 

但是資料庫的「讀」(從oracle讀10000條資料可能只要5秒鐘)。

when 什麼時候要讀寫分離? 

程式使用資料庫較多時,而更新少,查詢多的情況下會考慮使用

mysql讀寫分離原理

讀寫分離就是在主伺服器上修改,資料會同步到從伺服器,從伺服器只能提供讀取資料,不能寫入,實現備份的同時也實現了資料庫效能的優化,以及提公升了伺服器安全。

前較為常見的mysql讀寫分離分為以下兩種:

1)基於程式**內部實現

在**中根據select 、insert進行路由分類,這類方法也是目前生產環境下應用最廣泛的。優點是效能較好,因為程式在**中實現,不需要增加額外的硬體開支,缺點是需要開發人員來實現,運維人員無從下手。

2) 基於中間**層實現

**一般介於應用伺服器和資料庫伺服器之間,**資料庫伺服器接收到應用伺服器的請求後根據判斷後**到,後端資料庫

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

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

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

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

資料庫優化

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