Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql,引擎内存,这个简单表需要的索引?_Mysql_Heap Memory - Fatal编程技术网

MySql,引擎内存,这个简单表需要的索引?

MySql,引擎内存,这个简单表需要的索引?,mysql,heap-memory,Mysql,Heap Memory,我正在尝试实现一个非常快速的表,用于存储用户之间的关系 CREATE TABLE IF NOT EXISTS `friends_ram` ( `a` varchar(16) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL, `b` varchar(16) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL ) ENGINE=MEMORY DEFAULT CHARSET=la

我正在尝试实现一个非常快速的表,用于存储用户之间的关系

CREATE TABLE IF NOT EXISTS `friends_ram` (
`a` varchar(16) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL,
`b` varchar(16) CHARACTER SET latin1 COLLATE latin1_general_ci NOT NULL
) ENGINE=MEMORY DEFAULT CHARSET=latin1;
INSERT INTO friends_ram (a, b)
我用大约5百万的关系做了一些测试,它的速度非常快,占用了大约134MB的内存;我的问题是,由于问题是:

SELECT a WHERE b = 'foo';


我想知道我是否应该使用适当的索引(增加所需的RAM大小)

我真的为结果感到羞耻

可能是我第一次做测试时误读了输出

结果表明,对于
a
b
上没有索引的1000个随机查询,使用适当的索引需要1000次。啊哼

另一个需要注意的非常重要的事情是,我尝试使用memcached。虽然存储数据需要更长的时间,但检索速度更快。而且,它消耗的内存更少

mysql 192MB -> Mysql MEMORY engine did it in; 0.50138092041016 seconds
memcached  76MB -> Memcache engine did it in; 0.34592795372009 seconds
memcached compressed: 45.4 MBytes -> Memcache engine did it in; 0.31583189964294 seconds

因此,如果您需要存储这些简单的东西,我建议使用memcached(compressed)

唯一的方法是添加索引,查看内存使用情况,以及性能差异。在我的书中,2倍的内存使用率(组成一些数字)可以提高10%的性能是不值得的,但2倍的内存可以提高10倍的速度=很好。显然,这两个索引又增加了61MB,我将使用microtime进行一些测试,看看有什么好处。但mysql CLI中只有两个小数,显然速度更快。我稍后会发布结果。
mysql 192MB -> Mysql MEMORY engine did it in; 0.50138092041016 seconds
memcached  76MB -> Memcache engine did it in; 0.34592795372009 seconds
memcached compressed: 45.4 MBytes -> Memcache engine did it in; 0.31583189964294 seconds