ToB企服应用市场:ToB评测及商务社交产业平台

标题: 【MySQL】链接池原理:简单明白网站的数据流动 [打印本页]

作者: 水军大提督    时间: 2024-12-15 21:01
标题: 【MySQL】链接池原理:简单明白网站的数据流动
        前言:本节内容是博主快速上手mysql专栏的最后一篇文章。 本节内容不讲解mysql语法了, 而是以网站为例,讲一下前后端的逻辑与接洽。 友友们可以当成一个故事听。 
          ps:本节不必要门槛, 当成一个故事听即可!
  目录
连接池原理
注册和登录
注册
登录 


连接池原理

        mysql 其实正常访问的时候,我们把表创建好了之后,下一步其实不是写各种各样的sql。而是基于表结构做开发,写的都是上层的代码。然后我们对应的就必要去连接数据库。而我们每次连接数据库的时候就是,创建MYSQL数据库对象,对他connect,然后用完把数据库关掉。其实就是执行很小部分的sql大概事务后就关掉了,这就是一种短链接
        所以mysql就在网站和数据库之间,有一种编码级别的技术,就叫做连接池。所谓的连接池怎么去明白,下面我们利用一张图明白一下:
   

          上面这是一个数据库, 就是我们在执行事务大概sql时, 一样平常都是执行完一个事务, 大概一个sql之后, 就断开连接了。 
   
       而现实上我们可以设计一个叫做连接池的小组件,预先让多个线程对mysql创建好链接,创建好连接之后就不动了一直处于连接的状态。后面有任何使命到来就把对应的sql语句push到连接池当中。然后把使命交给连接池当中的线程。这个线程在被启动的时候肯定是给线程绑定大概关联了连接资源。连接池内里的动作就应该是下面这样:
  1. 创建线程池 +MYSQL
  2. 启动线程池 +connect
  3. while(true)
  4. {
  5.         //等待拿任务。
  6. }
复制代码
        而连接池内里的的数据就是一个一个的我们自己封装的使命。 这个使命内里我们必须要封装sql语句, 也就是sql对应的字符串:
  1. class tack
  2. {
  3.     private:
  4.     string sql;
  5.     function cb;//
  6. };
复制代码
        有了这个task使命类之后, 以后我们想要执行某个sql语句,就是将想要执行的sql语句写成字符串,然后构建一个task对象,最后把这个task对象push到线程池队列内里。线程池队列会从队列内里一个一个的拿到task使命,将内里的string类型的sql成员取出来,去访问mysqld。
          然后上面有那个cb函数, 这里的cb是什么意思呢? 因为我们的添加删除修改,有时必要把我们的效果拿到。所以如果我们的cb没有设置,那么就什么都不做;如果cb设置了,就执行select语句,得到效果集res, 然后回调cb函数:cb(res)。然后我们的数据就被拿返来了!
          以上就是连接池小组件大概的逻辑。
  注册和登录

注册

        我们先看一下用户的注册。利用一张图来明白:
   

    登录 

           登录同样可以利用类似于上面的图来明白:

          差异的是当网站返回页面的时候, 不是注册页面, 而是登陆页面。 我们同样必要将信息提交。 然后网站内部就执行一个select语句, 就好比select* from user where user = 'XXX' and passwd = 'XXX'这种。 然后就去查找。 查找到效果后就说明有这个用户, 就能通过。 否则就不能通过。 
          中间的软件层部分我们也可以添加一些缓存, 类似redis这些数据库。 就是用来生存高热度的数据, 以后去数据库查找之前先到这些缓存内里去找, 查到了就返回。 
  

 ——————以上就是本节全部内容哦, 如果对友友们有资助的话可以关注博主, 方便学习更多知识哦!!!  

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4