ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 一个性能优化的案例

一个性能优化的案例

Linux操作系统 作者:jgwzl 时间:2014-01-28 17:18:53 0 删除 编辑

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/305724/viewspace-1076298/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-05

  • 博文量
    13
  • 访问量
    43839