【问题标题】:Fast single table database [closed]快速单表数据库[关闭]
【发布时间】:2011-03-30 14:24:29
【问题描述】:

我有一个分析数据库,我可以在其中进行复杂的查询。这些查询中的每一个都会生成数千行。我想将这些结果存储在某种磁盘缓存中,以便稍后获得结果。我无法将结果插入到结果来源的数据库中,因为该数据库是只读的。这个缓存的要求是。

  • 插入行非常快。 MySQL 不是初学者。
  • 快速过滤和排序结果
  • 不需要多表连接
  • 没有交易

我很想知道任何可以帮助解决此问题的 SQL 或 NoSQL 解决方案。

【问题讨论】:

  • MySQL 有不同的引擎类型 - 内存会很快,但如果系统关闭 IIRC,则不会持久化。
  • 您是否尝试过 MySQL 的 LOAD DATA INFILE 语句或多行版本的 INSERT?它们都比每行使用一个 INSERT 快得多。
  • SQLite3 你应该看看。 /尤达
  • 我实际上使用的是 MySQL 多行版本的插入,但我遇到了一个问题,即我可以绑定到查询的变量数量有限制。我想我可以避免绑定并生成纯 SQL 并创建更大的查询。
  • 你在哪里遇到这个限制(在编程语言中?),你绑定了多少变量?我的“正常化”感觉很刺痛。

标签: sql database caching indexing nosql


【解决方案1】:

你看过 SQLite 吗?当应用程序(即 Thunderbird、FF )需要查询能力时使用它,但不是成熟的关系数据库,以及其他用途。

【讨论】:

  • SQLite 只提供一个插入命令,因此比提供多行插入命令的 MySQL 差一些。
【解决方案2】:

您可能应该看看 NoSQL 解决方案。也许是 Cassandra,http://cassandra.apache.org/ 被 facebook 和 digg 等使用

【讨论】:

    【解决方案3】:

    如果您有大量 RAM,不妨试试 SQLite 内存数据库:http://www.sqlite.org/inmemorydb.html

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          猜你喜欢
          • 2023-03-17
          • 2011-01-14
          • 1970-01-01
          • 2013-08-07
          • 1970-01-01
          • 2011-04-09
          • 1970-01-01
          • 1970-01-01
          • 2019-07-12
          相关资源
          最近更新 更多