快速查询大数据集:MySQL MEMORY(HEAP)引擎,MyISAM或其他(如MemCached)

目前正在开展一个以医学词汇SNOMED为中心的项目。 snosed的核心是一个(关系)数据集,长度为35万条/logging。 我们希望能够快速查询这个数据input部分,我们希望有一些forms或forms的自动完成/build议。

它目前在MySQL MyISAM数据库只是为了开发的目的,但我们要开始玩一些内存选项。 目前包括索引在内30MB。 内存的MySQL引擎和MemCached是显而易见的,所以我的问题是你会build议哪个或者哪里有更好的呢? 我们正在使用Python,主要是在应用程序级别,如果这有所作为。

注意:数据集有一个单独的关系,将这些概念映射到常见的别名和缩写,大约有一百三十万个logging…最后我们也想在这里使用这个子集。

目前还不清楚你的要求是什么,但是对于这样一个小的数据库,任何引擎上的查询都可能很快,因为所有的数据都可以放在内存中。

像MyISAM和InnoDB这样的东西需要一些调整工作。 Memcached仅在需要扩展到高负载的基于读取的工作负载时才有用,也就是说,对于单个服务器来说,那些服务器不能用于传统的内存数据库(Memcached的主要function是能够跨池的服务器)。 但是memcached不能执行范围扫描等常规查询,只能查找特定的关键字,所以它不是一个通用数据库。

我build议使用innodb的缓冲池大于你的数据集,并正确select你的主键。 主键范围扫描应该执行得非常好,应该能够用于前缀匹配(例如,完成使用情况)。

你将能够扩展到每秒1000个查询和普通硬件。 如果您需要更多,请添加复制从属或考虑类似memcached。

考虑问StackOverflow?

您可以将表格保存为MEMORYtypes。 这将是相当快,但要求你在使用前种子。 我有一种感觉,你可以得到很多的performance。 在内存中,读取操作肯定比InnoDB和MyISAM更快。

我会说尝试一些不同的方法,然后用ApacheBench重载search,看看什么在压力下最快地屈服。