|
文章链接如下:
http://www.cnblogs.com/LoveJenny/archive/2011/10/31/2229738.html
1:SqlConnection是不是线程安全的呢?
可以知道在多线程环境下使用一个Connection来执行Sql语句是不安全的。
SqlConnection不是线程安全的,所以多线程必然会出现问题。
其实.net是自动提供连接池管理的,只要连接字符串一样(必须是一模一样),就会在同一个池里面,open和close实际上都是从池中取一个连接和将连接放回池中,不会引起性能问题。所以每次打开连接后,在使用完毕之后,应该尽早的close,以便将连接归还池中供其它程序使用。
2:为什么还是有人使用上面的那种写法来创建Connection呢?
我认为他们可能会认为创建多个Connection比较耗时,而且多个Connection会占用内存,影响性能等等。。
3:每次new SqlConnection是不是很占用内存和资源,影响性能?
这个就是瞎认为,瞎操心.
因为"创建多个Connection"并不一定就会创建新的多个数据库连接,数据库连接是宝贵资源,就MS SQL Server而言,其内部会对这个宝贵资源进行优化,连接是会被重用的.
连接池是.net来提供的,在连接字符串中有一个Pooling属性,默认是true,也就是默认开启连接池,这个和sql server没关系,如果你连接字符串里面写Pooling=false,那么就没有连接池了,这个完全是.NET的优化。
《探索多线程使用同一个数据库connection的后果》
文章链接:http://www.th7.cn/Program/java/201503/415005.shtml
总结:在多线程的环境中,在不对connection做线程安全处理的情况下,使用单个connection会引起事务的混乱....影响jdbc事务的使用。。。
|
上一篇:javascrip{过滤}t:history.go()和History.back()的区别下一篇:C# 连接SQL数据库 常用连接字符串
|