2010-08-16 234 views
4

我有一个分析数据库,用于制作复杂的查询。每个查询都会生成数千行。我想将这些结果存储在某种磁盘缓存中,以便稍后获得结果。我无法将结果插回到结果来自的数据库中,因为该数据库是只读的。这个缓存的要求是。快速单表数据库

  • 插入行非常快。 MySQL是一个非启动器。
  • 快速过滤,结果
  • 没有多表连接需要
  • 没有交易

我很感兴趣地听到任何SQL或NoSQL的解决方案,可以帮助做到这一点的排序。

+1

MySQL有不同的引擎类型 - 内存会很快,但如果系统关闭IIRC,则不会持久化。 – 2010-08-16 18:46:37

+1

您是否试过MySQL的LOAD DATA INFILE语句或INSERT的多行版本?它们比每行使用一个INSERT要快得多。 – 2010-08-16 18:59:34

+0

SQLite3你应该看看。/Yoda – hlynur 2010-08-16 19:04:38

回答

2

你看过SQLite吗?当它们需要查询功能时,它被应用程序(即Thunderbird,FF)使用,但在其他用途​​中则不是完整的关系数据库。

+0

SQLite只提供一个插入命令,因此比提供多行插入命令的MySQL稍差。 – bradgonesurfing 2010-08-17 05:42:48

+0

哇,很高兴知道。 – user151841 2010-08-17 13:36:47

0

如果你有大量的RAM,可能会想尝试SQLite的内存数据库:http://www.sqlite.org/inmemorydb.html

以较少的RAM,尝试SQLite的临时数据库(进一步在页面下方 - 见上面的超链接)。这些也使用内存中缓存,但如果数据库变大,部分可能会刷新到磁盘。

0

您还应该查看Advantage数据库。本地服务器是免费的,它支持SQL和非SQL解决方案。非SQL解决方案肯定会比SQL方法更快。该表可以被指定为缓存,因此它将尽可能长时间保留在内存中以便快速插入。 Advantage Database Server

1

您没有指定平台,但在Windows上可以使用内置的Esent数据库引擎。它将提供排序和高性能的数据持久性。