如何识别SQL CE数据库中各个表和列的大小?

时间:2012-02-06 09:18:07

标签: database size sql-server-ce

我正在尝试make my database smaller,但我不知道所有数据都用在哪里。

是否有软件可以识别表格和/或列使用的大小?

除了需要空间的桌子之外还有其他什么吗?该软件是否支持列表?

2 个答案:

答案 0 :(得分:1)

不考虑表,索引等的继承成本,这些成本要么你不能或不想做任何事情,并假设你的意思是磁盘足迹。

如果你有一个带有int的表和一个VarChar(128)int是4,那么varchar(128)是132字节*行数。

这是下载/安装吗?如果是这样,你可能会发现谷歌搜索DBCC ShrinkDB,恢复选项很有用。

小心你去哪里,把你的内容换成单词,或截断你的varchars意味着你的代码中有点混乱。同样正常化/非规范化具有自己的成本。您要注意的文件大小也是备份,而不是磁盘上的mdb,默认情况下它总是增长,因此将是最大容量。如果你一直在开发它并且没有备份,那可能会非常愚蠢。

右 首先,每次空间用完时,紧凑型将从1到16页,取决于新的需求。 第二个空间耗尽意味着没有足够的连续存储行,并且CE不会恢复空间,除非你压缩,所以如果你做了很多插入然后一些删除,那么它更多的是可行的,更多的插入部分或全部使用的空间不会被重复使用。

所以在你尝试这个契约之前,否则它将具有可疑的价值<​​/ p>

在代码中或附加SQL Server管理器

选择*

来自INFORMATION_SCHEMA.Columns

将为您提供有关您的数据库的一大堆信息

那么这只是一个基于Data_type和Character_Maximum编写查询来总结的问题。然而,这将为您提供每行的理论最大值。因此NVarChar(50)最多有100个字节,(图像是一个演出!)但如果它中有“Fred”,它将是8 .. 一旦你有一个行大小乘以表的计数 实际大小意味着对每行的每个实际列进行whapping并执行数据化,这对CE来说可能很难。

或者你可以在代码中完成所有操作, 如果你想对它进行重击并回来并没有问题是我的客人,但你没有付给我足够的钱为你做。 :)

虽然我刚刚发现了这一点,但是对谷歌来说,也许它会做你想做的事。

SQl Compact Query Analyser

答案 1 :(得分:1)

请参阅此MS知识库文章:http://support.microsoft.com/kb/827968 - 使用Compact API缩小数据库(如果适用)(或通过Visual Studio Server Explorer中的GUI)