可能重复:
What are the performance characteristics of sqlite with very large database files?
我想创建一个使用数据库的.Net应用程序,该数据库在其中一个表中包含大约7亿条记录。我想知道SQLite的性能是否能满足这种情况,还是应该使用SQL Server。我喜欢SQLite给我的可移植性。
答案 0 :(得分:4)
确定转到SQL Server。 SQLite中有7亿条记录太多了。
使用SQLite,您有以下限制
查看此主题:What are the performance characteristics of sqlite with very large database files?
答案 1 :(得分:2)
SQLite应该能够处理这么多数据。但是,您可能必须将其配置为允许它增长到这个大小,并且您不应该在SQLite的“内存”实例中拥有这么多数据,只是基于一般原则。
有关更多详细信息,请参阅this page,其中解释了SQLite引擎的实际限制。相关配置设置是页面大小(通常为64KB)和页面计数(最多64位int的最大值约为21亿)。算一算,整个数据库可以占用140TB以上。一个由700m行的单个表组成的数据库将大约数十个演出;易于管理。
然而,仅仅因为SQLite CAN存储了那么多数据并不意味着你应该。 SQLite对于大型数据存储的最大缺点是SQLite代码作为进程的一部分运行,使用调用它的线程并占用沙箱中的内存。您没有获得面向服务器的DBMS中可用的工具来“划分和征服”大型查询或数据存储,例如复制/群集。在处理像这样的大表时,插入/删除将花费很长时间将它放在正确的位置并更新所有索引。选择可以是适合居住的,但仅限于索引查询;页面或表扫描绝对会杀了你。
答案 2 :(得分:2)
700米很多。
给你一个想法。假设您的记录大小为4个字节(基本上存储单个值),那么您的数据库将超过2GB。如果您的记录大小接近100字节,则接近65GB ...(不包括索引和事务日志文件等使用的空间)。
我们在大型数据库上做了很多工作,我从不认为SQLLite适用于那么大的数据。坦率地说,“便携性”是您最关注的问题。为了使用任何类型的响应来查询该大小的数据库,您将需要一个适当大小的数据库服务器。我用32GB的RAM和快速驱动器启动。
如果它写得很重90%+,你可能会减少更小的RAM。如果它读得很重,那么你会想要尝试构建它,以便机器可以尽可能多地加载RAM中的DB(或至少索引)。否则,您将依赖于磁盘主轴速度。
答案 3 :(得分:0)
我有相似记录计数的表格,并且检索没有问题。
对于初学者来说,服务器的硬件和分配是您可以开始的地方。请参阅以下示例:http://www.sqlservercentral.com/blogs/glennberry/2009/10/29/suggested-max-memory-settings-for-sql-server-2005_2F00_2008/
无论您的记录大小或数量如何: