Chinaunix首页 | 论坛 | 博客
  • 博客访问: 108872
  • 博文数量: 53
  • 博客积分: 2062
  • 博客等级: 大尉
  • 技术积分: 550
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-31 10:14
文章分类

全部博文(53)

文章存档

2011年(1)

2010年(3)

2009年(49)

我的朋友

分类: Mysql/postgreSQL

2009-05-31 16:33:18

1.用单字段来分析行数据:

  1.1 建立测试数据

  drop table if exists heyf_5 ;

  create table heyf_5 (name varchar(50)) type myisam ;

  insert into heyf_5 values ('a'),('b'),('c');

  [root@alisoft-test1 test]# system hexdump /opt/mysql/data/test/heyf_5.MYD

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

  0000000 0003 0d03 01fe 0061 0000 0000 0000 0000

  0000010 0000 0000 0003 0d03 01fe 0062 0000 0000

  0000020 0000 0000 0000 0000 0003 0d03 01fe 0063

  0000030 0000 0000 0000 0000 0000 0000

  000003c

  1.2 开始分析数据

  ROW1: 0003 0d03 01fe 0061 0000 0000 0000 0000 0000 0000

  ROW2: 0003 0d03 01fe 0062 0000 0000 0000 0000 0000 0000

  ROW3: 0003 0d03 01fe 0063 0000 0000 0000 0000 0000 0000

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

  我们拿第一行数据来分析:

  由于数据在里时,双字节是低位先存储,高位后存储.所以我们读数据的时候要反过来一下:

  ROW1: 03 00 03 0d fe 01 61 00 ...

  其中:

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

  03 : start of header - Block type, see mi_dynrec.c, _mi_get_block_info()

  00 03 : actual length (varchar存储的空间为; 实际字符长度+2)

  0d : usused length

  fe : flags (0 表示不为空,1表示为空)

  01 : 该行中该字段实际数据的长度(变长字段才有)

  61 : 实际存储的数据值: 'a'

  00 : 未使用的空间(包括到下一行前的所有00)

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

ChinaUnix-ITpub网站MySQL技术征文大赛第二名

作者:IT168 Steven.He 

阅读(1169) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~