
数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。
简单的说:创建数据库连接是一个很耗时的 *** 作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可靠。
不使用数据库连接池
如果不使用数据库连接池,对于每一次SQL *** 作,都要走一遍下面完整的流程:
1TCP建立连接的三次握手(客户端与 MySQL服务器的连接基于TCP协议)
2MySQL认证的三次我收
3真正的SQL执行
4MySQL的关闭
5TCP的四次握手关闭
可以看出来,为了执行一条SQL,需要进行大量的初始化与关闭 *** 作
使用数据库连接池
如果使用数据库连接池,那么会 事先申请(初始化)好 相关的数据库连接,然后在之后的SQL *** 作中会复用这些数据库连接, *** 作结束之后数据库也不会断开连接,而是将数据库对象放回到数据库连接池中
资源重用:由于数据库连接得到重用,避免了频繁的创建、释放连接引起的性能开销,在减少系统消耗的基础上,另一方面也增进了系统运行环境的平稳性(减少内存碎片以及数据库临时进程/线程的数量)。
更快的系统响应速度:数据库连接池在初始化过程中,往往已经创建了若干数据库连接置于池中备用。 此时连接的初始化工作均已完成。对于业务请求处理而言,直接利用现有可用连接,避免了从数据库连接初始化和释放过程的开销,从而缩减了系统整体响应时间。
统一的连接管理,避免数据库连接泄露:在较为完备的数据库连接池实现中,可根据预先的连接占用超时设定,强制收回被占用连接。从而避免了常规数据库连接 *** 作中可能出现的资源泄露。
如果说你的服务器CPU是4核i7的,连接池大小应该为((42)+1)=9
相关视频推荐
90分钟搞懂数据库连接池技术|linux后台开发
《tcp/ip详解卷一》: 150行代码拉开协议栈实现的篇章
学习地址:C/C++Linux服务器开发/后台架构师零声教育-学习视频教程-腾讯课堂
需要C/C++ Linux服务器架构师学习资料加qun 812855908 获取(资料包括 C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg 等),免费分享
源码下载
下载方式:>
添加引用->COM里面
//得到所有本地网络中可使用的SQL服务器列表。
SQLDMOApplication sqlApp = new SQLDMOApplicationClass();
SQLDMONameList sqlServers = sqlAppListAvailableSQLServers();
for(int i=0;i<sqlServersCount;i++)
{
object srv = sqlServersItem(i + 1);
if(srv != null)
{
thiscboServersItemsAdd(srv);
}
}
if(thiscboServersItemsCount > 0)
thiscboServersSelectedIndex = 0;
else
thiscboServersText = "<No available SQL Servers>";
//得到指定SQL服务器所有数据库的列表
SQLDMOApplication sqlApp = new SQLDMOApplicationClass();
SQLDMOSQLServer srv = new SQLDMOSQLServerClass();
srvConnect(thiscboServersSelectedItemToString(),thistxtUserText,thistxtPasswordText);
foreach(SQLDMODatabase db in srvDatabases)
{
if(dbName!=null)
thiscboDatabaseItemsAdd(dbName);
}
HTML是无法读取数据库的,HTML是页面前端脚本语言,要想从HTML网页中获取SQL数据库里的数据,需要借助JSP或ASP或PHP或RUBY等语言来实现。 简单的关系可以这样理解: 数据库<--->JSP或ASP或PHP或RUBY等语言<--->HTML
如:在JSP页面中显示完整代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<%@ page
language="java"
contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
%>
<%@page import="javasql"%>
<center>
<H1> <font color="blue" size="12">管理中心</font></H1>
<HR />
<table width="80%" border="1">
<tr>
<th>ID</th>
<th>书名</th>
<th>作者</th>
<th>价格</th>
<th>删除</th>
</tr>
<%
// 数据库的名字
String dbName = "zap";
// 登录数据库的用户名
String username = "sa";
// 登录数据库的密码
String password = "123";
// 数据库的IP地址,本机可以用 localhost 或者 127001
String host = "127001";
// 数据库的端口,一般不会修改,默认为1433
int port = 1433;
String connectionUrl = "jdbc:sqlserver://" + host + ":" + port + ";databaseName=" + dbName + ";user=" + username
+ ";password=" + password;
//
//声明需要使用的资源
// 数据库连接,记得用完了一定要关闭
Connection con = null;
// Statement 记得用完了一定要关闭
Statement stmt = null;
// 结果集,记得用完了一定要关闭
ResultSet rs = null;
try {
// 注册驱动
ClassforName("commicrosoftsqlserverjdbcSQLServerDriver");
// 获得一个数据库连接
con = DriverManagergetConnection(connectionUrl);
String SQL = "SELECT from note";
// 创建查询
stmt = concreateStatement();
// 执行查询,拿到结果集
rs = stmtexecuteQuery(SQL);
while (rsnext()) {
%>
<tr>
<td>
<%=rsgetInt(1)%>
</td>
<td>
<a href="prepareupdateID=<%=rsgetInt("ID")%>" target="_blank"><%=rsgetString(2)%></a>
</td>
<td>
<%=rsgetString(3)%>
</td>
<td>
<%=rsgetString(4)%>
</td>
<td>
<a href="deleteID=<%=rsgetInt("ID")%>" target="_blank">删除</a>
</td>
</tr>
<%
}
} catch (Exception e) {
// 捕获并显示异常
eprintStackTrace();
} finally {
// 关闭我们使用过的资源
if (rs != null)
try {
rsclose();
} catch (Exception e) {}
if (stmt != null)
try {
stmtclose();
} catch (Exception e) {}
if (con != null)
try {
conclose();
} catch (Exception e) {}
}
%>
</table>
<a href="insertjsp">添加新纪录</a>
</center>
以上就是关于MySQL与Redis数据库连接池介绍(图示+源码+代码演示)全部的内容,包括:MySQL与Redis数据库连接池介绍(图示+源码+代码演示)、C# 如何获取本地数据库SQL Server的数据库服务器名称和数据库名称然后连接,代码怎么写、如何读取sql server数据库中的html代码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)