Sql server 减少sql数据库的磁盘空间
我有一个数据库,有2TB的数据,我想通过删除一些行和删除一些无用的列,把它减少到500Go,但我有其他优化的想法,我需要一些问题的答案 我的数据库有一个.mdf文件,还有9个.ndf文件,每个文件的初始值都是100GoSql server 减少sql数据库的磁盘空间,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有一个数据库,有2TB的数据,我想通过删除一些行和删除一些无用的列,把它减少到500Go,但我有其他优化的想法,我需要一些问题的答案 我的数据库有一个.mdf文件,还有9个.ndf文件,每个文件的初始值都是100Go 我是否应该将每个.ndf文件的初始值大小减少到50Go?此操作会影响我的数据吗 删除索引有助于减少空间 PS:我的数据库只包含一个表,其中有一个聚集索引和两个其他非聚集索引 我想删除两个非聚集索引 删除insertdate列 如果您对优化有任何其他想法,在删除任何索引之前运行
- 我想删除两个非聚集索引
- 删除insertdate列
如果您对优化有任何其他想法,在删除任何索引之前运行这两个视图将非常有用 sys.dm\u db\u索引\u使用情况\u统计数据 sys.dm_db_index_operation_stats 它们会让您知道是否有任何一个用于支持查询。您最不希望看到的是删除索引并开始在2TB表上看到完整的表扫描 如果您不能将表拆分为关系模型,那么首先尝试这些方法
如果您的数据库只有一个表,并且您没有使用任何关系功能,那么最好实现自己的平面文件存储和索引系统。您不能减少初始文件大小(除非在最新版本的SQL Server中更改了该大小)因此,您建议我在第一个数据库的基础上创建另一个数据库?您可以考虑在删除记录后缩小数据库以恢复由于碎片造成的存储。@Souregi如果运行
exec sp_spaceused'tablename'
,您将看到表上索引的总大小。对于数据类型,我得到了一个varchar(22),一个变量二进制(max)、一个位和一个日期。该表是一个静态表,将来不会更改,我只需要使用聚集索引来帮助用户对其进行快速搜索,并且该列是唯一的。感谢您提供的好信息,但它对我的案例没有帮助:)看起来varbinary是个问题,如果varbinary包含大量重复项,则可以创建一个“超级维度”,并在表中创建一个链接到维度中唯一值的整数。varbinary包含文件,每个文件都不同于其他文件。您在SQL Enterprise上吗?您可以使用压缩表。