当前位置: 首页 > news >正文

瓜子二手车网站开发智慧团建注册登记入口

瓜子二手车网站开发,智慧团建注册登记入口,网页源代码里哪个是视频链接,网站建设工单系统护语该篇章将开始整理MySQL的优化#xff0c;不过开始之前#xff0c;我们想了解清楚那就是MySQL是怎么执行的。 文章目录1.MySQL驱动2.应用系统数据库连接池3.MySQL数据库连接池4.SQL执行过程4.1.线程监听#xff1a;监听网络请求中的SQL语句4.2.SQL接口#xff1a;负责处理接…该篇章将开始整理MySQL的优化不过开始之前我们想了解清楚那就是MySQL是怎么执行的。 文章目录1.MySQL驱动2.应用系统数据库连接池3.MySQL数据库连接池4.SQL执行过程4.1.线程监听监听网络请求中的SQL语句4.2.SQL接口负责处理接收到的SQL语句4.3.查询解析器让MySQL能看懂SQL语句4.4.查询优化器选择最优的查询路径4.5.存储引擎接口真正执行SQL语句4.6.执行器根据执行计划调用存储引擎的接口5.总结1.MySQL驱动 大家都知道我们如果要在Java系统中去访问一个MySQL数据库必须得在系统的依赖中加入一个MySQL驱动有了这个MySQL驱动才能跟MySQL数据库建立连接然后执行各种各样的SQL语句。 MySQL驱动他会在底层跟数据库建立网络连接有网络连接接着才能去发送请求给数据库服务器当我们跟数据库之间有了网络连接之后我们的Java代码才能基于这个连接去执行各种各样的增删改查SQL语句。 2.应用系统数据库连接池 假设我们的系统是部署在Tomcat中的那么Tomcat本身肯定是有多个线程来并发的处理同时接收到的多个请求的如果Tomcat中的多个线程并发处理多个请求的时候都要去抢夺一个连接去访问数据库的话那效率肯定是很低下的。 如果Tomcat中的每个线程在每次访问数据库的时候都基于MySQL驱动去创建一个数据库连接然后执行SQL语句然后执行完之后再销毁这个数据库连接可能Tomcat中上百个线程会并发的频繁创建数据库连接执行SQL语句然后频繁的销毁数据库连接也是非常不好的因为每次建立一个数据库连接都很耗时好不容易建立好了连接执行完了SQL语句你还把数据库连接给销毁了下一次再重新建立数据库连接那肯定是效率很低下的 所以一般我们必须要使用一个数据库连接池也就是说在一个池子里维持多个数据库连接让多个线程使用里面的不同的数据库连接去执行SQL语句然后执行完SQL语句之后不要销毁这个数据库连接而是把连接放回池子里后续还可以继续使用。基于这样的一个数据库连接池的机制就可以解决多个线程并发的使用多个数据库连接去执行SQL语句的问题而且还避免了数据库连接使用完之后就销毁的问题。 常见的数据库连接池有DBCPC3P0Druid 3.MySQL数据库连接池 任何一个系统都会有一个数据库连接池去访问数据库也就是说这个系统会有多个数据库连接供多线程并发的使用。同时我们可能会有多个系统同时去访问一个数据库这都是有可能的。MySQL也必然要维护与系统之间的多个连接。 实际上MySQL中的连接池就是维护了与系统之间的多个数据库连接。除此之外你的系统每次跟MySQL建立连接的时候还会根据你传递过来的账号和密码进行账号密码的验证库表权限的验证。 4.SQL执行过程 4.1.线程监听监听网络请求中的SQL语句 现在假设我们的数据库服务器的连接池中的某个连接接收到了网络请求假设就是一条SQL语句那么大家先思考一个问题谁负责从这个连接中去监听网络请求谁负责从网络连接里把请求数据读取出来 我想很多人恐怕都没思考过这个问题但是如果大家对计算机基础知识有一个简单了解的话应该或多或少知道一点那就是网络连接必须得分配给一个线程去进行处理由一个线程来监听请求以及读取请求数据比如从网络连接中读取和解析出来一条我们的系统发送过去的SQL语句如下图所示 4.2.SQL接口负责处理接收到的SQL语句 当MySQL内部的工作线程从一个网络连接中读取出来一个SQL语句之后此时会如何来执行这个SQL语 句呢 MySQL内部首先提供了一个组件就是SQL接口SQL Interface他是一套执行SQL语句的接口专门用于执行我们发送给MySQL的那些增删改查的SQL语句。因此MySQL的工作线程接收到SQL语句之后就会转交给SQL接口去执行如下图 4.3.查询解析器让MySQL能看懂SQL语句 SQL接口怎么执行SQL语句呢你直接把SQL语句交给MySQL他能看懂和理解这些SQL语句吗 比如我们来举一个例子现在我们有这么一个SQL语句 select id,name,age from users where id1 1MySQL自己本身也是一个系统是一个数据库管理系统他没法直接理解这些SQL语句 所以此时有一个关键的组件要出场了那就是查询解析器。 这个查询解析器Parser就是负责对SQL语句进行解析的比如对上面那个SQL语句进行一下拆解拆解成以下几个部分 我们现在要从“users”表里查询数据from users查询“id”字段的值等于1的那行数据where id1对查出来的那行数据要提取里面的“id,name,age”三个字段select id,name,age 所谓的SQL解析就是按照既定的SQL语法对我们按照SQL语法规则编写的SQL语句进行解析然后理解这个SQL语句要干什么事情如下图所示 4.4.查询优化器选择最优的查询路径 当我们通过解析器理解了SQL语句要干什么之后接着会找查询优化器Optimizer来选择一个最优的查询路径。 在语法分析阶段会对SQL语句进行分析比如如下sql语句 select A.name, A.age from tb_student A where A.age18 and A.name张三 1该SQL在被执行之前会先进行语法检测判断有无错误之后会分析出如下两个sql查询条件 where A.age18where A.name‘张三’ 问题就来了这两个条件谁先执行有区别吗答案是肯定的在我们编写SQL的时候都会遵循一个原则就是把区分度最高的放在左侧。 where A.name‘张三’ AND A.age18where A.age18 AND A.name‘张三’ 上面这就是一个最简单的SQL语句的两种实现路径其实我们会发现要完成这个SQL语句的目标两个路径都可以做到但是哪一种更好呢显然感觉上是第一种查询路径更好一些。因为在我们数据库系统中叫张三的人可能只有几百个但是年龄为18岁的可能有几万个。 所以查询优化器大概就是干这个的他会针对你编写的几十行、几百行甚至上千行的复杂SQL语句生成查询路径树然后从里面选择一条最优的查询路径出来。相当于他会告诉你你应该按照一个什么样的步骤和顺序去执行哪些操作然后一步一步的把SQL语句就给完成了。 4.5.存储引擎接口真正执行SQL语句 把查询优化器选择的最优查询路径也就是你到底应该按照一个什么样的顺序和步骤去执行这个SQL语句的计划把这个计划交给底层的存储引擎去真正的执行。这个存储引擎是MySQL的架构设计中很有特色的一个环节。 真正在执行SQL语句的时候要不然是更新数据要不然是查询数据那么数据你觉得存放在哪里 以对数据库而言我们的数据要不然是放在内存里要不然是放在磁盘文件里。 那么现在问题来了我们已经知道一个SQL语句要如何执行了但是我们现在怎么知道哪些数据在内存里哪些数据在磁盘里我们执行的时候是更新内存的数据还是更新磁盘的数据我们如果更新磁盘的数据是先查询哪个磁盘文件再更新哪个磁盘文件 所以这个时候就需要存储引擎了存储引擎其实就是执行SQL语句的他会按照一定的步骤去查询内存缓存数据更新磁盘数据查询磁盘数据等等执行诸如此类的一系列的操作如下图所示。 存储引擎支持各种各样的存储引擎的比如我们常见的InnoDB、MyISAM、Memory等等我们是可以选择使用哪种存储引擎来负责具体的SQL语句执行的。当然现在MySQL一般都是使用InnoDB存储引擎。 4.6.执行器根据执行计划调用存储引擎的接口 存储引擎可以帮助我们去访问内存以及磁盘上的数据那么是谁来调用存储引擎的接口呢 其实我们现在还漏了一个执行器的概念这个执行器会根据优化器选择的执行方案去调用存储引擎的接口按照一定的顺序和步骤就把SQL语句的逻辑给执行了。 执行器就会去根据我们的优化器生成的一套执行计划然后不停的调用存储引擎的各种接口去完成SQL 语句的执行计划大致就是不停的更新或者提取一些数据出来。 5.总结 本文介绍内容总体如下流程图所示
http://www.pierceye.com/news/145781/

