为何数据库表的保留空间这么庞大?

路过路人乙 2014-11-12 05:09:22
数据库版本是SQL2005.
数据库增长迅猛.1年不到就35G了.今天查了下每个表占用空间.如下图:


这些保留空间居然达到8G.甚至12G...这简直是吃硬盘霸王..

请问是否是数据库的设置不对?或者需要其他什么手段?造成这种情况的原因是什么?
...全文
166 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
發糞塗牆 2014-11-12
  • 打赏
  • 举报
回复
虽然没有直接的证据说明,但是不排除,因为GUI操作有些操作的方式是不一样的,比如修改一列的属性,GUI是先创建一个“修改后”的表,然后把数据导过去新表,然后删除原表再重命名。如果用T-SQL,直接修改元数据即可。
路过路人乙 2014-11-12
  • 打赏
  • 举报
回复
引用 3 楼 DBA_Huangzj 的回复:
那你对比一下其他地方的程序的数据库,看看有没有一些JOB、数据库配置和这里的不同
我核实了下数据库的一些配置..基本没变.. 但是客户喜欢通过企业管理器直接打开表编辑..直接修改数据什么的...这些会有影响吗
路过路人乙 2014-11-12
  • 打赏
  • 举报
回复
引用 5 楼 yupeigu 的回复:
重建表应该只能清除碎片,而不能够释放空闲空间。 应该是你的表有大量插入,然后又删除了,是的表的大量空间都释放了,变成了 未用空间。 如果真需要释放这些未用空间,需要 新建一个表,然后把数据插入到新表,然后 修改新表的名称 为原表名称。 但是我觉得 未用空间那么大,也不是太大的问题,这样可以加快插入的速度,而不是在 表空间不够时,向系统申请 空间,这样速度肯定慢了。
客户就是觉得现在数据库速度慢了才反馈到我们这..我是找了半天没找到明确的原因...
路过路人乙 2014-11-12
  • 打赏
  • 举报
回复
引用 4 楼 x_wy46 的回复:
是不是有大批量删除数据的动作?
应该不会...这些数据都是非常重要的数据.他们也不能删 但是客户喜欢在数据库中直接打开表,然后直接对表进行操作..比如修改之类的操作... 不排除他们可能插入部分数据后删除...
卖水果的net 版主 2014-11-12
  • 打赏
  • 举报
回复
之前肯定存过这么多数据, 后来又删除了。 你检查一下,是不是经常建立一些临时表。
LongRui888 2014-11-12
  • 打赏
  • 举报
回复
重建表应该只能清除碎片,而不能够释放空闲空间。 应该是你的表有大量插入,然后又删除了,是的表的大量空间都释放了,变成了 未用空间。 如果真需要释放这些未用空间,需要 新建一个表,然后把数据插入到新表,然后 修改新表的名称 为原表名称。 但是我觉得 未用空间那么大,也不是太大的问题,这样可以加快插入的速度,而不是在 表空间不够时,向系统申请 空间,这样速度肯定慢了。
专注or全面 2014-11-12
  • 打赏
  • 举报
回复
是不是有大批量删除数据的动作?
發糞塗牆 2014-11-12
  • 打赏
  • 举报
回复
那你对比一下其他地方的程序的数据库,看看有没有一些JOB、数据库配置和这里的不同
路过路人乙 2014-11-12
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
有可能是表的列数据类型定义不合理或者碎片问题,可以考虑先重建一下聚集索引。还有看看如char/nchar这类列是否很多
字段基本以数值型字段居多. 只有log_bdlr这个表中基本都是varchar类型字段. 程序还在几个地方同时跑着.基本都跑了差不多一年..数据量是差不多的.但是,另外几个地方的数据库文件大小只有这个的零头..才几个G....
發糞塗牆 2014-11-12
  • 打赏
  • 举报
回复
有可能是表的列数据类型定义不合理或者碎片问题,可以考虑先重建一下聚集索引。还有看看如char/nchar这类列是否很多

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