读书人

oracle10 万万级数据存取优化

发布时间: 2013-03-06 16:20:31 作者: rapoo

oracle10 千万级数据存取优化
[list]

今天对一个存有1000万数据的大表进行了优化,尽是简单的优化,效果很明显。下面把自己的优化经过简单总结备忘一下。
1:创建表的备份,把生产表的querySql copy后修改table 为temp_tbl
2:从原有表中copy 数据插入到temp_tbl中语句如下
insert into temp_tbl select * from source_tbl
3:查看表数据量
selct count(1) from temp_tbl
4:查看表所在空间大小
select segment_name, bytes/1024/1024/1024 from user_segments
where segment_NAME = 'TEMP_TBL';
5:查看当前表索引
select * from user_indexes where TABLE_Name = 'TEMP_TBL'
6:利用存储过程做基数数据准备

  


8:插入操作情况如下
   峰值 内存占用达85% ,上下文切换较高 , 100次插入,成功96 ,失败4个

耗时(秒)线程数
0-6017
0-7031
0-10048
成功96
    
  利用hints /*+APPEND*/ 做插入,不删除外键索引 ,执行情况如下:
耗时(秒)线程数
0-1035
0-2041
0-3024
成功100
  
去掉外键索引后的执行情况如下:
耗时(秒)线程数
0-18
0-212
0-324
0-443
0-513
成功100

8:100个线程做关联查询查询操作(单次查询数据位10000)情况如下
没有添加任何索引的查询结果
耗时(秒)线程数
0-4013
0-5070
0-6017
  
添加索引后 100个线程都在1秒内完成查询操作
  



总结:为了提高插入速度 用刀了hints 中的/*+APPEND*/ 从表中末尾追加,避免对索引过多维护消耗时间;
为了提高查询的速度,增加了一个外键索引。



对于hint 和索引的细节 还请百度 或是google ,小生了解有限。





读书人网 >其他数据库

热点推荐