论坛首页 Java企业应用论坛

oracle大数据量(千万界别)怎么优化查询,分区。

浏览 19008 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-04-02   最后修改:2013-04-02
场景:
每天有100w条数据(大小为1G左右)插入一张表tableA中,每月1号凌晨清空tableB再把tableA中数据移植到tableB中,tableA和tableB位于同一个表空间tablespaceS(表空间32G左右,表空间不足时,
手工清空tableB),查询历史数据时的做法是tableA union tableB,面对这样千万级别的数据查询,现在级别动不了!(数据库为oracle10g,查询功能实现技术为java)
问题:
在暂不考虑扩展磁盘空间的条件下(可用的剩余磁盘空间为32G左右),怎么做才能加快对数据的查询!分区? 具体要怎么分?每天?
   发表时间:2013-04-02  
网络存储:光纤存储
数据库性能调整
表分区
合理索引
sql语句 调整
0 请登录后投票
   发表时间:2013-04-02  
表分区具体怎么分?
0 请登录后投票
   发表时间:2013-04-02  
表分区具体怎么分
0 请登录后投票
   发表时间:2013-04-02  
你一个月搞一次数据,只要按照时间字段,每月1日到31日max分区就好了。
到时候数据迁移完毕,直接drop掉相应分区,速度很快的,也不用重新claim space。
0 请登录后投票
   发表时间:2013-04-02  
你每月1号清空table B那么就是说你总共就保留2个月数据?那你在table A里保留2个月数据,然后每月1号把超出2个月的部分移到table B就完了,查询只要查table A。
0 请登录后投票
   发表时间:2013-04-02  
使用luncene技术,然后数据库查询当天的数据,加上luncene生成的历史数据,这样能降低千万数据查询给数据库服务器带来的压力!
0 请登录后投票
   发表时间:2013-04-02  

看问题好像楼主有两个表,一个表存一个月的数据,可以考虑改表名解决 。
0 请登录后投票
   发表时间:2013-04-02  
Kisses99 写道
你每月1号清空table B那么就是说你总共就保留2个月数据?那你在table A里保留2个月数据,然后每月1号把超出2个月的部分移到table B就完了,查询只要查table A。


这样就保留了三个月的数据了。
0 请登录后投票
   发表时间:2013-04-03  
首先,硬盘32G空间,肯定是要扩充的,几千块钱的服务器硬盘,哪个公司也不算大事儿;

第二,union这个关键字在大数据量查询中,要避免使用。可以使用代码组合当日和历史查询结果;

第三,要增加报表服务器,专门为查询使用,每天要把当日的数据算好插入报表服务器供查询使用,真正查询的时候,只查报表服务器,根本不用碰原始数据(除非你的原始数据经常变化)。每次都把所有数据查一遍,性能肯定是不行的;

第四,表分区用在这个场景其实不太合适,一天100w条数据,确实不少,但也不算太多,没必要这么折腾。一个表的数据不上千万级,没必要考虑表分区。
0 请登录后投票
论坛首页 Java企业应用版

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