一個效能優化的案例
1.以前 業務處理時要求 插入某 表的處理方式(該表已經是分割槽):
每個客戶對應的每種遊戲,在做影像時對中都會生成一條記錄
如果客戶沒玩遊戲該條記錄補0(目前客戶數50000,8個遊戲 t做影像每天需要增加400000多行記錄,
一個月也就400000*30=12000000萬),增加量很快
而且本身這個表建立了四五個全域性索引,通過程式插入時每天需要半個鐘頭左右,
隨著資料量增加 插入越來越慢, 按分割槽查詢時一個月資料量也很大,影響報表查詢
2.通過與業務相結合討論建議
如果該客戶沒玩遊戲,在該表中不產生記錄,這樣就少了很多記錄,其中每天線上玩家數也就幾百左右
那這樣產生的資料量也就(500*8=4000左右) 大大減少了資料量的產生
提高後臺相關報表查詢效能和減少做影像時間
3.資料對比
select count(*) from test (全部)
80000000
select count(*) from test (去除為0的記錄)
where amount>0
800000
資料量相差100倍
4.實施 因為是線上系統 晚上12點做影像 所以在這之前或之後做好就行
因為是分割槽表為了不影響生產效能按分割槽插入提高插入資料速度:
改為非分割槽表
create table temp
(
column1 number(20);
column2 varchar2(2);
......
);
--插入資料到臨時表中
insert into temp
select * from test partition(P200608)
where amount>0;
insert into temp
select * from test partition(P200609)
where amount>0;
......
alter table test rename to test_bak;
alter table temp rename to test;
drop table test_bak;
重建相關索引和分析資料
5.效果
目前插入由以前的半個小時變到幾十秒鐘,相關查詢報表速度提高很多
效能得到明顯提高
6.總結
效能優化是個長期的過程,要不斷的跟蹤與觀察,還要非常瞭解業務,
這樣才會對系統提出更好的建議
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7199859/viewspace-231116/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- 效能優化案例-SQL優化優化SQL
- 記一次前端效能優化的案例前端優化
- 【MySQL】NOT EXISTS優化的一個案例MySql優化
- 記一個SQL優化案例SQL優化
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle效能優化-SQL優化(案例四)Oracle優化SQL
- 一個複合索引的優化案例索引優化
- 一個MySQL優化案例的初步思路MySql優化
- SQL效能優化案例分析SQL優化
- 記一個效能優化問題優化
- 一個SQL效能問題的優化探索SQL優化
- 從案例分析如何優化前端效能優化前端
- 分享一個SQLite 效能優化例項SQLite優化
- 效能優化的十二個方面優化
- Oracle效能解決的一個案例Oracle
- 記一次介面效能優化實踐總結:優化介面效能的八個建議優化
- 一次成功的優化案例優化
- MySQL SQL優化案例(一)MySql優化
- IO優化案例一則優化
- informix的效能優化(之一)ORM優化
- Mysql效能優化一MySql優化
- spark效能優化(一)Spark優化
- oracle 效能優化(一)Oracle優化
- CSS效能優化的8個技巧CSS優化
- CSS效能優化的幾個技巧CSS優化
- Java效能優化的5個技巧Java優化
- Apache效能優化的25個技巧Apache優化
- 【案例】MySQL count操作優化案例一則MySql優化
- 優化案例--重建索引引發的sql效能問題優化索引SQL
- Oracle案例10——HWM(高水位線)效能優化Oracle優化
- [java][效能優化]java高階開發必會的50個效能優化Java優化
- Android效能優化——程式碼優化(一)Android優化
- MySQL效能優化的5個維度MySql優化
- 優化 iOS 程式效能的 25 個方法優化iOS
- 前端效能優化的三個維度前端優化
- 【SQL Server 優化效能的幾個方面】SQLServer優化