【问题标题】:"master-slave" table replication in OracleOracle中的“主从”表复制
【发布时间】:2020-12-29 14:43:18
【问题描述】:

会不会有类似主从数据库但在数据库中的表级别的东西?

例如,我有以下场景:

  1. 我有一个包含数百万条记录的表,原因是系统已经使用了 15 年以上。
  2. 我只想显示去年(2019-2020)的记录。
  3. 我决定从包含数百万条记录的表的信息中创建一个仅显示该范围(1 年)的记录的视图。
  4. 多亏了视图,该系统屏幕的加载时间更轻,这要归功于我的记录负载较少。

问题:如果用户在包含数百万条记录的表中添加一条新记录怎么办?修改其他表时如何修改视图...

我可以使用触发器来更新我认为的视图,但是,oracle 中是否有一个功能可以让我类似于我刚刚询问的(主从),其中“从”表被更新为“主”表发生变化?

【问题讨论】:

  • 相当肯定,不再称它们为“主从”表的不是 PC。

标签: database oracle


【解决方案1】:

会不会有类似主从数据库但在数据库中的表级别的东西

如果您在表级别询问主/从复制,那么, 我想,表/物化视图关系适合作为主从调用。引用Oracle Docs:

物化视图是包含查询结果的数据库对象。查询的 FROM 子句可以命名表、视图和其他物化视图。这些对象统称为 ma​​ster tables(复制术语)...

当您需要“更新”,或者更恰当地说 - 刷新 mview 时,您可以使用不同的选项:

Mview 可能比查看更快,因为每次您从 mview 中选择时,您都是从从原始表复制的不同“表”中选择的。特别是如果你有复杂的sql逻辑,你可以put the logic来mview定义。

缺点是mview需要额外的磁盘空间,刷新数据会有延迟。

【讨论】:

    【解决方案2】:

    首先,你误解了观点。 View 不是物理表,不存储任何信息。如果您将数据插入到视图中,您实际上是在插入到源表中。

    由于视图不是物理视图,因此您只是在过滤数据。这没有任何性能优势。

    对于大表,您可以使用分区来显着提高性能。如果您仍然需要存档,您可以存档分区数据。

    分区通常是最好的方法,因为您通常可以通过简单地执行“交换”命令来归档旧数据来归档数据。

    在这种情况下,数据不会“移动”,它只是通过数据字典操作从表中“分离”出来。

    【讨论】:

    • 感谢您的澄清。我很困惑。
    猜你喜欢
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 2012-03-01
    • 2022-08-06
    • 1970-01-01
    • 2012-08-25
    • 1970-01-01
    • 2016-04-11
    相关资源
    最近更新 更多