ADO.net连接池
由来:建立数据库连接是一项耗时的(耗时的)消耗力(资源消耗),连接池可以在一定程度上解决这个问题,提高应用程序性能。
ado.net 连接池原理:
一个连接池对应一个连接字符串,当有连接请求时,如果连接池中有空闲的连接字符串就可以直接使用,如果没有再进行创建新的连接池。
ado.net连接池是什么?
ado.net连接池是Data Provider提供的一个机制,是一个容器:它存放了一定数量的与数据库服务器的物理连接。
为什么要用ado.net连接池?
转换资源池设计模式,提供一套高效的连接分配、使用策略,最终目标是实现连接的高效、安全的复用,极大的提升系统的性能。简明来说分以下四点:
- 资源复用
- 获得更快的系统响应速度,提升系统性能。
- 新的资源分配手段,通过限制,提升均衡性,避免某一应用独占所有数据库资源。
- 统一的连接管理,避免数据库连接泄漏
ado.net连接池四大属性:
- Connection Timeout:连接请求等待超时时间。默认为15秒,单位为秒。
- Max Pool Size: 连接池中最大连接数。默认为100。
- Min Pool Size: 连接池中最小连接数。默认为0。
- Pooling: 是否启用连接池。ADO.NET默认是启用连接池的,因此,你需要手动设置Pooling=false来禁用连接池。
ado.net连接池怎么用?
测量使用连接池时,程序响应的时间。
private void btnPool_Click(object sender, EventArgs e) { //pooling=false不使用连接池 string connStr = "Data Source=.;Initial Catalog=TestSchool;Integrated Security=True; pooling=true"; //秒表 Stopwatch sw = new Stopwatch(); (); for (int i = 0; i < 1000; i++) { SqlConnection conn = new SqlConnection(connStr); string sql = "select * from grade"; conn.Open(); SqlCommand comm = new SqlCommand(sql,conn); comm.ExecuteNonQuery(); conn.Close(); } (); Me()); }用操作系统的性能监视器来比较使用连接池与否的好处:
SqlConnection con = new SqlConnection("server = .; database =TestSchool;pooling = true;trusted_connection = true"); //pooling = false; for(int i = 0;i < 10;i++) { try { con.Open(); Sy(1000); } catch(Exception e){Con);} finally { con.Close(); Sy(1000); } Con() }ado.net连接池异常与处理方法
当用户打开一个连接而没有正确或者及时的关闭时,经常会引发“连接泄露”问题。泄露的连接,会一直保持打开状态,直到调用Dispose方法,垃圾回收器(GC)才关闭和释放连接。
ADO.NET需要手动的关闭使用完的连接。当超出作用域时,并非自动关闭连接,而且释放的只是连接对象而非连接资源。因此,使用完的连接应当尽快的正确的关闭和释放。
using System; using Sy; using Sy; using Sy; using Sy; using Sy.SqlClient; namespace 连接池 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { SqlConnectionStringBuilder connStr = new SqlConnectionStringBuilder(); connS = .; connS = TestSchool; connS = true; connS = 10;//设置最大连接池为10 connS = 1;//设置超时时间为1秒 SqlConnection conn = null; for (int i = 1; i <= 100; ++i) { conn = new SqlConnection); try { conn.Open(); Con("Connection{0} is linked",i); } catch(Exception ex) { Con("n异常信息:n{0}",ex.Message); break; } } Con(); } } }1.《.net如何连接数据库连接池?总结很全面速看!ado.net连接池》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《.net如何连接数据库连接池?总结很全面速看!ado.net连接池》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2086654.html