【MySQL】如何实现MySQL连接池的原理和简单的网站数据流

发布时间:2025-06-24 17:37:53  作者:北方职教升学中心  阅读量:566


如何实现MySQL连接池的原理和简单的网站数据流。

  • 1.MySQL连接池原理。
  • 2.如何进行简单的网站数据流。

在这里插入图片描述

点赞。👍👍收藏。🌟🌟关注。💖💖
你的支持是对我最大的鼓励,让我们一起努力吧!😃😃

1.MySQL连接池原理。

目前,我们对mysql有一定的了解,让我们来谈谈,mysql在网站或公司内部定位存储方案的问题。

事实上,在开发过程中,表结构的各个方面都设计得很好,接下来要做的不是写各种sql,在开发过程中,首先要连接数据库。当我们连接数据库时,我们会发现每次连接都是先创建数据库对象,然后在Connet用完后关闭释放连接,这是一个短连接࿰,执行一个sql,关闭连接。c;而且很浪费。

因此,mysql在网站和数据库之间࿰之间c;除了一些缓存技术,编码层面还有一种技术叫做。 连接池。

如何理解这个连接池?

以前是这样做的,连接后需要返回,返回后断开。事实上,我们可以自己设计连接池的小组件,多个线程可以提前与mysql建立良好的连接󿀌连接建立后,它一直处于连接状态,我们可以把sql语句封装成任务,扔进连接池,然后将任务交给连接池中的线程。当线程启动时,必须绑定或关联mysql连接资源,说白了就是为线程设计一个类别,MYSQL对象在线程内部创建。在构建线程的同时,MYSQL对象也被构建除外。线程启动后,将mysql连接到,连接后,线程不会进入自己的事件主循环,然后我们可以直接使用这个连接。

那这个东西怎么办?

在Linux中学习线程池非常简单,事实上,这个连接池只需要维护一个任务队列。今天,在这个连接池中创建一个线程池还需要添加MYSQL对象󿀌每个线程都给它一个MYSQL对象,MYSQL对象的创建可以作为线程类的内部成员,初始化线程可以初始化相应的MYSQL对象。启动线程后,还建立了mysql连接,这样,每个线程都有自己的mysql句柄,所有这些都维护了自己的连接。然后线程进入等待任务到来的死循环,不断从任务队列中获取任务,如果有任务,在条件变量下等待没有任务。将来,我们可以通过任务队列来完成任务。

在这里插入图片描述

上层可以构建任务task,它可以包含两个成员,一个是string sql,还有一个回调函数function cb。例如,我现在是一个调用方,我想向mysql服务器发出delete指令,因此,写一个delete 然后将sql语句构建成task,然后将task扔进连接池的任务队列,然后线程可以从任务队列中获得任务,然后得到相应任务的线程不是msyql连接吗,可以执行mysql__query,将task对象中的sql拿出来,交给mysql_query执行。提前创建线程池#xff0c;提前创建连接器,因此,避免重建连接,所以这个时候一旦拿到task,就给mysql发sql指令。提前创建线程池#xff0c;提前创建连接器,因此,避免重建连接,所以这个时候一旦拿到task,就会给mysql发sql指令。

在这里插入图片描述

为什么在任务类中放置回调函数fuction࿱?f;
这是因为我们自己的模块可以有一个函数A。如果将删除更新添加到mysql,最好说,但是当我们阅读时,我们需要得到结果。SQL执行线程后󿀌然后再做一个动作,看看fuction是否存在,如果没有,sql的执行就真的结束了。假如设置了,然后线程池继续回调这个fuction通过回调将我们查询到的结果拿回来。这个回调是我们曾经构建task,将自己的方法函数A绑定到task中的function,所以数据被拿回来了。

在这里插入图片描述

所以我们可以用这个想法来设计一个连接池。

2.如何进行简单的网站数据流。

如何走用户逻辑?以注册和登录为例。

现在有一个服务器配备了网站,还有一台服务器配备了内网中的mysql。http࿱必须建在这个服务器上a;nginx或商务tomcat。现在有用户向网站发起注册请求,然后这个网站会给你一个注册页面。然后填写相应的信息并提交。GET或POST可以将数据提交给服务器,它可能在服务器内部使用一些web语言 例如,php󿀌python,java,然后你可以提取你提交的数据。然后判断你这是注册,因此,将您的数据构建成sql,直接提交到mysql,此后,用户信息被记录在用户表中。但是直接处理数据库太慢了, 其次,一般公司数据库服务可能有多个,因此,它可能有多个数据库的后端访问。那么如何选择这个网站的数据库࿱呢?f;需要中间键,可以使用C//等效率更高的语言C++等。这个构建sql不需要直接处理数据库,先直接交给它。然后在内部做一些负载平衡󿀌选择将记录插入数据库。这些数据库将定期同步数据,然后就有了所有的数据。

所以网站不在乎后端有多少数据库,集群化数据库。这里有这么多数据库可以选择那个。你也不用担心,此时,在这两个模块之间添加一层软件层。也就是说,计算机科学中的任何问题都可以通过添加一层软件来解决。因此,添加软件层来解决相应的问题。

在这里插入图片描述

然后别人想登录󿀌登录也是如此。请求登录页面,然后返回登录页面,然后输入用户名和密码,然后通过POST或GET提交,那么如何验证这个用户࿱?f;因此,提取后建立sql语句,通过服务向后端数据库发送此SQL。根据负载平衡,可以随意找到数据库,因为数据是同步的。可以根据负载平衡随意找到数据库,因为数据是同步的。然后查,查询结果返回,只要有结果表明用户合法,然后可以在服务器层面形成各种cokie󿀌像session这样的信息。此外,当我们访问页面时,我们可能会有一些高频热数据,我们可以添加一些缓存和其他,比如Rides等等。因此,在查看数据时,不必在数据库中查找#xff0c;先到缓存,有些话直接从缓存中返回。如果没有,请访问mysql。

在这里插入图片描述

这就是整个网站的初步逻辑。