AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 90338
Accepted
KASQLDBA
KASQLDBA
Asked: 2015-01-28 11:41:41 +0800 CST2015-01-28 11:41:41 +0800 CST 2015-01-28 11:41:41 +0800 CST

SQL server 2008R2 及以上版本中的备份压缩

  • 772

最近我们有一个新的服务器要照顾,发现有两个数据驱动器:

S:1 TB,其中驻留 10 个数据库(mdfs 和 ldf,虽然它们应该在不同的驱动器上,但这就是我们设置的方式),其中 DB 的最大大小为 780 GB,其余很小。

X:此处类似的场景以及 720 GB 的 DB 驻留在小和位,总共 10 个 DB

现在,我们被要求执行备份策略,为此我确信我们缺少备份驱动器,因为除了 C: 和以上两个之外不存在任何其他驱动器。

由于这是 sql server 2008R2 企业版,因此​​已启用压缩功能,我们可以进行压缩备份:

但我的问题是如何预测或计算容纳备份所需的驱动器大小,这意味着使用压缩功能我如何预测接近备份这 20 个用户数据库所需的磁盘空间量。

sql-server sql-server-2008-r2
  • 2 2 个回答
  • 2110 Views

2 个回答

  • Voted
  1. LowlyDBA - John M
    2015-01-28T11:51:08+08:002015-01-28T11:51:08+08:00

    您无法完全预测它,但您可以通过压缩备份较小的数据库,并且如果数据集相似(基于下面列出的因素),您可以预测一个可以应用于较大数据库的比率。

    在这里引用MSDN 关于压缩是最简单的:

    要计算备份的压缩率,请使用备份集历史记录表的 backup_size 和compressed_backup_size 列中的备份值,如下所示:

    backup_size:compressed_backup_size
    

    例如,3:1 的压缩比表示您节省了大约 66% 的磁盘空间。要查询这些列,可以使用以下 Transact-SQL 语句:

    SELECT backup_size/compressed_backup_size FROM msdb..backupset;
    

    压缩备份的压缩率取决于已压缩的数据。多种因素会影响获得的压缩比。主要因素包括:

    • 数据的类型。
    • 字符数据比其他类型的数据压缩更多。
    • 页面上各行之间数据的一致性。
    • 通常,如果一个页面包含多个行,其中一个字段包含相同的值,则该值可能会发生显着压缩。相反,对于包含随机数据或每页仅包含一个大行的数据库,压缩备份几乎与未压缩备份一样大。
    • 数据是否加密。
    • 加密数据的压缩率明显低于同等的未加密数据。如果使用透明数据加密来加密整个数据库,那么压缩备份可能不会减少太多(如果有的话)。
    • 数据库是否压缩。
    • 如果数据库是压缩的,那么压缩备份可能不会减少太多(如果有的话)。
    • 1
  2. Best Answer
    Shanky
    2015-01-28T21:00:43+08:002015-01-28T21:00:43+08:00

    但我的问题是如何预测或计算容纳备份所需的驱动器大小

    来自在线图书文档。如果你看到最后一部分,它会说

    对于压缩备份,最终备份文件的大小取决于数据的可压缩程度,而is unknown before the backup operation finishes. 因此,默认情况下,当使用压缩备份数据库时,数据库引擎使用 apre-allocation algorithm作为备份文件。此算法为备份文件预先分配数据库大小的预定义百分比。如果在备份操作期间需要更多空间,数据库引擎会增大文件。如果最终大小小于分配的空间,则在备份操作结束时,数据库引擎会将文件收缩到备份的实际最终大小。

    要允许备份文件仅根据需要增长以达到其最终大小,请使用跟踪标志 3042。跟踪标志 3042 会导致备份操作绕过默认的备份压缩预分配算法。如果您需要通过仅分配压缩备份所需的实际大小来节省空间,则此跟踪标志很有用。但是,使用此跟踪标志可能会导致轻微的性能损失(可能会增加备份操作的持续时间)。

    当您开始压缩备份时,您会看到在驱动器上创建了一些大小的备份文件,但在备份操作期间这不是正确的大小,它可能会增长并且最终大小会增加。您可以使用压缩启动备份并查看大小,然后试探性地将其乘以您想要保留的天数加上更多空间。这将再次为您提供备份驱动器的暂定大小。我还要说更多空间来备份驱动器会更安全

    • 1

相关问题

  • SQL Server - 使用聚集索引时如何存储数据页

  • 我需要为每种类型的查询使用单独的索引,还是一个多列索引可以工作?

  • 什么时候应该使用唯一约束而不是唯一索引?

  • 死锁的主要原因是什么,可以预防吗?

  • 如何确定是否需要或需要索引

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve