zoukankan      html  css  js  c++  java
  • 理解数据库连接池

    连接池的概念:连接池是一个进程,该进程保存连接并使其处于活动状态,使连接可以被重复使用。在实际的应用场景中,相同的连接字符串对应一个连接池。如果用这个连接字符串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,然后再去体会连接池的作用。

  • 相关阅读:
    [手把手]VMware 16 pro 装 Windows11专业版并激活
    [HTML] 做个空壳网页练手(菜鸡的自我信息完善
    从零玩HTML的一天
    [总结]C++ 之 向量vector
    [递归专题打卡]2021 6.30-7.2
    初学Socket笔记
    对java是编译型语言还是解释型语言的讨论
    PHP CURL POST 请求设置 Content-Type (指定Content-Type)
    webpack 报错 [webpack-cli] Unable to load '@webpack-cli/serve' command
    Vue cli 创建项目模板 / npm run build 打包后资源引用问题
  • 原文地址:https://www.cnblogs.com/shineqiujuan/p/1717303.html
Copyright © 2011-2022 走看看