為什麼查詢速度會慢?
查詢效能低下最基本的原因是訪問的資料太多
某些不必要的額外操作,某些操作被額外地重複很多次,某些操作執行得太慢。
優化查詢的目的就是減少和消除這些操作所花費的時間。
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操作 的列上建立索引...