我正在通过COM端口连续接收数据并进行一些解码.解码完成后,我必须将结果存储在sql数据库中.我在想,因为解码完成(在一个while循环中总是运行)每秒几十次,如果打开和关闭与sql server的连接是明智的,那么每秒需要将数据存储到数据库十几次.每个while循环或只是让它打开并继续将数据写入数据库.首先是这可能吗?其次,如果连接保持打开,第三方应用程序或计算机可以同时访问数据库并读取数据,因为我的程序存储数据?
数据库支持多个并发连接,所以是的,在这种情况下保持数据库连接打开是非常可行的 - 如果你有一个长时间运行的查询导致行/表锁定,你只会锁定其他人.完成后只需关闭连接即可.
还要考虑大多数数据库(即SQL Server)在内部使用连接池,因此即使关闭数据库连接,它也会回到池中而不是物理上关闭 - 池管理物理数据库连接 - 这样会更好性能,因此减少了打开/关闭连接的影响.
来自MSDN:
连接池减少了必须打开新连接的次数.pooler保持物理连接的所有权.它通过为每个给定的连接配置保持一组活动连接来管理连接.每当用户在连接上调用Open时,pooler将在池中查找可用连接.如果池连接可用,则将其返回给调用者,而不是打开新连接.当应用程序在连接上调用Close时,pooler会将其返回到池化的活动连接集,而不是关闭它.一旦连接返回到池,就可以在下一个Open调用中重用它.
| 归档时间: |
|
| 查看次数: |
12402 次 |
| 最近记录: |