Har*_*dik 0 c# sqlite multithreading
我有Windows窗体应用程序.
(C#with visual studio 2010,Framework:4.0)
数据库:.db(文件数据库),通过SQLite连接对象
Thread th = new Thread(() => database(node, xNodetcname, xNodesqlquery1, xNodeHint, e, inXml));
th.Name = thread;
th.Start();
Run Code Online (Sandbox Code Playgroud)
上面的代码创建每个线程并在database()函数上并行处理.
每个线程都有一个SQL Query,用于从数据库中获取数据.
虽然我没有使用多线程,但性能更好,但是当我使用多线程时性能下降.
例:
没有多线程3查询处理时间= 1.5分钟
使用多线程3查询处理时间= 1.9分钟.
我的目标是减少查询的处理时间.
小智 6
然后一般远离线程.
一些基本的计算:在大多数情况下,数据库性能受IO而不是CPU的限制.通过使用大量内存作为缓冲区可以减少IO,因此大型数据库服务器具有大量内存.
你运行一个小的轻量级数据库.它可能没有在数据库服务器级硬件或SSD上运行 - 因此它有IO问题.Perforamcne将受到IO的限制.
现在多个线程确保IO端(硬盘)效率低下,特别是因为winform应用程序在高端IO子系统上没有正常运行.
Ergo:如果你想要更快的查询,那么:
不要使用多线程 - 尝试在SQL级别解决它,但接受这可能是不可能的.这是公司仍然实际使用真实数据库服务器来处理大量数据的原因.而SQLite可能不是一个好选择 - 没有机会说它是不是因为你完全忽略了你信息中的那一面.
| 归档时间: |
|
| 查看次数: |
636 次 |
| 最近记录: |