Sql server SQL Server移动";表“可用空间”;至;“
sql-server
Sql server SQL Server移动";表“可用空间”;至;“数据库可用空间”;,sql-server,Sql Ser
Sql server SQL Server移动";表“可用空间”;至;“数据库可用空间”; sql-server Sql server SQL Server移动";表“可用空间”;至;“数据库可用空间”;,sql-server,Sql Server,我有一个相当大的数据库(每天多达几百个分片表,mdf文件上的总容量为1.3TB)现在,由于我们希望尽最大努力阻止mdf进一步增长,我们将从现有表中删除尽可能多的不必要数据我们知道:从表中删除数据不会减少mdf文件大小缩小文件/数据库是毫无疑问的从旧表(如表20161231)中删除不会为新表(如表20170927)释放数据库空间,除非重建旧表所以我们理解表重建是必要的,修改索引似乎没有帮助,根据“exec sp_spaceused”的结果,空间仍然没有释放因此,我们现在正在做以下工作 我有一个相当大的数据库(每天多达几百个分片表,mdf文件上的总容量为1.3TB) 现在,由于我们希望尽最大努力阻止mdf进一步增长,我们将从现有表中删除尽可能多的不必要数据 我们知道: 从表中删除数据不会减少mdf文件大小缩小文件/数据库是毫无疑问的从旧表(如表20161231)中删除不会为新表(如表20170927)释放数据库空间mssql数据库空间,除非重建旧表所以我们理解表重建是必要的,修改索引似乎没有帮助,根据“exec sp_spaceused”的结果,空间仍然没有释放 因此,我们现在正在做以下工作:
从表_20161231中删除,其中数据=‘不必要’从表\u 20161231中选择*进入表\u 20161231\u压缩升降台表_20161231再次执行“exec sp_spaceused”似乎显示了一个积极的结果,因为它为新表提供了更多的“未分配空间” 有人知道一种释放已删除数据空间的单行方法吗? 当您从表中删除数据时,SQL Server会保留该空间以供重用,因为它假定该空间最终会被填满。如果你想要它回来,不幸的是逃避是唯一的方法。它可能充满危险,但作为一个一次性的,您知道数据将不会恢复到那个大小,然后您会处理索引碎片,然后它应该是好的 这样做可能是最安全的方法,您可以编写脚本并使用
更改表名 迈克·沃尔什写了一篇很不错的博客,讲述了当你从堆中删除时,会发生什么。如果只是删除行,堆不会释放空间,可能的解决方法是创建聚集索引或使用
删除: 从堆中删除行从堆中删除行时,数据库引擎可能会使用行或页锁定进行操作。作为一个结果,通过删除操作变为空的页面仍保持分配状态到堆里去。未释放空页时,关联的空间不能被数据库中的其他对象重用。删除在堆和释放页中的行中,使用以下方法之一 以防万一,如果您不知道如何使用
,以下是一个示例:
附言 因此,我们现在正在做以下工作:
有人知道一种释放已删除数据空间的单行方法吗 是的,可以从SQL Server 2008开始,在1个命令中完成:
>>>从旧表(如表20161231)中删除不会为新表腾出数据库空间table@sepupic,你问的似乎超出了我的知识范围,我只是从非常简单的表中进行非常简单的删除,我如何找到你需要知道的内容?很简单。在SSMS中为表编写脚本,并查看表上是否有聚集索引。如果一个表没有聚集索引,它就是一个堆。请检查它,这很重要,因为如果不是在特定条件下,堆不会释放可用空间conditions@sepupic我尝试编写CREATETABLE语句的脚本,但是它没有聚集索引。所以它就像我想的那样是一个堆。我会用链接发布答案,并解释如何在一分钟内避免这种情况嗯,我们希望避免缩小,因为这是一个实时生产数据库,每秒钟都有许多事务在进行,我们希望尽量减少做一些占用大量资源的事的需要,例如HD IO..@dbajtr OP的问题不在于向操作系统释放空间,他从堆中删除,而它们不向数据库释放空间,删除后空闲页面仍然分配给堆。 (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |