包含包含 7 亿条记录的表的数据库

本文关键字:记录 亿条 数据库 包含包 | 更新日期: 2023-09-27 18:30:43

可能的重复项:
具有非常大的数据库文件的 sqlite 的性能特征是什么?

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

包含包含 7 亿条记录的表的数据库

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

使用SQLite,您有以下限制

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

查看此线程:具有非常大的数据库文件的sqlite的性能特征是什么?

700m很多。

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

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

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

SQLite应该能够处理这么多数据。但是,您可能必须将其配置为允许它增长到此大小,并且您不应该在 SQLite 的"内存中"实例中拥有这么多数据,只是根据一般原则。

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

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

我有过具有相似记录计数的表,并且在检索方面没有问题。

对于初学者来说,硬件和分配给服务器是您可以开始的地方。 有关示例,请参阅以下内容: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),
  • 并定期维护数据库和表格

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