免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1260 | 回复: 0
打印 上一主题 下一主题

MYISAM 静态格式数据存储结构 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-31 10:22 |只看该作者 |倒序浏览
1. 从简单的例子开始
  1.1 创建测试数据
  drop table if exists heyf_5 ;
  create table heyf_5 (id int , name char(10),addr char(20)) engine myisam ;
  insert into heyf_5 values (12,'hyf','street-1') ,(13,'steven','street-2') ;
  system hexdump /opt/mysql/data/test/heyf_5.MYD
  ------------------------------------------------
  0000000 0cf1 0000 6800 6679 2020 2020 2020 7320
  0000010 7274 6565 2d74 2031 2020 2020 2020 2020
  0000020 2020 f120 000d 0000 7473 7665 6e65 2020
  0000030 2020 7473 6572 7465 322d 2020 2020 2020
  0000040 2020 2020 2020
  -----------------------------------------------------
  --由于我们这一节讨论的是静态格式,我们这里取的数据类型都是固定长度的.
  1.2 开始读取数据
  --根据我们所定义的数据特征,我们能容易地从数据中分出各行:
  ROW1: 0cf1 0000 6800 6679 2020 2020 2020 7320 7274 6565 2d74 2031 2020 2020 2020 2020 2020 20
  ROW2: f1 000d 0000 7473 7665 6e65 2020 2020 7473 6572 7465 322d 2020 2020 2020 2020 2020 2020
  我们拿第一行数据来分析:
  由于数据
存储

硬盘
里时,双字节是低位先存储,高位后存储.所以我们读数据的时候要反过来一下:
  ROW1: f1 0c 00 00 00 68 79 66 20 20 20 20 20 20 20 73 74 72 65 65 74 2d 31 20 ... 20
  其中:
  -----------------------------------------------------
  f1 : Header (0>非NULL,1>NULL),
  在这里 1111 0001 ,其中三个"0"表示三个可空字段,并且没有为NULL的字段.
  --下面开始就是实际的值
  0c 00 00 00 : COLUMN ID INT , 4个字节,在这里表示12.
  68 79 66 20 20 20 20 20 20 20 : COLUMN name char(10) 20个字节 ,这里十六进制转换成字符刚好是"hyf",其它填空.
  73 74 72 65 65 74 2d 31 20 ... 20 : COLUMN addr char(20) ,20个字节
  -----------------------------------------------------
  有兴趣的同学们同样可以用同样的方法分析一下ROW2的数据.
  由于固定格式的数据,每个字段的长度都是固定的,所以读取数据的时候特别容易计算字段的长度和行的长度.
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/97806/showart_1949990.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP