从技术上讲,什么是数据库连接?

当我们说我们有一个“数据库连接”或一个“打开了多个连接的连接池”时,在技术层面上,我们实际上是什么意思?

我的理解是:

数据库连接是指向在数据库进程中运行的线程的链接,该线程被阻塞并等待来自另一个进程中另一个线程的输入。

这是正确的定义吗?

因此,当我在计算机中运行mysql并在其他计算机(或同一台计算机)中运行java应用程序时,这并不重要..),当我做这样的事情时:

conn.open();

以打开数据库连接。.

mysql进程是否会为我创建一个新线程并阻止该线程并开始侦听输入?

客户端呢?如果我不关闭连接,会发生什么情况?


答案 1

你知道什么是套接字吗?这在教程中很短,但描述很好。

您必须区分客户端和服务器端。我无法判断MySQL,但通常服务器端是这样实现的,对于连接,新线程正在处理请求。

连接池用于最大程度地减少套接字打开开销。通常,您不关心通过哪个连接(假设所有连接都以同一用户身份连接)从 DB 接收结果集。

你不想消耗资源,所以你想变得友好,当你完成后,你关闭你的连接。我相信今天每个服务器都会结束连接,如果一段时间没有活动(超时)。


答案 2