我做了一个SQLite数据库(〜700MB,3个表,3个索引 - 1个索引和2个主键)。我将它标记为只读文件(在Windows上)。在SQLite上执行SELECT命令
从多线程执行这个数据库的SELECT命令是否安全和高性能?
如果是这样,怎样才能提高性能(任何选项或标志启用,任何微调)?
此应用程序在C#中使用System.Data.SQLite(1.0.82.0),在x64机器上为.NET 4.0编译。它工作正常(不一定表演或正确平行,因为我不知道(如何)证明他们)。目前我没有真正的瓶颈,但很快我就会!我需要尽可能快地搜索rtree。 (在我的机器上4GB,2个核心)搜索rtree有时需要超过5毫秒。我已经使这部分多线程来处理我的数据并行。根据R-Tree(或者我认为R * -Tree在SQLite的情况下)的结构,如果我的数据库增长到一些GB,它应该没有问题,因为这些树的深度很低,并且在大型数据集上很快。但是,如果有任何改进是可能的,那么它应该在这个应用程序中考虑。
我不能确定已并行的部分是否真的并行运行,例如SQLite(或System.Data.SQLite)没有内部锁定。事实上,在一些测试中,并行版本运行速度较慢!
“* .. provided .. *”对于您来说非常重要。 – 2012-12-27 20:05:51