首先,对不起我的英语我不擅长但是我会尽我所能:) 我已经阅读了很多网页,描述了如果你的数据能够适应内存的速度有多快。以下链接是一个示例:
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)我相信数据适合内存可以帮助你阅读, 我想知道写操作是否也会从中受益以及如何获益?
感谢。
答案 0 :(得分:0)
当然,如果您的数据足够大,可能比可用内存大,那么它就不适合那里。
重要的是表的索引,以及索引都适合内存的事实。
找到答案的可靠方法是进行实验和基准测试。