相关疑难解决方法(0)

TinyInt 的 SQL SERVER 存储

在 SQL Server 中,为什么一个 tinyint 以 9B 存储在行中。出于某种原因,在 NULL 位图掩码的末尾似乎还有一个额外的字节。

    使用临时数据库;
    走

    创建表 tbl
    (
        我 TINYINT 不为空
    );
    走

    插入 tbl (i)
        值 (1) ;
    走

    DBCC IND ('tempdb','tbl',-1) ;
    走

    DBCC TRACEON (3604) ; -- 页面转储将进入控制台
    走

    DBCC 页面 ('tempdb',1,168,3);
    走

结果(由于 DBCC PAGE 首先显示最低有效字节,因此我颠倒了字节):

Record Size = 9B
10000500 01010000 00
TagA = 0x10 = 1B
TagB = 0x00 = 1B
Null Bitmap Offset = 0x0005 = 2B
Our integer column = 0x01 = 1B
Column Count …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008

12
推荐指数
2
解决办法
543
查看次数

计算表的行大小和最大行大小

问题:

有什么方法可以计算表创建占用的字节数,我知道您可以从information_schema.tables 中获取一些信息,但该信息不够准确。

实际需要的只是innodb表定义的字节数,collat​​ion也可以认为是utf-8-general-ci

例如表测试如下

创建表测试

col1 varchar(25),
col2 int,
col3 varchar(3),
col4 char(15),
col5 datetime
);

现在需要知道根据表中列的类型可以在一行中累积的总行大小。

在 MSSQL 中找到了某种类似的解决方案,但需要它的 MySQL 版本

用于估计任何表的行大小的脚本

任何帮助深表感谢。

mysql innodb database-design information-schema

12
推荐指数
2
解决办法
5万
查看次数