论坛首页 综合技术论坛

上亿数据的查询插入速度如何提升

浏览 15099 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-03-05  
大家好,我最近在做一个项目,其中有张表(A表)中数据量上亿条,为两年的数据,里面有个日期字段,现在我想建一个新表(B)表,然后将A中的数据按月统计查询后插入B中,基本上每个月都是在一百万到300万条数据的样子。两年的数据,总共是24条sql,且每条sql后都加了commit,但是出现的问题是,前两条执行速度比较快,几分钟就ok了,但是越到后面越慢,甚至超过两小时。我所建立的表空间每次扩充是512M的,可以说也不需要扩充了,因为我直接划分了20G的容量,目前我没找到问题所在,希望大家能给点建议,提高一下执行效率。A表中索引都建过了。
   发表时间:2013-03-06  
根据描述,觉得不是你A表统计语句的问题。
是B表插入的问题。
B表如果有索引或唯一性验证,那么插入越来越慢是肯定的。
你可以做个简单的测试,比如24条SQL,建24个表,执行插入,看看具体效率。
如果24张表速度都是平均,那么就是插入问题。
如果24张表速度都很慢,那么是A表查询问题。
如果有慢有快,才是表空间一类的问题。
1 请登录后投票
   发表时间:2013-03-06  
tfwin2 写道
根据描述,觉得不是你A表统计语句的问题。
是B表插入的问题。
B表如果有索引或唯一性验证,那么插入越来越慢是肯定的。
你可以做个简单的测试,比如24条SQL,建24个表,执行插入,看看具体效率。
如果24张表速度都是平均,那么就是插入问题。
如果24张表速度都很慢,那么是A表查询问题。
如果有慢有快,才是表空间一类的问题。

非常谢谢tfwin2的热心解答,我明天回公司试试。如果还有朋友有其他见解,请发表出来,我们可以相互学习
0 请登录后投票
   发表时间:2013-03-07  
建议贴上SQL语句,将A中的数据按月统计查询后插入B中,那么B最终结果是24条记录吗?
0 请登录后投票
   发表时间:2013-03-07  
我觉着你是不是建成分区表,按照月份分区,试试
0 请登录后投票
   发表时间:2013-03-08  
1、建议你将B表建成分区表(按月分区)
2、insert的时候使用 append insert 方式
3、在append insert是同时使用并行操作
0 请登录后投票
   发表时间:2013-03-08  
应该是A表的查询速度引起的,开始几百万的数据查询起来会比较快,越到后面越慢.
还有如果B表要建索引的话,最好是等数据都插入以后再建索引.
用SQLLoard的方式应该会快些
0 请登录后投票
   发表时间:2013-03-08  
1根据你的情况描述,查询速度应该是足够快,但插入速度较慢
2B表按照月份建立分区,每次按月统计出来的数据插入到新的分区中
0 请登录后投票
   发表时间:2013-03-08  
这样的数据一般建表的时候采用表分区的最好的选择。
每条sql以rownum划分的?可以考虑换下其他索引列区分。
大量数据更改索引维护是个相当耗费资源的操作,B表可以先删除索引。
可以看看是否打开了自动维护统计信息或自动整理,可以考虑关掉;数据量变化过大可能触发类似操作。
0 请登录后投票
   发表时间:2013-03-09  
liwenshui322 写道
建议贴上SQL语句,将A中的数据按月统计查询后插入B中,那么B最终结果是24条记录吗?


如果b的最终结果就是24条记录的话,那么无论如何都不会是b插入的速度问题。
应该是a的查询问题!
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics