永发信息网

SQL数据库mdf文件巨大!求解决办法。

答案:3  悬赏:50  手机版
解决时间 2021-11-18 10:01
  • 提问者网友:树红树绿
  • 2021-11-17 23:49
SQL数据库mdf文件巨大!求解决办法。
最佳答案
  • 五星知识达人网友:从此江山别
  • 2021-11-18 00:30
统计信息用来存储什么的?
全部回答
  • 1楼网友:躲不过心动
  • 2021-11-18 03:35
sql server的数据是按页存储的,页是记录存储的最小单位!一个页最多4096B左右,就是说一条记录的最大量应在4096之内,你的一个字段就为varchar(8000)了,整个表加起来按最大算10000个字节计算,一条记录需要占用3个页,第3个页面最少只占用了一少半,就不能再利用了。
建议你将一个表分成1:1的两个表或多个表来存储!
再有,可能建立了聚集类的索引,会使空间和存取效率都降低,不要建立聚集类的索引了!
  • 2楼网友:胯下狙击手
  • 2021-11-18 02:04
他使用的是varchar,不是char,所以,最坏的情况是你说三页。
另外,聚集索引是一张表中最宝贵的资源,如果检索的是聚集索引列,数据读取的效率显然最高,怎么可能降低存取效率。
我觉得lz的这个现象还是得根据实际情况分析一下表空间的占用情况。附一个表空间查看语句(非原创):

USE [要查询空间信息的库名]
GO
SELECt
ServerName = CONVERT(sysname, SERVERPROPERTY('ServerName')),
DatabaseID = DB_ID(),
DatabaseName = DB_NAME(),
ObjectID = DATA.id,
Owner = USER_NAME(DATA.uid),
ObjectName = DATA.Name,
Reserved = CONVERT(decimal(15, 2), DATA.Reserved / SPER.PageSperMB),
DataSize = CONVERT(decimal(15, 2), (DATA.DataSize + DATA.[TextSize]) / SPER.PageSperMB),
IndexSize = CONVERT(decimal(15, 2), (DATA.IndexSize - DATA.DataSize - DATA.[TextSize]) / SPER.PageSperMB),
UnUsedSize = CONVERT(decimal(15, 2), (DATA.Reserved - DATA.IndexSize) / SPER.PageSperMB),
DATA.Rows
FROM(
SELECt
O.id, O.uid, O.name, O.xtype,
Reserved = ISNULL(SUM(CASE WHEN IX.indid IN (0, 1, 255) THEN CONVERT(dec(15), IX.reserved) ELSE 0 END), 0),
DataSize = ISNULL(SUM(CASE WHEN IX.indid < 2 THEN CONVERT(dec(15), IX.dpages) ELSE 0 END), 0),
[TextSize] = ISNULL(SUM(CASE WHEN IX.indid = 255 THEN CONVERT(dec(15), IX.used) ELSE 0 END), 0),
IndexSize = ISNULL(SUM(CASE WHEN IX.indid IN (0, 1, 255) THEN CONVERT(dec(15), IX.used) ELSE 0 END), 0),
Rows = ISNULL(MAX(CASE WHEN IX.indid < 2 THEN IX.rows ELSE 0 END), 0)
FROM dbo.sysindexes IX WITH(NOLOCK)
INNER JOIN dbo.sysobjects O WITH(NOLOCK)
ON IX.id = O.id
WHERe O.xtype IN ( 'U')--, 'S')
AND O.status > =0
AND (IX.indid < 2 OR IX.indid = 255)
GROUP BY O.id, O.uid, O.name, O.xtype
)DATA
CROSS JOIN(
SELECt PageSperMB = 1048576. / low, low
FROM master.dbo.spt_values
WHERe number = 1
AND type = 'E'
)SPER
ORDER BY ObjectName, Owner
GO追问话说我只有一张表。另外2个数据库有很多表,之前倒是查看过占用空间情况。软件开发人员说是软件存储的问题,导致异常增大,只是我没明白,无论软件怎么存储,数据插入到库到表应该都差不多吧,为什么就出现这种问题了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