gpt4 book ai didi

MySQL INT类型的5个字节?

转载 作者:行者123 更新时间:2023-11-29 01:27:56 26 4
gpt4 key购买 nike

有什么方法可以让 INT 列使用 5 个字节?这样做的原因是分配 40 亿个整数的 INT(4 字节)对于我的应用程序来说还不够,但 BIGINT(8 字节)是一种矫枉过正,会损害性能,因为 MySQL 必须查看更大的磁盘空间才能找到任何东西,特别是当我们有数十亿行时,主键的额外存储空间将达到数 GB。

MySQL 中有类似 5 字节 INT 列的东西吗?有什么我可以轻松自定义调整 MySQL 来实现的吗?

最佳答案

简单的答案是否定的 - 没有任何 5 字节整数字段。

但是,当更深入地阅读问题的来源时,似乎对与 BIGINT 相关的开销存在一些误解。

是的,您正在查看该列的双倍数据存储,但 MySQL 中的每一行都有:

  1. 聚集索引 (PK) 的 13 字节 header
  2. 每个索引记录一个 6 字节的 header
  3. 每个非索引记录一个 1 字节指针

(参见此处:https://dev.mysql.com/doc/refman/5.1/en/innodb-table-and-index.html#innodb-physical-record)

因此,假设它是表中的唯一列,通过将 BIGINT 减少到 5 个字节 ((8-5)/(8+13)),您实际上只是将行大小增加了大约 14%。

如果您使用 COMPACT 行格式并消除 PK,则每行可以节省 8 个字节(将索引减少到 5 个字节)。

使用 BIGINT 与 INT 相比,您的索引对性能的影响可以忽略不计(尽管消除 PK 可能会由于聚类损失而导致一些明显的性能损失)。

存储影响也可以忽略不计 - 您看到的是约 20 GB 的影响,序数约为 80 亿。现代存储解决方案应该解决这个问题。

关于MySQL INT类型的5个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31666046/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com