gpt4 book ai didi

SQL 数据库最佳实践 - 使用存档表?

转载 作者:行者123 更新时间:2023-12-02 13:21:51 25 4
gpt4 key购买 nike

我不是一名训练有素的 DBA,但执行一些 SQL 任务并有以下问题:

在 SQL 数据库中,我注意到使用归档表来模仿具有完全相同字段的另一个表,并且当数据被认为要归档时,这些表用于接受原始表中的行。由于我见过这些表驻留在同一数据库和同一驱动器中的示例,因此我的假设是这样做是为了提高性能。这些表中的行数不超过 1000 万行...

  • 为什么要这样做,而不是使用列来指定行的状态,例如用于 in/active 标志的 bool 值?
  • 这会在什么时候提高性能?
  • 考虑到数据可能仍需要查询(或与当前数据合并),正确构建此结构的最佳模式是什么?
  • 对此还有什么可说的?

最佳答案

归档的概念是一种物理概念,而不是逻辑概念。从逻辑上讲,归档表包含完全相同的实体,并且应该是同一个表。

对 body 的关注往往是务实的。最重要的概念是“数据库变得太大/太慢”。归档记录可以更轻松地执行以下操作:

  1. 以不同方式优化索引结构。归档表可以有更多索引,而不影响工作表上的插入/更新性能。此外,索引可以用整页重建,而工作表通常希望有 50% 完整且平衡的页面。

  2. 以不同方式优化存储介质。您可以将存档表放在速度较慢/较便宜、容量可能更大的磁盘驱动器上。

  3. 以不同方式优化备份策略。工作表可能需要热备份或日志传送,而存档表可以使用快照。

  4. 如果您正在使用复制,请以不同的方式优化复制。如果存档表每天仅通过夜间批处理更新一次,则可以使用快照而不是事务复制。

  5. 不同级别的访问权限。也许您希望存档表具有不同的安全访问级别。

  6. 锁定争用。如果您的工作表非常热,您宁愿让 MIS 开发人员访问存档表,这样他们在运行某些内容并忘记指定脏读语义时不太可能停止您的操作。

最佳实践不是使用归档表,而是将数据从 OLTP 数据库移动到 MIS 数据库、数据仓库或具有非规范化数据的数据集市。但有些组织很难证明额外的数据库系统的成本是合理的(这并不便宜)。向现有数据库添加附加表的障碍要少得多。

关于SQL 数据库最佳实践 - 使用存档表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175228/

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