分享数字类型的存储---抛砖引玉
时间:2011-10-12
来源:互联网
我也不知道这样的测试方法是否本身就有问题,希望知情者赐教。
SQL code
int数据是如何存储的? Myisam引擎,5.1.59-community-log版本 1:测试最简单的INT,单个字段 mysql> create table test (id int); Query OK, 0 rows affected (0.01 sec) mysql> system ls -al /var/lib/mysql/DB |grep test.MYD -rw-rw---- 1 mysql mysql 0 Oct 11 23:29 test.MYD mysql> insert into test values(2); Query OK, 1 row affected (0.00 sec) mysql> system ls -al /var/lib/mysql/DB |grep test.MYD -rw-rw---- 1 mysql mysql 7 Oct 11 23:30 test.MYD mysql> #插入一条记录,占用了7个字节。 #用UltraEdit打开这个文件查看,内容如下: FD 02 00 00 00 00 00 #16进制显示的,第二个字节存储的是数据。 猜的(第一位FD是记录开始标志位,2-5位是数据位,6-7是记录结束标志) 如果只有一个INT字段,那么一条记录就比标准的4字节,多出了3个字节。 再测试2个字段的 mysql> drop table test; Query OK, 0 rows affected (0.00 sec) mysql> create table test (id int,a tinyint); Query OK, 0 rows affected (0.03 sec) mysql> system ls -al /var/lib/mysql/DB |grep test.MYD -rw-rw---- 1 mysql mysql 0 Oct 11 23:37 test.MYD mysql> insert into test values(4,5); Query OK, 1 row affected (0.00 sec) mysql> system ls -al /var/lib/mysql/DB |grep test.MYD -rw-rw---- 1 mysql mysql 7 Oct 11 23:37 test.MYD mysql> 2个字节,一条记录,也是占用7个字节 #用UltraEdit打开这个文件查看,内容如下: F9 04 00 00 00 05 00 猜的(第1位变成F9了,第2-5位是第一个字段的数据位,第6位是第2个字段的数据位,第7位是记录结束位) 再测试3个字段的 mysql> drop table test; Query OK, 0 rows affected (0.00 sec) mysql> create table test (id int,a tinyint,b bigint); Query OK, 0 rows affected (0.00 sec) mysql> system ls -al /var/lib/mysql/DB |grep test.MYD -rw-rw---- 1 mysql mysql 0 Oct 11 23:42 test.MYD mysql> insert into test values(4,5,6); Query OK, 1 row affected (0.00 sec) mysql> system ls -al /var/lib/mysql/DB |grep test.MYD -rw-rw---- 1 mysql mysql 14 Oct 11 23:42 test.MYD mysql> #用UltraEdit打开这个文件查看,内容如下: F1 04 00 00 00 05 06 00 00 00 00 00 00 00 猜的(第1位F1,2-5是第一个字段的数据位,第6位是第二个字段的数据位,第7-14位是第三个字段的数据位。记录开始位变了,没有结束位了) 3个字段的数据存储大小符合规则。1+4+1+8=14 第一位是记录开始标志位,这个基本肯定,而且标示了字段的数据类型。行记录字节数低于7字节的,用00补全,占用7字节。超过7字节的,按实际字段字节数存储。 用4个字段验证,字节数也是正确的。
作者: zuoxingyu 发布时间: 2011-10-12
和这个帖子的楼主探讨后作的实验。
相关信息看这个帖子。
作者: zuoxingyu 发布时间: 2011-10-12
作者: Mr_Bean 发布时间: 2011-10-12
作者: rucypli 发布时间: 2011-10-12
http://topic.csdn.net/u/20111012/09/6110254b-a68e-49d9-a18a-a061e9bebe89.html?seed=194308995&r=75946793#r_75946793
和这个帖子的楼主探讨后作的实验。
相关信息看这个帖子。
测试一下引用草组
作者: mycodeid 发布时间: 2011-10-12
不过话说一般应用的话能够根据自己需求选择合理的数字类型就够了。
作者: zhaoyun0209 发布时间: 2011-10-12
很少有人这么钻研了
确实,精神可嘉,估计与系统、MYSQL的文件分配有关
作者: WWWWA 发布时间: 2011-10-12
作者: hexun831012 发布时间: 2011-10-12
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28