-1

我现在在 Python 中缓存了以下数据:

id   timestamp   data-string

数据字符串大小约为 87 字节。以最佳方式将其存储在 python 中(使用 dict 并在带有分隔符的 data-str 前添加时间戳),每个条目的 RAM 成本约为 198 字节。这对于我需要的缓存大小来说是相当大的。

我想尝试在 MySQL 表中存储相同的内容,看看是否可以节省 RAM 空间。这样做时,我将其存储为:

id   timestamp   data-string
4B      4B
<---- PK ---->

我知道 MySQL 会将 InnoDB 表的索引(这就是我现在拥有的)加载到 RAM 中。因此,id(唯一)、时间戳和指向数据字符串的指针将驻留在 RAM 中。

如何仅为这个新表计算 MySQL 的 B+Tree 的完整 RAM 使用量(即包括元数据)?

4

1 回答 1

1

有太多变量、填充等,估计InnoDB BTree 将消耗多少磁盘空间是不切实际的。您引用的 2x 非常好。buffer_pool 是 RAM 中的缓存,因此您不能说 BTree 会消耗与磁盘一样多的RAM空间。缓存在 16KB 块上。

(@ec5 有关于磁盘上索引的当前大小的良好信息。)

于 2016-08-18T01:56:23.743 回答