连接池的概念:连接池是一个进程,该进程保存连接并使其处于活动状态,使连接可以被重复使用。在实际的应用场景中,相同的连接字符串对应一个连接池。如果用这个连接字符串new出多个数据库连接,操作完相关的数据操作后,显示close掉连接,对于数据库而言,该连接并没有被释放,而只不过是被标记为"关闭"状态,当一次再次要用到该连接的时候,它可以从连接池中拿出来使用。然而,如果你有太多的连接都没有close掉的话,那么连接池里打开的连接都未被标记为“关闭”状态,这些链接是不可以重复利用的,当超过一定数额的时候就会出现连接异常。在没有超过max pool size (该值可以在写连接字符串的时候自己设置大小,默认为100)的情况下,如果没有可以重复利用的连接,则,数据库会自行往连接池中增加连接。

下面用一个简单的例子来说明下:

理解数据库连接池

代码如下:

 

代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace ConnectionPool
{
public partial class Form1 : Form
{
SqlConnection conn
= null;
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
this.textBox1.Text = @"Data Source=HUAMA-QJ;
Initial Catalog=DBApp;Persist Security Info=True;User ID=sa;
Password=******;max pool size=5
";
}

private void btnOpen_Click(object sender, EventArgs e)
{

conn
= new SqlConnection(this.textBox1.Text);
conn.Open();
}

private void btnClose_Click(object sender, EventArgs e)
{
if (conn != null)
conn.Close();
//SqlConnection.ClearPool(conn);
}
}
}

 

在Textbox里设置了连接池中能够容纳连接的最大数:5个。

 

如果您点击“OpenConn”,你点击5次,这个时候在SQLSERVER MANAGEMENT STUDIO中执行sp_who2存储过程可以看到以下结果:

理解数据库连接池

 

如果你再次点击"openConn"这个时候就出现异常“”。

理解数据库连接池

当然,你也可以配置min pool size,可以将上述的连接字符串中的max改成min,你会发现,你只要点击一次"openConn"就会发现直接打开了5个连接,这个就是最小连接的含义。当你想要清除该连接字符串相关的连接的时候,也就是清除连接池中相关的连接,你可以用SqlConnection.ClearPool(conn);

大家可以自己亲手体验一下这个简单的demo,然后再去体会连接池的作用。

相关文章:

  • 2021-09-17
  • 2022-01-18
  • 2022-12-23
  • 2021-11-19
  • 2021-11-20
  • 2021-07-26
猜你喜欢
  • 2021-10-31
  • 2021-12-22
  • 2021-11-11
  • 2021-11-08
  • 2022-12-23
  • 2022-01-03
相关资源
相似解决方案