【发布时间】:2008-11-23 17:50:50
【问题描述】:
我有一个执行以下操作的 winforms 应用程序:
在每个查询上:
- 数据库连接
- 数据库查询
- Db 断开连接
因为我们试图避免必须保持数据库连接打开。这会影响性能,因为我们必须每次都连接/断开连接。
这里理想化的模型是什么,它具有最快的性能,但没有打开连接太久。这里有最佳做法吗?
【问题讨论】:
标签: c# sql-server winforms
我有一个执行以下操作的 winforms 应用程序:
在每个查询上:
因为我们试图避免必须保持数据库连接打开。这会影响性能,因为我们必须每次都连接/断开连接。
这里理想化的模型是什么,它具有最快的性能,但没有打开连接太久。这里有最佳做法吗?
【问题讨论】:
标签: c# sql-server winforms
最有效的方法是连接池,ADO.NET does this automatically for you 只要确保关闭连接即可。只需将您的 SqlConnection 对象包装到 using 语句中,您就不必担心了。
【讨论】:
使用连接池连接/断开连接的开销非常很少。您的瓶颈绝对是数据库查询本身,因此打开全局连接无济于事。
如果您的查询太慢,请尝试优化它们。如果这不起作用,您将查看缓存、异步提取或非规范化。我真的没有想到保持数据库连接的一般用例。
【讨论】:
也许尝试考虑缓存您的数据?我自己的粗略测试表明,在内存数据中查询比从数据库中查询相同数据快 20 倍。尽管这种方法可能不适合您的架构或数据需求,但如果可以的话,总是值得考虑在某处缓存经常访问的数据。
【讨论】: