我有一张表,多个进程在一天中非常快速地插入数据。假设至少有一个进程在任何给定时刻执行插入。
我需要在白天读取此表,同时插入正在发生。我需要读取每一行,但我只需要读取每一行。
我的问题是:
单个流程是否可以通过这种方式从表中读取而不影响插入性能?
是否有多个进程同时从表中读取数据?
答案 0 :(得分:3)
Oracle实现了多版本的读取一致性,因此读者不会阻止编写者(读者也不会阻止其他读者)。您可以在不影响插入性能的情况下,使用尽可能多的进程读取数据。
当然,实际上,您的硬件和应用程序可能会对此理论施加某种限制。例如,如果您的系统受CPU限制,并且您引入了如此多的读者,以牺牲作者为代价将大部分CPU提供给读者,那么您可能会遇到一些性能问题。如果您在插入行之后读取的行已经足够长,那么它们已经从缓冲区缓存(以及文件系统缓存(如果正在播放)中老化),读者将向系统添加I / O如果您的系统受I / O限制,可能会影响性能。