MySQL连接池

1.

 1 using System;
 2 using System.Collections;
 3 using MySql.Data.MySqlClient;
 4
 5 namespace Helper
 6 {
 7     /// <summary>
 8     /// MySQL连接池
 9     /// </summary>
10     public static class MySQLConnPool
11     {
12         //private static string connStr = "server=localhost;User ID=root;Password=qwer1234;database=test;";//连接字符串
13         private static ArrayList poolLs = new ArrayList();//连接池
14         private static int max = 20;//连接池最大数量
15
16         /// <summary>
17         /// 获取连接对象
18         /// </summary>
19         /// <param name="connStr">数据库连接字符串</param>
20         /// <returns></returns>
21         public static MySqlConnection GetConn(string connStr)
22         {
23             lock (poolLs)
24             {
25                 MySqlConnection retConn = null;//超出线程池大小限制时返回null
26                 if (poolLs.Count > 0)
27                 {
28                     retConn = (MySqlConnection)poolLs[0];//获取池中第一个
29                     poolLs.RemoveAt(0);//从池中移除
30                 }
31                 else
32                 {
33                     retConn = new MySqlConnection(connStr);//连接池中没有连接,创建一个
34                     retConn.Open();
35                 }
36                 return retConn;
37             }
38         }
39
40         /// <summary>
41         /// 关闭连接或添加到连接池
42         /// </summary>
43         /// <param name="conn"></param>
44         public static void Close(MySqlConnection conn)
45         {
46             lock (poolLs)
47             {
48                 if (poolLs.Count < max)//连接池只保留最大数量的连接
49                 {
50                     poolLs.Add(conn);//连接池数量小于限制,将连接添加到连接池
51                 }
52                 else
53                 {
54                     conn.Close();//线程池超出数量限制,关闭连接
55                 }
56             }
57         }
58     }
59 }

连接池代码

2.

 1 using System;
 2 using System.Web.Mvc;
 3 using System.Data;
 4 using MySql.Data.MySqlClient;
 5 using Helper;
 6
 7
 8 namespace MVC4.Controllers
 9 {
10     public class testController : Controller
11     {
12         private static string connStr = "server=localhost;User ID=root;Password=12345678;database=test;";
13         public ActionResult Index()
14         {
15             MySqlConnection conn = MySQLConnPool.GetConn(connStr);
16             MySqlCommand cmd = new MySqlCommand("Select * from us_BaseInfo", conn);
17             MySqlDataReader dr = cmd.ExecuteReader();
18             if (dr.Read())
19             {
20             }
21             dr.Close();//关闭MySqlDataReader
22             MySQLConnPool.Close(conn);
23             return View();
24         }
25     }
26 }

连接池使用

时间: 2024-09-29 16:07:27

MySQL连接池的相关文章

redis mysql 连接池 之 golang 实现

分享一下 golang 实现的 redis 和 mysql 连接池,可以在项目中直接引用连接池句柄,调用对应的方法. 举个栗子: 1 mysql 连接池的使用 (1) 在项目子目录放置 mysql.go (2)在需要调用的地方导入连接池句柄 DB (3)调用 DB.Query() 2 redis 连接池的使用 (1)在项目子目录放置 redis.go (2)在需要调用的地方导入连接池句柄 Cache (3)调用 Cache.SetString ("test_key", "te

node.js中mysql连接池的使用

https://cnodejs.org/topic/58378543bde2b59e06141f5a 起初的做法是创建一个连接然后使用,后来发现一段时间后会出现卡死不响应的情况,只有重启nodejs服务,搜索一番后想到了用连接池,经测试,不再出现卡死不响应情况. 参考链接: https://www.npmjs.com/package/mysql http://blog.csdn.net/lovingshu/article/details/41721233 Node.js mysql连接池模块 1

解决Mysql连接池被关闭 ,hibernate尝试连接不能连接的问题。 (默认mysql连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池。系统发布第二天访问链接关闭问题。

解决Mysql连接池被关闭  ,hibernate尝试连接不能连接的问题. (默认MySQL连接池可以访问的时间为8小时,如果超过8小时没有连接,mysql会自动关闭连接池. 所以系统发布第二天访问会失去链接,导致访问失败.因此稳定解决办法是把hibernate默认的连接池换成c3p0链接池. 在Hibernate(spring管理)中的配置:<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledData

nodejs + redis/mysql 连接池问题

nodejs + redis/mysql 连接池问题 需不需要连接池 连接池的作用主要是较少每次临时建立连接所带来的开销.初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接池的.但是这只是我们初步下意识的感觉,下面我们详细分析来看看这个结论对是不对. 先从简单的redis开始. redis服务器也是运行在单线程上的.俩都是单线程,看起来更加坚定不需要连接池的结论了. 从详细的图像来看看nodejs 连接 redis用连接池有没有意义. 上图中,nodejs共有俩连接,

mysql连接池模块

如果不想程序在查询数据时卡死或等待过长时间,一般不推荐在node中开启一个连接后全部查询都用这个链接并且不关闭.因为node里面的mysql不像php里的那样会在完成查询后断开,只要不主动断开,连接一直存在,当连接数量达到一定数量时就会产生严重的阻塞,出现各种延时和卡死现象.在并发量较大时,可以通过建立连接池来缓解并发压力. 在node中的mysql模块里其用来操作数据的query()方法接收的参数是不同的,在使用时需要特别注意.具体模块如下: /** * mysql连接池模块 * @autho

greentor MySQL连接池实现

greentor MySQL连接池实现 https://en.wikipedia.org/wiki/Connection_pool 通过greentor实现了pymysql在Tornado上异步调用的过程后发现,每次建立数据库连接都会经过socket 3次握手,而每一次socket读写都会伴随着greenlet的切换,以及ioloop的callback过程,虽然是异步了,但是IO性能并没有提升,所以在研究了TorMySQL连接池的实现后,实现了greentor自己的连接池. https://gi

Swoole MySQL 连接池的实现

目录 概述 代码 扩展 小结 概述 这是关于 Swoole 入门学习的第八篇文章:Swoole MySQL 连接池的实现. 第七篇:Swoole RPC 的实现 第六篇:Swoole 整合成一个小框架 第五篇:Swoole 多协议 多端口 的应用 第四篇:Swoole HTTP 的应用 第三篇:Swoole WebSocket 的应用 第二篇:Swoole Task 的应用 第一篇:Swoole Timer 的应用 收到读者的咨询,这情况大家可能也会有,所以就在这说说: "亮哥,我今年30岁了,

Swoole4-swoole创建Mysql连接池

一 .什么是mysql连接池 场景:每秒同时有1000个并发,但是这个mysql同时只能处理400个连接,mysql会宕机. 解决方案:连接池,这个连接池建立了200个和mysql的连接,这1000个并发就有顺序的共享这连接池中的200个连接.这个连接池能够带来额外的性能提升,因为这个和mysql建立连接的这个过程消耗较大,使用连接池只需连接一次mysql. 连接池定义:永不断开,要求我们的这个程序是一个常驻内存的程序.数据库连接池(Connection pooling)是程序启动时建立足够的数

Mysql 连接池

通常,如果我们的服务涉及到mysql的操作,当一个新的请求进来的时候,可以先连接mysql, 使用完之后再断开连接即可. 但这样做有个弊端,当请求量巨大时,会在瞬间有大量的数据库连接与断开操作,这是非常影响 mysql 性能的做法.此时,我们就需要使用Mysql连接池. 在 Python 服务中使用 Mysql 连接池 1.建立连接池,sqllib.py import pymysql from DBUtils.PooledDB import PooledDB import Config clas