如果把INT列改为MEDIUMINT,我将节省多少面积?[英] How much size I will save if changed INT column to MEDIUMINT?

本文是小编为大家收集整理的关于如果把INT列改为MEDIUMINT,我将节省多少面积?的处理方法,想解了如果把INT列改为MEDIUMINT,我将节省多少面积?的问题怎么解决?如果把INT列改为MEDIUMINT,我将节省多少面积?问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我正在学习如何通过为列重新选择正确的数据类型来优化我的数据库,我想知道如果我选择 MEDIUMINT (3 Bytes) 而不是 INT(4字节)

AFAIK - 如果我错了请纠正我 - 我需要数据库大小尽可能小以适合 RAM 以减少硬盘请求.数据库的大小由表大小+索引大小组成

假设我有一个具有 10'000'000 行的 INT 列和一个 B-Tree 索引,如果我将列的数据类型从 INT 更改为MEDIUMINT 在

  • 表数据大小?
  • 索引大小?

注意:我知道 MySQL 不会减少磁盘上的实际大小,除非我 优化表

编辑:我的情况是我将很快完成我生命中的第一个认真系统 - 这是我计划在阿拉伯地区市场销售的 ERP 系统 - .计划 1、2、3、4 的数据库应该分别约为 2GB、4GB、10GB、40GB,所以如果我可以在不牺牲性能/功能的情况下减小每个数据库的大小,为什么不呢?如果我可以让一台 32GB RAM 的机器为 4 个客户端而不是 2 个客户端提供服务,为什么不呢?

推荐答案

只需使用 INT,除非您有特定的、可衡量的问题.在一个即使是最节俭的智能手机也有十亿个字节用于内存的时代,如果你担心每个字节,你只会把事情弄得一团糟.

<块引用>

我需要数据库大小尽可能小以适应 RAM 以减少硬盘请求.

不,你没有.您需要数据库易于使用并充分地执行.在 SSD 支持的数据库时代,I/O 不会成为问题,除非您进行大规模操作,并且当那一天到来时,您可以进行测量并了解您遇到的具体问题.

从 INT 字段中删除一个字节不太可能使任何事情变得更好,因为三个字节的整数值不是你的 CPU 可以直接处理的.这些将被转换为四个字节并正确对齐,以便可以理解,与读取普通的旧 32 位整数相比,这是一个混乱的过程.

请记住,MySQL 来自一个高端服务器拥有 64MB 内存和 9GB 硬盘被认为是巨大的时代.那时您确实必须减少字节数,因为您只有少数字节.

现在我们还有其他问题,例如您是否会像 Slashdot 做了他们的网站因为你打算在这里做的那种"优化"而崩溃的地方.

小心.当你有具体理由时进行优化,而不仅仅是因为你认为你需要这样做.避免过早的优化是开发过程中的一项持续斗争,但如果你有纪律,你可以避免它.

本文地址:https://www.itbaoku.cn/post/1793977.html