插入要求: 30分钟 插入500W条
查询要求:select b from table where A=‘xxxx’的条件, 必须0.2秒内查出数据.
帮A加索引 500W条数据在30分钟内无法完成插入.
不加索引 无法实现0.2秒内完成查询.
目前我的解决方案加索引,分表。 控制表中的数据不超过100W。
但觉得 这个方案太笨,
各位大侠有更好的方案吗(列存储就算了,版本太老,不支持).
18 个解决方案
#1
#2
插入数据时失效索引,插入完成后重建索引
#3
表上建二级分区索引,一级分区是A,二级分区是B
#4
500W条记录,30分钟插入应该没有问题。建议你看一下插入时候的等待,为什么没完成插入操作。
对于索引,可以用1楼的方法,先失效,再生效。
还可以把索引换成nologging模式
对于索引,可以用1楼的方法,先失效,再生效。
还可以把索引换成nologging模式
#5
大量数据插入,考虑楼上说的使用nologging模式,减少redo日志,可以加快速度,
但必须要注意数据库归档模式,nologging在归档模式下要并行加载append的时候才有效
但必须要注意数据库归档模式,nologging在归档模式下要并行加载append的时候才有效
#6
這個方案如何?
用物化視圖,源表上沒有index,快照視圖上建立index
用物化視圖,源表上沒有index,快照視圖上建立index
#7
插入数据前把索引删除。插入数据时用不写日志的方法,当然还有oracle的一些暗示的方法。数据插入完成后,在重建索引。
#8
LZ的意思是insert和select是并行的吗?
#9
1)LZ 能把大概的业务介绍一下吗?大体是该业务表主要是做什么用的?
2)能把之前insert和select的执行计划贴上来看看吗?这样有助于分析慢在哪
2)能把之前insert和select的执行计划贴上来看看吗?这样有助于分析慢在哪
#10
APPEND nologging插入,然后建索引
#11
用了1楼的方法, 对500W数据 建立索引 需要5分钟左右时间。时间太长。这段时间查询会很卡。
具体情况是这样的, 平均每天的数据插入量是500W条。同时必须满足查询速度在0.2秒一下。
PS 系统 是7*24小时的。
具体情况是这样的, 平均每天的数据插入量是500W条。同时必须满足查询速度在0.2秒一下。
PS 系统 是7*24小时的。
#12
楼主给的信息量太少!!!!让人有心无力
#13
mark
#14
7*24小时,同时兼顾插入与查询。
#15
我觉得0.2秒查出这么多数据是不大可能的
#16
这个是可以实现的,因为他的查询要求可能仅仅是一条,或者某个范围的数据,而不是500W条
查询要求:select b from table where A=‘xxxx’的条件, 必须0.2秒内查出数据.
#17
恩,这样是可以
#18
写程序,把数据分成多分,多线程同时插入。试试可否。
#1
#2
插入数据时失效索引,插入完成后重建索引
#3
表上建二级分区索引,一级分区是A,二级分区是B
#4
500W条记录,30分钟插入应该没有问题。建议你看一下插入时候的等待,为什么没完成插入操作。
对于索引,可以用1楼的方法,先失效,再生效。
还可以把索引换成nologging模式
对于索引,可以用1楼的方法,先失效,再生效。
还可以把索引换成nologging模式
#5
大量数据插入,考虑楼上说的使用nologging模式,减少redo日志,可以加快速度,
但必须要注意数据库归档模式,nologging在归档模式下要并行加载append的时候才有效
但必须要注意数据库归档模式,nologging在归档模式下要并行加载append的时候才有效
#6
這個方案如何?
用物化視圖,源表上沒有index,快照視圖上建立index
用物化視圖,源表上沒有index,快照視圖上建立index
#7
插入数据前把索引删除。插入数据时用不写日志的方法,当然还有oracle的一些暗示的方法。数据插入完成后,在重建索引。
#8
LZ的意思是insert和select是并行的吗?
#9
1)LZ 能把大概的业务介绍一下吗?大体是该业务表主要是做什么用的?
2)能把之前insert和select的执行计划贴上来看看吗?这样有助于分析慢在哪
2)能把之前insert和select的执行计划贴上来看看吗?这样有助于分析慢在哪
#10
APPEND nologging插入,然后建索引
#11
用了1楼的方法, 对500W数据 建立索引 需要5分钟左右时间。时间太长。这段时间查询会很卡。
具体情况是这样的, 平均每天的数据插入量是500W条。同时必须满足查询速度在0.2秒一下。
PS 系统 是7*24小时的。
具体情况是这样的, 平均每天的数据插入量是500W条。同时必须满足查询速度在0.2秒一下。
PS 系统 是7*24小时的。
#12
楼主给的信息量太少!!!!让人有心无力
#13
mark
#14
7*24小时,同时兼顾插入与查询。
#15
我觉得0.2秒查出这么多数据是不大可能的
#16
我觉得0.2秒查出这么多数据是不大可能的
这个是可以实现的,因为他的查询要求可能仅仅是一条,或者某个范围的数据,而不是500W条
查询要求:select b from table where A=‘xxxx’的条件, 必须0.2秒内查出数据.
#17
我觉得0.2秒查出这么多数据是不大可能的
这个是可以实现的,因为他的查询要求可能仅仅是一条,或者某个范围的数据,而不是500W条
查询要求:select b from table where A=‘xxxx’的条件, 必须0.2秒内查出数据.
恩,这样是可以
#18
写程序,把数据分成多分,多线程同时插入。试试可否。