我怎么能知道我的数据适合内存
首先,对不起我的英语我不擅长它,但我会给它我最好的拍摄:) 我已经阅读了很多网页描述如何如果你的数据可以放入内存,速度会很快。下面的链接是一个例子:我怎么能知道我的数据适合内存
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)我相信有数据适合内存可以帮助您阅读, 我想知道写操作是否也会从中受益,以及如何?
谢谢。
IIRC,MySQL中的文本列并不总是完全保存在内存中(但我可能是错的)。
当然,如果您的数据足够大以至于比可用内存更大,则不适合此处。
什么是重要的是您的表的索引,以及索引都适合内存的事实。
确定的方法是找出实验和基准。