zoukankan      html  css  js  c++  java
  • 0809MySQL-InnoDB Compact 行记录格式

    InnoDB存储引擎提供了compact(5.1后的默认格式)和redundant两个格式来存放行记录数据。redundant格式是为了兼容之前的版本而保留。

    mysql> show table status like 't1'G;

    *************************** 1. row ***************************
               Name: t1
             Engine: InnoDB
            Version: 10
         <strong>Row_format: Compact</strong>
               Rows: 2
     Avg_row_length: 8192
        Data_length: 16384
    Max_data_length: 0
       Index_length: 0
          Data_free: 0
     Auto_increment: NULL
        Create_time: 2016-01-11 05:04:28
        Update_time: NULL
         Check_time: NULL
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options:
            Comment:
    1 row in set (0.00 sec)
     

    Compact行记录的格式

    -变长字段长度列表:如果列的长度小于255字节,用1字节表示;如果大于255个字节,用2字节表示
    -NULL标志位:表明该行数据是否有NULL值。占一个字节。
    -记录头信息:固定占用5字节,每位的含义见下表:

    名称 大小(bit) 描述
     ()  1  未知
     ()  1  未知
     delete_flag  1  该行是否已被删除
     min_rec_flag  1  为1,如果该记录是预先被定义为最小的记录
     n_owned  4   该记录拥有的记录数
     heap_no  13  索引堆中该记录的排序记录
     record_type  3  记录类型,000表示普通,001表示B+树节点指针,010表示infimum,011表示supermum,1xx表示保留
    next_record   16  页中下一条记录的相对位置
     total  40  

    在每个列的存储数据中,NULL不占该部分任何空间。此外还有两个隐藏列,事务ID列和回滚指针列,分别为6字节和7字节。若innodb表没有定义主键,每行还会增加一个6字节的rowid列。

  • 相关阅读:
    测试框架 MSTest V2与单元测试
    string字符串格式
    重构概述
    代码的坏味道
    this.Dispatcher.Invoke与SynchronizationContext
    C# new关键字
    Servlet的API和生命周期
    Servlet快速入门
    Spring介绍
    Oracle数据安全解决方案(1)——透明数据加密TDE
  • 原文地址:https://www.cnblogs.com/qcfeng/p/7325307.html
Copyright © 2011-2022 走看看