【问题标题】:Database with a table containing 700 million records [duplicate]具有包含 7 亿条记录的表的数据库 [重复]
【发布时间】:2012-04-10 17:06:12
【问题描述】:

可能重复:
What are the performance characteristics of sqlite with very large database files?

我想创建一个 .Net 应用程序,该应用程序使用一个数据库,其中一个表中包含大约 7 亿条记录。我想知道 SQLite 的性能是否可以满足这种情况,或者我应该使用 SQL Server。我喜欢 SQLite 给我的可移植性。

【问题讨论】:

    标签: c# .net sql-server database sqlite


    【解决方案1】:

    一定要选择 SQL Server。 SQLite 中的 7 亿条记录太多了。

    使用 SQLite 你有以下限制

    • 单进程写入。
    • 无镜像
    • 无复制

    看看这个帖子:What are the performance characteristics of sqlite with very large database files?

    【讨论】:

      【解决方案2】:

      700m 很多。

      给你一个想法。假设您的记录大小为 4 个字节(基本上存储一个值),那么您的数据库将超过 2GB。如果您的记录大小接近 100 字节,那么它接近 65GB...(不包括索引使用的空间和事务日志文件等)。

      我们在大型数据库方面做了很多工作,我从不会考虑使用 SQLLite 来处理这种规模的任何事情。坦率地说,“可移植性”是您最不关心的问题。为了以任何响应能力查询该大小的数据库,您将需要一个适当大小的数据库服务器。我会开始使用 32GB 的 RAM 和快速驱动器。

      如果它的写入量超过 90%,您可能会使用较小的 RAM。如果它的阅读量很大,那么您将需要尝试构建它,以便机器可以在 RAM 中加载尽可能多的数据库(或至少是索引)。否则,您将依赖磁盘主轴速度。

      【讨论】:

        【解决方案3】:

        SQLite 应该能够处理这么多数据。但是,您可能必须对其进行配置以使其增长到这个大小,并且您不应该在 SQLite 的“内存中”实例中拥有这么多数据,这只是一般原则。

        有关更多详细信息,请参阅this page,其中解释了 SQLite 引擎的实际限制。相关的配置设置是页面大小(通常为 64KB)和页面计数(最多 64 位 int 的最大值约为 21 亿)。算一算,整个数据库可以占用超过 140TB。由具有 700m 行的单个表组成的数据库将是数十个 gigs 的数量级;易于管理。

        但是,仅仅因为 SQLite 可以存储这么多数据并不意味着您应该这样做。 SQLite 对于大型数据存储的最大缺点是 SQLite 代码作为进程的一部分运行,使用调用它的线程并占用沙箱中的内存。您无法获得面向服务器的 DBMS 中可用的工具来“分而治之”大型查询或数据存储,例如复制/集群。在处理这样的大表时,插入/删除将需要很长时间才能将其放置在正确的位置并更新所有索引。选择可能是宜居的,但仅限于索引查询;页面或表格扫描绝对会杀死你。

        【讨论】:

          【解决方案4】:

          我的表记录数相似,检索方面没有问题。

          对于初学者来说,硬件和服务器分配是您可以开始的地方。有关示例,请参阅此:http://www.sqlservercentral.com/blogs/glennberry/2009/10/29/suggested-max-memory-settings-for-sql-server-2005_2F00_2008/

          无论记录的大小或数量,只要您:

          • 在外键上创建索引,
          • 在视图中存储常见查询 (http://en.wikipedia.org/wiki/View_%28database%29),
          • 并定期维护数据库和表

          你应该没事的。此外,为每列设置正确的列类型/大小也会有所帮助。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-08-02
            • 1970-01-01
            • 2014-09-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多