相关文章:

  • 青岛网站开发建设安阳市商祺网络有限责任公司
  • 自己怎么做装修网站网站建设设计岗位职责
  • php语言 网站建设投资2 3万小生意
  • 全美网站开发微转app是用网站做的吗
  • 禹州 什么团购网站做的好广州网站建设程序开发
  • 成都市微信网站建设公司专业app开发
  • 郑州网站建设hndream神木网站设计公司
  • 关于网站集约化建设的讲话抓取网站访客qq号码
  • 南昌住房城市建设支行官方网站海洋网络提供网站建设
  • 网站外链建设的八大基本准则做网站卖得出去吗
  • 网站建设不完整 审核天元建设集团有限公司一公司尤作岭
  • 论坛程序做导航网站专做轮胎的网站
  • 网站开发软件解决方案个人网站可以做资讯吗
  • 网站右击无效是怎么做的牛商网建设的食品网站
  • 新北网站建设全网营销网站建设
  • 网站建设与管理 教学设计自己的身份已经网站备案了
  • 长沙网站列表网站开发实例及研究
  • 东莞阳光网官方网站吉林百度查关键词排名
  • 网站开发投标书范本目录左旗网站建设
  • 一流的五屏网站建设wordpress 移动端 接口
  • 服装行业网站建设兴宁网站设计
  • 网站两边的悬浮框怎么做wordpress 非插件代码高亮
  • 网站安全管理制度建设下载网站建设公司哪家强
  • 网络直播网站开发长春市城乡建设部网站
  • 自己搭建服务器做网站要多久汕头网络推广电话
  • 除了昵图网还有什么做图网站深圳房地产网站开发
  • 网站建设哪家go好重庆怎样网站推广
  • 松江网站建设哪家好wordpress去掉父分类
  • 网站 云建站设计网站推荐室内
  • 网站怎么自适应屏幕云南建设投资集团网站