行大小计算测试

数据库中每一行到底占用多少空间,在这里,做个小测试~~~这里只做了堆表的计算,如果包含索引,按照文档把索引的列也加上就OK啦~

建个测试表,然后用DBCC PAGE打印出Slot的信息

CREATE TABLE TstA
(
 col1 CHAR(5) NULL,
 col2 CHAR(5) NULL,
 col3 VARCHAR(5) NULL,
 col4 VARCHAR(10) NULL,
 col5 VARCHAR(50) NULL
)

INSERT INTO TstA (col1,col2,col3,col4,col5) VALUES (‘aa1‘,‘2222222222‘,‘joan2‘,‘aoaonfoen‘,‘1111111‘)
dbcc ind(TestDB, Object_id(‘TstA‘),-1) 
DBCC PAGE(TestDB,1,11957,1)

然后我就直接把slot的消息贴出来分析吧~~

-------------------------------------------------------------------------------------------------------------------------------------

Slot 0, Offset 0x60, Length 51, DumpStyle BYTE

Record Type = PRIMARY_RECORD Record Attributes = NULL_BITMAP VARIABLE_COLUMNS

Record Size = 51

Memory Dump @0x0A93C060

00000000: 30000e00 61613120 206a6f61 6e320500 †0...aa1 joan2..

00000010: 00030023 002c0033 00323232 32323232 †...#.,.3.2222222

00000020: 32323261 6f616f6e 666f656e 31313131 †222aoaonfoen1111

00000030: 313131†††††††††††††††††††††††††††††††111

4        8       12      16       20       24       28      32       36      40       44        48      52

30000e00 61613120 206a6f61 6e320500 00030023 002c0033 00323232 3232323 32323261 6f616f6e 666f656e 31313131 313131

1       2         3         4      5      6            7                    8                    9

1: 固定长度列结束位置

2: 固定长度第一列(col1)

3: 固定长度第二列(col3) --如果之后还有更多的列,继续往后排

4: 行包含的栏位总数,本例为5

5: 空值维护:计算方式为 2+ (可为空列数+7)/8

6: 每一个可变列的结束位置。长度计算   2 + (可变列列数*2)

7+:变长列的每一个填充列

验证了这一句话,每行的开销

  • ix bytes per row for status information and length information.
  • One bit per fixed width column, rounding up to the nearest byte.
  • If there are any variable length columns - four bytes for the first, plus two bytes for each additional variable length column
  • An additional two bytes per row for the offset pointer located at the end of the page.

-----------------------------------------------------------------------------------------------------

经过测试,无论列的顺序怎么排,首先会先把定长的字段先排出来,然后再排变长字段~好吧~测试结束

小弟不才~欢迎大家指出不足

参考:

  http://technet.microsoft.com/zh-cn/library/ms189124.aspx

PS:上面2个DBCC 的语法

dbcc ind(dbname|dbid, tbname|tbid,-1)

dbcc page ( {‘dbname‘ | dbid}, filenum, pagenum [, printopt={0|1|2|3} ])

The filenum and pagenum parameters are taken from the page IDs that come from various system tables and appear in DBCC or other system error messages. A page ID of, say, (1:354) has filenum = 1 and pagenum = 354.

The printopt parameter has the following meanings:

0 - print just the page header 
1 - page header plus per-row hex dumps and a dump of the page slot array (unless its a page that doesn‘t have one, like allocation bitmaps) 
2 - page header plus whole page hex dump 
3 - page header plus detailed per-row interpretation

时间: 2024-10-12 12:02:22

行大小计算测试的相关文章

Jmeter - 在Linux整理和计算测试结果

我们现在描述的是:在Linux系统使用Jmeter执行性能测试. 所以当执行完测试以后,就要计算一下测试结果,反馈给开发人员嘛. 在Linux系统使用Jmeter执行性能测试都包含哪些步骤,来,回顾一下: [1] 构建1个可供Linux使用的Jmeter测试脚本 [2] 在Linux执行性能测试 [3] 在Linux执行性能测试的过程中,实时关注"测试服务器"(对,那台nginx服务器)的性能 那么,前三件事干完了,就轮到第4件事情了 - 计算一下测试结果. 本篇文档就是讲这第4件事情,开始了开

