Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 innodb缓冲区与内存表性能_Mysql_Innodb - Fatal编程技术网

mysql innodb缓冲区与内存表性能

mysql innodb缓冲区与内存表性能,mysql,innodb,Mysql,Innodb,内存/堆引擎表的性能是否与具有大缓冲池的innodb表数据库相同?我通常有2个表-1个innodb,带varchars和几行,以及一个紧凑大小的内存表(5行,主要是PK和索引整数,用于大量读取。。我最近了解了innodb buffer。因此,我的表克隆系统是否过度杀伤力和无用,或者比innodb更快?从innodb缓冲池读取的速度与内存表一样快 在某些情况下,内存表甚至可以比缓冲的InnoDB表更有效,前者也支持B树索引,而后者只支持B树索引。根据查询的配置文件,使用哈希表可能会更快地读取 此外

内存/堆引擎表的性能是否与具有大缓冲池的innodb表数据库相同?我通常有2个表-1个innodb,带varchars和几行,以及一个紧凑大小的内存表(5行,主要是PK和索引整数,用于大量读取。。我最近了解了innodb buffer。因此,我的表克隆系统是否过度杀伤力和无用,或者比innodb更快?

从innodb缓冲池读取的速度与内存表一样快

在某些情况下,内存表甚至可以比缓冲的InnoDB表更有效,前者也支持B树索引,而后者只支持B树索引。根据查询的配置文件,使用哈希表可能会更快地读取

此外,如果某些查询需要此内存空间,或者数据很少使用,则可以将缓冲的InnoDB表从缓冲区中清除。通过明确地将数据复制到内存表中,可以保证数据始终在内存中

我还应该提到,无论缓冲池大小如何,InnoDB表的更新都需要在某个阶段刷新到磁盘上。但我知道这不适用于您的用例


现在这是理论。只有在非常、非常频繁地读取这些数据时,您才应该考虑这些因素。

内存中的表必须更具性能,至少在理论上是这样的:在InnoDB中,即使有一个大的缓冲池,缓存中也会有基于块的结构,因此某些块只会部分填满,这是一个错误另一个原因是内存中的表没有行版本或行锁,因此,同样,这将使用更少的内存。但以前:内存中的表仍然没有行级锁,所以如果运行大型更新,您可能会发现使用InnoDB更具可伸缩性

所以,总而言之:内存表-可能更少的内存来存储相同数量的数据,InnoDB-可能更具可扩展性

当然,每件事都需要根据你的具体情况来衡量


如果您仍然需要在内存中存储数据,请选择内存中的数据库(无耻的插件)。

+1值得一提的是,InnoDB在读/写并发性很强的情况下肯定会表现得更好(但如果数据是只读的,则不会)。