Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
oracle数据库中的物化视图_Oracle - Fatal编程技术网

oracle数据库中的物化视图

oracle数据库中的物化视图,oracle,Oracle,我的工作经理要求我创建50个物化视图,并设置每15分钟刷新一次,我的问题是:每15分钟同时刷新所有50个MVs会影响DB性能吗 谢谢同时刷新50可能会给系统的某些部分带来压力,通常您只创建物化视图,因为执行查询所需的时间比用户愿意等待的时间长 如果您使用的是快速可刷新的物化视图(如果希望如此频繁地刷新,您应该努力做到这一点),那么所需的工作量要少得多—您只需要处理自上次刷新以来已更改的数据。Oracle将计算所有需要更改的内容,并在少量SQL语句中进行更改。对于一个15分钟的更改窗口,可能没有太

我的工作经理要求我创建50个物化视图,并设置每15分钟刷新一次,我的问题是:每15分钟同时刷新所有50个MVs会影响DB性能吗


谢谢

同时刷新50可能会给系统的某些部分带来压力,通常您只创建物化视图,因为执行查询所需的时间比用户愿意等待的时间长

如果您使用的是快速可刷新的物化视图(如果希望如此频繁地刷新,您应该努力做到这一点),那么所需的工作量要少得多—您只需要处理自上次刷新以来已更改的数据。Oracle将计算所有需要更改的内容,并在少量SQL语句中进行更改。对于一个15分钟的更改窗口,可能没有太多的实际更改,而这些更改将使用批处理操作更有效地处理

然而。。。即使您已经尽可能快地完成了刷新过程,让50件事情同时工作(即使是很短的一段时间)仍然是一件非常重要的事情。如果他们都需要做CPU工作,那么这是50个繁忙的CPU,需要由操作系统进行调度,然后还需要在所有剩余的用户会话中进行调度,这些会话正试图进行工作(Oracle CPU许可证对此将非常昂贵)。这就是为什么您通常会使用job_queue_processs参数限制在任何时间可以运行的作业数(尽管最新版本也会通过让资源管理器限制在任何时间的作业数来提供帮助)-将其设置为一个合理的数字,这取决于您一次可以在后台实际处理的工作量。如果您使用快速可刷新的物化视图,那么即使Oracle一次只处理一个视图,刷新50也不会花费时间


拥有快速刷新的物化视图的另一个好处(如果您已经升级到至少12.2)是,您可以拥有实时物化视图,这意味着即使它没有被刷新,您的用户仍然可以随时看到完全最新的数据,而无需执行查询工作-非常聪明的东西!这可以减少某些具体化视图的刷新频率,但使数据始终完全同步。

是的,这可能会影响性能,可能会产生负面影响。但是查询物化视图也可以通过更容易地从数据库中获取数据来提高性能。感谢@TimBiegeleisen提供的有用意见。是否需要同时刷新它们?也许其中一些可以一天刷新一次,另一些可以一天刷新两次,其余的每小时刷新一次,只有少数甚至更频繁。这取决于它们含有什么。例如,关于员工变化的数据非常罕见。“订单”表在一分钟内更改多次。等等。也许值得和经理讨论一下。