C++中虚函数工作原理和(虚)继承类的内存占用大小计算

一.虚继承情况下类的内存大小计算 当每个基类中有多个虚函数时,并且在虚继承的情况下,内存是如何分配的,如何计算类的大小,下面举例说明: #include<iostream> using namespace std; class A { public: int a; virtual void aa(){}; }; class D { public: virtual void dd(){}; }; class C { public: virtual void cc(){}; }; class B

结构体在内存中所占字节大小计算

作者 :卿笃军 今天上课,老师给我们演示了一下,计算结构体在内存中所占的字节大小.开始给了我们几个例子,然后要我们自己摸索出规律. 注:以下测试全是在win7_64bit  Devcpp 5.5.3环境下测试的.(char 1字节,int 4字节, double 8字节). 也许:你可能认为下面这个答案是 1+4 = 5   (×) #include <stdio.h> struct node { char a; int b; }; int main() { struct node QING;

(一一七)基本文件操作 -SDWebImage清除缓存 -文件夹的大小计算

在iOS的App沙盒中,Documents和Library/Preferences都会被备份到iCloud,因此只适合放置一些记录文件,例如plist.数据库文件.缓存一般放置到Library/Caches,tmp文件夹会被系统随机清除,不适宜防止数据. [图片缓存的清除] 在使用SDWebImage时,图片被大量的缓存,有时需要获取缓存的大小以及清除缓存. 要获取缓存大小,使用SDImageCache单例的getSize方法拿到byte为单位的缓存大小,注意计算时按1K=1000计算. 拿到M

C++类所占内存大小计算

C++类所占内存大小计算 转载时请注明出处和作者联系方式文章出处:http://blog.csdn.net/chenchong08作者联系方式:[email protected] 说明:笔者的操作系统是32位的. class A {}; sizeof( A ) = ?sizeof( A ) = 1明明是空类,为什么编译器说它是1呢?空类同样可以实例化,每个实例在内存中都有一个独一无二的地址,为了达到这个目的,编译器往往会给一个空类隐含的加一个字节,这样空类在实例化后在内存得到了独一无二的地址.所

TensorFlow与caffe中卷积层feature map大小计算

刚刚接触Tensorflow,由于是做图像处理,因此接触比较多的还是卷及神经网络,其中会涉及到在经过卷积层或者pooling层之后,图像Feature map的大小计算,之前一直以为是与caffe相同的,后来查阅了资料发现并不相同,将计算公式贴在这里,以便查阅: caffe中: TF中: 参考: http://blog.csdn.net/lujiandong1/article/details/53728053 http://www.cnblogs.com/denny402/p/5071126.h

[Android Memory] Shallow Heap大小计算释疑

转载自:http://blog.csdn.net/sodino/article/details/24186907 查看Mat文档时里面是这么描述Shallow Heap的:Shallow heap is the memory consumed by one object. An object needs 32 or 64 bits (depending on the OS architecture) per reference, 4 bytes per Integer, 8 bytes per

sqlplus中设定行大小、页大小、字符列格式、数字列格式、清屏

        sqlplus虽然是DBA们最为经常使用的Oracle客户端工具,但是它在输出结果格式化上不是很好,如折行.分页不好等,所以一般启动sqlplus后多少都要做些设置,如linesize.pagesize等. 常用命令 设置linesize.pagesize. sqlplus中设定行大小    SQL> set linesize 32767 sqlplus中设定页大小    SQL> set pagesize 50000 设置列格式 sqlplus中设定字符列格式    SQL&

java对象占用内存大小计算方式

案例一: User public class User { } UserSizeTest public class UserSizeTest { static final Runtime runTime=Runtime.getRuntime(); public static void main(String[] args) { final int count = 100000; User[] us=new User[count]; long heap1 = 0; for (int i = -1;