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(虾皮)内推点击此处,岗位多多地,薪资高高地



    转载请注明出处


  • 相关阅读:
    bzoj4137[FJOI2015]火星商店问题
    HNOI2019游记
    bzoj4785:[ZJOI2017]树状数组:二维线段树
    快速傅里叶变换(FFT)
    动规大总结
    复习动规(4)
    复习动规(3)
    复习动规(2)
    复习动规(1)
    2019CSP-S游记(真)
  • 原文地址:https://www.cnblogs.com/zhangcaiwang/p/14386001.html
Copyright © 2011-2022 走看看