gpt4 book ai didi

sql-server - SQL Server : Best technique to regenerate a computed table

转载 作者:行者123 更新时间:2023-12-04 04:33:53 24 4
gpt4 key购买 nike

我们有一些在 SQL Server 中定期重新计算的表。计算需要几秒钟到几分钟,我们执行以下操作:

  • 将结果转储到calculated_table_tmp
  • 删除计算表
  • 将calculated_table_tmp 重命名为computed_table。 (和所有索引)。

  • 但是,我们似乎仍然遇到并发问题,我们的应用程序在它不再存在的确切时刻请求使用该计算表的 View 。

    在确保高可用性的同时避免此类问题的最佳技术是什么?

    最佳答案

    如果此表是您的高可用性要求的一部分,那么您就不能像以前那样这样做。在生产 SQL 环境中删除表打破了高可用性的概念。

    您也许可以通过创建 one or more partitions on this table 来完成您想要实现的目标。 .分区表分为行的子组,这些行可以分布在数据库中的多个文件组中。但是,出于查询目的,该表仍然是单个逻辑实体。使用表分区的优点是您可以在不破坏数据库完整性的情况下移动数据的子集,即高可用性仍然存在。

    在您的场景中,您必须修改您的流程,以便所有事件都在表的生产版本中进行。根据您的 partition function 的值,新行将转储到单独的分区中。 .那么你需要switch分区。

    您需要做的一件事是确定表中可用作分区列的列,该列确定将行分配到哪个分区。例如,这可能是指示该行何时生成的日期时间列。您甚至可以为此目的使用计算列,前提是它是 PERSISTED 列。

    一个警告:表分区并非在所有版本的 SQL Server 中都可用......我不相信 Standard 有它。

    关于sql-server - SQL Server : Best technique to regenerate a computed table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20098049/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com