首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >减少sql数据库的磁盘空间

减少sql数据库的磁盘空间
EN

Stack Overflow用户
提问于 2016-12-16 11:02:41
回答 1查看 780关注 0票数 1

我有一个有2TB数据的数据库,我想通过删除一些行和删除一些无用的列来将它减少到500 to,但是我有其他优化的想法,我需要一个以前的一些问题的答案。

我的数据库有一个.mdf文件和9个其他.ndf文件,每个文件的初始大小为100 got。

  1. 我是否应该将每个.ndf文件的初始大小减少到50 to?这个操作会影响我的数据吗?
  2. 删除索引有助于减少空间?

PS :我的数据库只包含一个表,它有一个聚集索引和两个其他非聚集索引,

  • 我要删除两个非聚集索引。
  • 移除插入日期列

如果您有任何其他优化的想法,这将是非常有用的。

EN

回答 1

Stack Overflow用户

发布于 2016-12-16 13:37:37

在删除任何索引之前,请运行这两个视图。

sys.dm_db_index_usage_stats

sys.dm_db_index_operational_stats

它们将让您知道其中是否有一个用于支持查询。最后一件事是删除一个索引,然后开始看到2TB表上的全表扫描。

如果不能将表划分为关系模型,那么首先尝试这些方法。

  1. 检查您的数据类型。

-Can您用VARCHAR代替NVARCHAR还是用CHAR替换NCHAR?(他们占据了一半的空间)

-Does您的表经历了很多更新或插入(上面的视图会告诉您这一点)?如果更新很少,那么考虑将CHAR字段更改为VARCHAR字段。大量的更新会导致页面分裂,导致页面富足。

只存储没有时间的日期的列未声明为Datetime的-Check

-Check值范围在数字字段中,即尝试使用Smallint而不是Int。

  1. 查看表上的活动,更新和插入行为。如果活动意味着很少有页面被重新安排,那么请考虑增加填充系数。
  2. 查看计划缓存,了解如何查询表,如果大部分查询集中在表的特定部分,则实现过滤索引。
  3. 聚集索引是唯一的吗?否则,SQL将创建一个“隐藏的额外整数列”,该列在帽下创建唯一性。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41182960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档