2011-11-03 46 views
0

首先,对不起我的英语我不擅长它,但我会给它我最好的拍摄:) 我已经阅读了很多网页描述如何如果你的数据可以放入内存,速度会很快。下面的链接是一个例子:我怎么能知道我的数据适合内存

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)

从上面的模式中,用于包含每一行的最小字节数应该为int(4)+ varchar(10)+ varchar(10)+ text(2)+ int(4) )+ int(4)+ int(4)= 38字节 这是相当小的。所以如果我有一百万行,我的记忆应该仍然适应它,因为它只需要38 * 1,000,000 = 38Mb。

问题在于data3列的类型是文本,因为此列可能包含大量的数据。假设data3总是包含一个10k字节的数据,如果我有一个 的行,它将需要高达(38 + 10,000)* 1,000,000 = 10,038,000,000或大约十千兆字节!当然,这些数据并不适合内存。

因为在这张表中,每行可以在 应用程序的生存期内频繁读写,我应该考虑将data3列移动到另一个表中,以便此表中的每一行总是很小,因此保留在内存导致更快 的读写?

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

谢谢。

回答

0

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

当然,如果您的数据足够大以至于比可用内存更大,则不适合此处。

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

确定的方法是找出实验和基准。

相关问题