SQLite:实际限制是什么?
在您将此问题标记为重复之前,请听我说!
我已经阅读了有关如何提高性能的问题,例如仅举几个 Improve INSERT-per-second performance of SQLite?和 What are the performance characteristics of sqlite with very large database files? 我正在努力使sqlite工作的数据库文件大小为5千兆字节.相反,那里有人,即使数据库大小高达160 GB,他们声称sqlite对他们来说“很棒”.我自己没有尝试过,但是从提出的问题来看,我想所有的基准测试都可能只用数据库中的表来完成. 我正在使用数据库 我使用的开发机器是3 GHz四核机器,有4 GB RAM,但只需要3分钟就可以查询这些大表中的row_count. 我找不到任何方法来水平划分数据.我拥有的最佳镜头是将数据分成多个数据库文件,每个表一个.但在这种情况下,据我所知,外键列约束不能使用,所以我将不得不创建一个自足表(没有任何外键). 所以我的问题是 编辑 EDIT2: 我不能缓存先前查询的结果,因为它在我的情况下没有意义.点击缓存的可能性相当低. 这里有很多需要考虑的问题,但我的第一点建议是不要以表面价值来衡量其他的绩效统计数据.数据库性能取决于很多方面,包括数据库的结构,查询的复杂性,您定义(或不??定义)的索引,以及通常只有大量数据.许多报告的性能数据来自大量的试验和错误,和/或将数据库与手头的工作相匹配.换句话说,你将从任何DBMS获得的性能不能明显地与另一个应用程序的性能进行比较,除非你的数据集和结构几乎完全相同 – 它们肯定是一个指南,也许是一个理想的努力,但你不一定会“开箱即用”地获得疯狂的表现.作为一个起点,我会开始索引那些非常大的表上的数据(看起来,从评论,你已经得到了),看看会发生什么.当然,计数花了四分钟是相当长的时间,但不要止步于此.添加一些索引,更改它们,询问您是否存储了不需要存储的数据,并查看其他数据库查询,而不仅仅是计数查询,以判断性能.寻找使用SQLite进行大量行的其他应用和博客文章,并了解他们为解决这些问题所做的工作(可能包括更改数据库).基本上,尝试一下 – 然后做出判断.不要让最初的恐惧阻止你,以为你走错了路.也许你是,也许你不是,但不要只停止COUNT查询.无论你如何切片,表中的2700万条记录都是垃圾. 最后,一个具体的建议是这样的:在SQLite中,不要将数据库拆分成多个文件 – 我没有看到帮助,因为那样你将不得不做大量额外的查询工作,并且然后在结果从多个查询返回后手动加入单独的表.这重塑了RDBMS为您所做的事情,这是一个疯狂的想法.你不会以某种方式找到一种比RDBMS系统的创建者更快地进行连接的方法 – 你肯定会在那里浪费时间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |