zoukankan      html  css  js  c++  java
  • Mysql Innodb中的int类型字段在文件中是怎么存储的?

    今天记录一个比较有意思的东西,看一下int类型的字段在.ibd文件中是怎么存的。
    int类型是一种有符号类型,四个字节,所以在表示数据的时候只有后面的31位是有效位,最高值为2^31-1。那么如果字段值是1的话,.ibd文件中是不是存储的内容就是0x00000001了呢?下面看一个例子,首先建表并插入数据:

    CREATE TABLE `ttt` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `c` int(11) DEFAULT NULL,
    `d` int(11) DEFAULT NULL,
    `e` bigint(20) DEFAULT null,
    `f` varchar(20),
    PRIMARY KEY (`id`),
    UNIQUE KEY `c` (`c`)
    ) ENGINE=InnoDB;
    
    insert into ttt values(null, -1, 1, 1, 'cccccc');

    其在.ibd文件中的内容为:

    06  /* 变长字段长度列表 */
    00  / * null 标志位 */
    00 00 18 FF C3  /* 记录头 */
    80 00 00 03 00 00  /* 事务id */
    00 00 06 1D C7 00 00 /* 回滚指针 */
    01 53 01 10  /* 主键 */
    7F FF FF FF  / * -1 */
    80 00 00 01 / * 1 */
    80 00 00 00 00 00 00 01 /* bigint 1 */ 
    63 63 63 63 63 63  /* cccccc */

    从上面可以看到1的表示和上面猜想的并不一样。通常符号标记位使用0表示正数,1表示负数,但是这里是正好相反的。并且注意到,-1的表示使用的是补码的方式。

     


    Shopee(虾皮)内推点击此处,岗位多多地,薪资高高地



    转载请注明出处


  • 相关阅读:
    NTP服务器
    sublime中文设置
    13、软件定时器
    晶振和CPU周期
    红外通信协议
    KEIL使用时的一些配置
    STM32 的内部 FLASH
    STM32的程序下载
    2、触摸屏
    目录
  • 原文地址:https://www.cnblogs.com/zhangcaiwang/p/14386001.html
Copyright © 2011-2022 走看看