精华帖 (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左右),怎么做才能加快对数据的查询!分区? 具体要怎么分?每天? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2013-04-02
网络存储:光纤存储
数据库性能调整 表分区 合理索引 sql语句 调整 |
|
返回顶楼 | |
发表时间:2013-04-02
表分区具体怎么分?
|
|
返回顶楼 | |
发表时间:2013-04-02
表分区具体怎么分
|
|
返回顶楼 | |
发表时间:2013-04-02
你一个月搞一次数据,只要按照时间字段,每月1日到31日max分区就好了。
到时候数据迁移完毕,直接drop掉相应分区,速度很快的,也不用重新claim space。 |
|
返回顶楼 | |
发表时间:2013-04-02
你每月1号清空table B那么就是说你总共就保留2个月数据?那你在table A里保留2个月数据,然后每月1号把超出2个月的部分移到table B就完了,查询只要查table A。
|
|
返回顶楼 | |
发表时间:2013-04-02
使用luncene技术,然后数据库查询当天的数据,加上luncene生成的历史数据,这样能降低千万数据查询给数据库服务器带来的压力!
|
|
返回顶楼 | |
发表时间:2013-04-02
看问题好像楼主有两个表,一个表存一个月的数据,可以考虑改表名解决 。 |
|
返回顶楼 | |
发表时间:2013-04-02
Kisses99 写道 你每月1号清空table B那么就是说你总共就保留2个月数据?那你在table A里保留2个月数据,然后每月1号把超出2个月的部分移到table B就完了,查询只要查table A。
这样就保留了三个月的数据了。 |
|
返回顶楼 | |
发表时间:2013-04-03
首先,硬盘32G空间,肯定是要扩充的,几千块钱的服务器硬盘,哪个公司也不算大事儿;
第二,union这个关键字在大数据量查询中,要避免使用。可以使用代码组合当日和历史查询结果; 第三,要增加报表服务器,专门为查询使用,每天要把当日的数据算好插入报表服务器供查询使用,真正查询的时候,只查报表服务器,根本不用碰原始数据(除非你的原始数据经常变化)。每次都把所有数据查一遍,性能肯定是不行的; 第四,表分区用在这个场景其实不太合适,一天100w条数据,确实不少,但也不算太多,没必要这么折腾。一个表的数据不上千万级,没必要考虑表分区。 |
|
返回顶楼 | |