【问题标题】:SQLite for large data sets?用于大型数据集的 SQLite?
【发布时间】:2009-06-23 15:28:59
【问题描述】:

我有一个相当大的数据集,并希望将其存储在文件而不是 RDBMS 中。

数据集中的主表是刚刚超过 1M 行、30 列和大约 600Mb 大小的 CSV。

我正在考虑使用 SQLite。对于这种规模的数据集,SQLite 值得研究吗?

【问题讨论】:

    标签: sqlite


    【解决方案1】:

    SQLite 可以很好地处理该文件;确保在事务中导入记录,以便在导入所有内容之前不会花费大量时间创建索引。

    【讨论】:

      【解决方案2】:

      您已经有了答案,但我想分享一下我目前的实验:我已将价值 793 GiB 数据的数十亿条记录转储到单个 SQLite 数据库中,并且读取查询仍然非常快(不到 1m)。

      创建时间仅用了 22 小时多一点,而后索引创建每列大约需要 4 小时。

      【讨论】:

      • 令人印象深刻...如果我达到其中的 10%,那将是很多。已售出。
      【解决方案3】:

      我最近调查了 SQLite 以寻找类似的应用程序。 SQLite 文档指出 SQLite 数据库的大小可以达到 TB,并且 SQLite 的主要限制是并发性(同时有许多用户)。虽然我们没有朝这个方向发展(我们有自己的二进制存储格式),但我非常有信心 SQLite 可以处理这种大小的文件。

      【讨论】:

        【解决方案4】:

        当您使用事务并且不经常提交时,sqlite 速度很快。使用带参数的准备好的语句也可以加快速度。使用参数化查询时,Sqlite 不必重新解析每个 sql 语句。一个例子:How do I get around the "'" problem in sqlite and c#?

        我在一个 sqlite 数据库中存储了 2 GB,它工作得很好。 sqlite 在平面文件之上的一大优势是可以索引您的数据。

        【讨论】:

          【解决方案5】:

          sqlite 应该适合你。即使在嵌入式设备中,我也运行过这样大小的数据集,并且 sqlite 性能相当合理。

          如上所述,主要瓶颈是并发性。旨在设计您的系统,以便每个数据库文件最多打开一个数据库句柄。

          【讨论】:

            猜你喜欢
            • 2011-09-13
            • 2016-05-24
            • 1970-01-01
            • 2011-12-11
            • 2014-09-26
            • 2015-11-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多