gpt4 book ai didi

c# - 在 SQLite 上只执行 SELECT 命令

转载 作者:IT王子 更新时间:2023-10-29 06:32:00 26 4
gpt4 key购买 nike

我制作了一个 SQLite 数据库(约 700MB,3 个表,3 个索引 - 1 个 rtree 索引和 2 个主键)。我已将其标记为只读文件(在 Windows 上)。

从多个线程在此数据库上仅执行 SELECT 命令是否安全且高效?

如果是这样,如何提高性能(启用任何选项或标志,任何微小的调整)?

此应用程序是在 C# 中使用 System.Data.SQLite (1.0.82.0),在 x64 机器上为 .NET 4.0 编译。而且它工作正常(不一定是高性能或正确并行,因为我不能/不知道(如何)证明它们)。目前我没有真正的瓶颈,但很快我就会!我需要尽快搜索 rtree。 (在我的机器上 4GB,2 核)搜索 rtree 有时需要超过 5 毫秒。我已经使该部分成为多线程以并行处理我的数据。并根据R-Tree的结构(或者我认为 SQLite 中的 R*-Tree)如果我的数据库增长到一些 GB,那应该没问题,因为这些树深度低并且在大型数据集上速度很快。但如果有任何改进是可能的,那么应该在此应用中考虑。

我不能确定并行的部分是否真的并行运行,例如 SQLite(或 System.Data.SQLite)没有内部锁。事实上,在某些测试中,并行版本运行得更慢!

最佳答案

这应该是安全的,前提是每个线程都有自己的连接,或者您使用锁来防止多个线程同时使用同一个连接。

关于c# - 在 SQLite 上只执行 SELECT 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14060443/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com