› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
dcsuibian
V2EX  ›  MySQL

关于 MySQL 行格式的问题(《MySQL 是怎样运行的:从根上理解 MySQL》)

  •  
  •   dcsuibian · Oct 17, 2023 · 2390 views
    This topic created in 1075 days ago, the information mentioned may be changed or developed.

    书中第五章:从一条记录说起—— InnoDB 记录结构

    其中在InnoDB 行格式-->COMPACT 行格式-->记录的真实数据小节这里有以下内容:

    InnoDB 在读记录的变长字段长度列表时先查看表结构,如果某个变长字段允许存储的最大字节数大于 255 时,该怎么区分它正在读的某个字节是一个单独的字段长度还是半个字段长度呢?设计 InnoDB 的大叔使用该字节的第一个二进制位作为标志位:如果该字节的第一个位为 0 ,那该字节就是一个单独的字段长度(使用一个字节表示不大于 127 的二进制的第一个位都为 0 ),如果该字节的第一个位为 1 ,那该字节就是半个字段长度。
    

    如果需要 1 位来作为标志位,那么两个字节时剩 15 位可以用来表示长度了。也就是长度为 2^15-1=32767 。

    但实际

    CREATE TABLE varchar_size_demo(
          c VARCHAR(65532)
    ) CHARSET=ascii ROW_FORMAT=Compact;
    

    却是可以成功的。

    这不就互相矛盾了么。

    7 replies  •  2023-10-30 16:41:06 +08:00
    dV9zZM1wROuBT16X
        1
    dV9zZM1wROuBT16X  
       Oct 17, 2023
    ?现在是 dynamic 格式
    mightybruce
        2
    mightybruce  
       Oct 17, 2023
    看这种书一定不要相信所有,我看了没有贴出 mysql 版本和源码, 另外书里的大多数东西就能在 mysql 官网上方找到,只不过多数人不看。
    wuyiccc
        3
    wuyiccc  
       Oct 17, 2023
    第一位 1 也算啊
    wuyiccc
        4
    wuyiccc  
       Oct 17, 2023
    第一位为 0 就是范围 0 ~ 127 (0 ~ 2^7-1)
    第一位为 1 就是范围 128 (2^7) ~ 2^32
    dcsuibian
        5
    dcsuibian  
    OP
       Oct 18, 2023   ❤️ 1
    [已解决]参考 https://cloud.tencent.com/developer/article/1811760

    图: https://wexcdn.com/img/image-20231018132210882.png

    其实书中也已经提到了:
    对于一些占用字节数非常多的字段,比方说某个字段长度大于了 16KB ,那么如果该记录在单个页面中无法存储时,InnoDB 会把一部分数据存放到所谓的溢出页中(我们后边会唠叨),在变长字段长度列表处只存储留在本页面中的长度,所以使用两个字节也可以存放下来。

    但是说的没图中那么详细,我也没注意到这点
    msaionyc
        6
    msaionyc  
       Oct 18, 2023
    感谢楼主,之前看这块儿总感觉有点儿问题,现在明白了
    wuyiccc
        7
    wuyiccc  
       Oct 30, 2023
    @dcsuibian 强!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2907 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 46ms · UTC 03:15 · PVG 11:15 · LAX 20:15 · JFK 23:15
    ♥ Do have faith in what you're doing.