请老大帮忙解释一下 nchar--一個字符佔到兩個字節,轉為k單位;這是固定長度 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 exec sp_MSforeachtable @command1="sp_spaceused 'table_2019'"exec sp_MSforeachtable @command1="sp_spaceused 'table_2020'"name rows reserved data index_size unused Table_2019 20 144 KB 80 KB 16 KB 48 KB Table_2020 20 208 KB 160 KB 16 KB 32 KB 简单点的讲,Table_2019的一个数据页上可以放2条记录Table_2020的一个数据页上只能放1条记录.所以Table_2020的数据页的需求数是Table_2019的两倍。 实验了一下,应该是这样,每个数据页是8k也就是1024*8 =8192 bytes.其中要有存放页头,行偏移量等等其他'控制数据'的空间,实际能放用户数据的空间应该就是8076到8080之间.(根据实验结果推测的,nchar的一个字符是两个字节,2019*2*2=8038,2020*2*2=8080).所以一个8k的页是放不下两个nchar(2020)的. 上边有点写错了,怎不能修改呢...(根据实验结果推测的,nchar的一个字符是两个字节,2019*2*2=8076,2020*2*2=8080). 严格按照联机帮助上的算法算一下就知道了, 第一个表2记录/而, 第二个1记录/页DECLARE @Num_Cols int, -- 总列数(固定长度和可变长度) @Fixed_Data_Size int, --= 所有固定长度列的总字节大小 @Num_Variable_Cols int, -- = 可变长度列的数量 @Max_Var_Size int --= 所有可变长度列的最大总字节大小SELECT @Num_Cols = 1, @Fixed_Data_Size = 2019 * 2, @Num_Variable_Cols = 0, @Max_Var_Size = 0 -- 保留行中称为空位图的部分以管理列的为空性。计算大小:DECLARE @Null_Bitmap intSELECT @Null_Bitmap = 2 + ((@Num_Cols + 7) / 8)--只应使用该表达式的整数部分。而去掉其余部分。--计算可变长度数据的大小:DECLARE @Variable_Data_Size int--如果没有可变长度列,请将 Variable_Data_Size 设置为 0。SELECT @Variable_Data_Size = 0--计算总的行大小:DECLARE @Row_Size intSELECT @Row_Size = @Fixed_Data_Size + @Variable_Data_Size + @Null_Bitmap + 4--公式中的值 4 是数据行的行标题开销。--下一步,计算每页的行数(每页有 8096 可用字节):SELECT Rows_Per_Page = 8096 / (@Row_Size + 2) 那么:在 SQL Server 2000 中,一行内最多包含的数据量是 8060 字节不是都超过了吗?望解释一下 菜鸟提问 select 没有的值 删除全文目录删除不掉 数据库证书的备份问题 数据类型smallint和float分别是多少位?急问 怎样得到这样的联合查询???谢!(没什么分了!拜托了!) 贴出你们的分页存储过程吧,找了好久没找个好用的 SQL存储过程返回的值的问题,高手请进! 数据库开发那种开发工具最流行?最有钱途? 我刚对一个表进行了修改操作,马上想回到修改前的状态怎么做? 菜鸟提问 如何查询三个表中的数据
exec sp_MSforeachtable @command1="sp_spaceused 'table_2020'"name rows reserved data index_size unused
Table_2019 20 144 KB 80 KB 16 KB 48 KB Table_2020 20 208 KB 160 KB 16 KB 32 KB
Table_2020的一个数据页上只能放1条记录.所以Table_2020的数据页的需求数是Table_2019的两倍。
其中要有存放页头,行偏移量等等其他'控制数据'的空间,实际能放用户数据的空间应该就是8076到8080之间.
(根据实验结果推测的,nchar的一个字符是两个字节,2019*2*2=8038,2020*2*2=8080).
所以一个8k的页是放不下两个nchar(2020)的.
(根据实验结果推测的,nchar的一个字符是两个字节,2019*2*2=8076,2020*2*2=8080).
@Num_Cols int, -- 总列数(固定长度和可变长度)
@Fixed_Data_Size int, --= 所有固定长度列的总字节大小
@Num_Variable_Cols int, -- = 可变长度列的数量
@Max_Var_Size int --= 所有可变长度列的最大总字节大小
SELECT
@Num_Cols = 1,
@Fixed_Data_Size = 2019 * 2,
@Num_Variable_Cols = 0,
@Max_Var_Size = 0
-- 保留行中称为空位图的部分以管理列的为空性。计算大小:
DECLARE
@Null_Bitmap int
SELECT
@Null_Bitmap = 2 + ((@Num_Cols + 7) / 8)--只应使用该表达式的整数部分。而去掉其余部分。
--计算可变长度数据的大小:
DECLARE
@Variable_Data_Size int
--如果没有可变长度列,请将 Variable_Data_Size 设置为 0。
SELECT
@Variable_Data_Size = 0--计算总的行大小:
DECLARE
@Row_Size int
SELECT
@Row_Size = @Fixed_Data_Size + @Variable_Data_Size + @Null_Bitmap + 4--公式中的值 4 是数据行的行标题开销。
--下一步,计算每页的行数(每页有 8096 可用字节):SELECT
Rows_Per_Page = 8096 / (@Row_Size + 2)