我怎么知道我的数据适合内存

时间:2011-11-03 05:44:28

标签: mysql database-design caching

首先,对不起我的英语我不擅长但是我会尽我所能:) 我已经阅读了很多网页,描述了如果你的数据能够适应内存的速度有多快。以下链接是一个示例:

http://forums.mysql.com/read.php?22,428030,428157#msg-428157

http://www.mysqlperformanceblog.com/2010/11/19/is-there-benefit-from-having-more-memory/

虽然我试图理解它,但我仍然对“适合记忆”的语义感到困惑

我有一些问题,我希望你帮我解释如下

1)我怎么知道我的数据集已经适合内存,不知道Mysql是否有一些工具或命令告诉我们数据如何驻留在内存中,或者你只需​​要猜测?

2)我正在设计一个具有表格的应用程序,其架构如下:

id(iht)| data1(varchar(10))| data2(varchar(10))| data3(文本)| meta1(int)| meta2(int)| meta3(INT)

从上面的模式中,用于包含每一行的最小字节数应该是 be int(4)+ varchar(10)+ varchar(10)+ text(2)+ int(4)+ int(4)+ int(4)= 38 bytes 这是非常小的。因此,如果我甚至有一百万行,我的记忆仍然可以轻松容纳它,因为它只需要38 * 1,000,000 = 38Mb。

问题在于data3列,其类型为text,因为此列可以包含一个大的列 数据量。假设data3总是包含10k字节的数据,如果我有一个 百万行,最多需要(38 + 10,000)* 1,000,000 = 10,038,000,000或大约10千兆字节!当然这些数据不适合记忆。

因为在此表中,每一行都可以在生命周期内频繁读取或写入 应用程序,我应该考虑将data3列移动到另一个表,以便此表中的每一行总是很小,从而保留在内存中,从而更快 读写?

3)我相信数据适合内存可以帮助你阅读, 我想知道写操作是否也会从中受益以及如何获益?

感谢。

1 个答案:

答案 0 :(得分:0)

IIRC,MySQL中的文本列并不总是完全保存在内存中(但我可能错了)。

当然,如果您的数据足够大,可能比可用内存大,那么它就不适合那里。

重要的是表的索引,以及索引都适合内存的事实。

找到答案的可靠方法是进行实验和基准测试。