SQL Server 数据库只是作为查询数据库,原来大小1.2G左右,无写入操作,但使用半年来,已经增长到2.7G。
不知道是什么原因导致它增大的,所有代码都是我写的,所以我知道,根本没有对数据库进行写操作,为什么这么大?
这是不包含日志文件的mdf文件的大小,已经Shrink也没有用,各位有什么高招没?
三天前数据库大小只有1.7G,我导入了一批数据,脚本只有8M大小的一批数据,今天看了下数据库,竟然涨到2.8G, 天哪 ! 这是我的个人数据库,这个网站也几乎只有我一个人在用,在本机上部署。
我觉得这个数据库的真实大小应该在1G左右,因为数据都是我导入的,使用sql compact 数据库,只有700M左右。
使用Sqlite也只有不到1G的大小啊。
有一种东西叫做索引碎片。
能干掉么,怎么弄?
@沧海一杰:
SELECT page_count,avg_page_space_used_in_percent,record_count,avg_record_size_in_bytes,avg_fragmentation_in_percent,fragment_count FROM sys.dm_db_index_physical_stats (DB_ID('Nx'),object_id('dbo.Person'),NULL,NULL,'sampled')
你先看看索引随便大不大, 再考虑是否清理
查出来结果很多,主要看哪一个呢?我想清掉,不管性能,只有能保留表数据和基本功能就行。因为我需要一个干净的最小的数据库要打包用。这个太大了,太占空间了
@沧海一杰: 这个问题我去年也曾经找地解决方案,但一直没有解决
@沧海一杰: 主要看这个字段 avg_record_size_in_bytes~ 你可以看看大不大。 然后决定是否删除。
索引也是要占空间的,会不会是索引占据的?
能干掉么,怎么弄?
@沧海一杰: 搜索一下数据库索引,了解一下它的作用,再考虑“干掉”的问题。这项目就是这么缺硬盘空间吗??
@liqipeng: 缺,这个我准备部署成一个安装包,给别人直接部署到单机上。
@沧海一杰: 索引还是要保留的,不然会影响查询速度的。可以重建索引来回收一定的磁盘空间,
@liqipeng: 忽略性能,这个查询很快的,所有人都能接受。关键是大小。
@沧海一杰: 还有主键约束和唯一约束自动创建的索引是不能删除的。
可以考虑将数据做成sql脚本,写个批处理用sqlcmd命令执行导入。
@liqipeng: @请叫我头头哥: 我忘记了重要的一点,可能我的空间增大是物化视图引起的。
@沧海一杰: 原来还有这个没想到的,哈哈😄😄😄
看看是不是日志占用太多空间了
说了,不算日志,我已经把日志功能禁掉了,以前的日志删掉了
@沧海一杰: 算上日志都快5G了,导入到SqlLite里就几百M