问题描述
是否会有与主从数据库类似的东西,但是在数据库的表级别?
例如,我有以下情形:
- 我有一个包含数百万条记录的表,原因是该系统已使用15年以上了。
- 我只想显示去年(2019-2020)的记录。
- 我决定从包含数百万条记录的表的信息中创建一个仅显示该范围(1年)记录的视图。
- 由于该视图,由于我的记录负载较少,因此该系统屏幕的加载时间更短。
问题:如果用户将新记录添加到包含数百万条记录的表中怎么办?修改其他表后,如何修改视图?
我可以使用触发器来更新我认为的视图,但是oracle中是否具有一项功能,该功能可以使我类似于刚才询问的内容(主从),其中“从”表被更新为“主”桌子有变化吗?
解决方法
首先,您误解了视图。视图不是物理表,并且不存储任何信息。如果将数据插入视图,则实际上是在插入源表。
由于视图不是物理视图,因此您只是在过滤数据。这没有任何性能上的好处。
对于大表,您可以使用分区来大大提高性能。而且,如果您仍然需要存档,则可以存档分区数据。
分区通常是最好的方法,因为通常可以通过简单地执行“交换”命令来存档旧数据来存档数据。
,在这种情况下,数据不会“移动”,它只是通过数据字典操作与表“分离”。
是否会有与主从数据库类似的东西,但是在数据库的表级别
如果您要查询表级的主/从复制,那么, 我想,表/实例化视图的关系适合作为主从调用。来自Oracle Docs的引用:
实例化视图是一个包含查询结果的数据库对象。查询的FROM子句可以命名表,视图和其他实例化视图。这些对象统称为主控 表(复制术语)...
当您需要“更新”或更恰当地-刷新mview时,可以使用其他选项:
- 定期更新mview并刷新periodically
- 每次更改主表中的数据并commited时都更新mview。
- 手动调用DBMS_MVIEW.REFRESH或DBMS_SNAPSHOT.REFRESH 更新
与其他视图相比,Mview可能更快,因为每次从一个mview中进行选择时,您都从一个与原始表复制的“表”中进行选择。特别是如果您在sql中具有复杂的逻辑,则可以put the logic来mview定义。
缺点是您需要更多磁盘空间用于mview,并且刷新数据会有延迟。