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

网站开发程序的移交宁波市建设网

网站开发程序的移交,宁波市建设网,wordpress 空两格,网站开发团队排行榜执行一条 SQL 查询语句#xff0c;期间发生了什么#xff1f; 连接器#xff1a;建立连接#xff0c;管理连接、校验用户身份#xff1b;查询缓存#xff1a;查询语句如果命中查询缓存则直接返回#xff0c;否则继续往下执行。MySQL 8.0 已删除该模块#xff1b;解析 … 执行一条 SQL 查询语句期间发生了什么 连接器建立连接管理连接、校验用户身份查询缓存查询语句如果命中查询缓存则直接返回否则继续往下执行。MySQL 8.0 已删除该模块解析 SQL通过解析器对 SQL 查询语句进行词法分析、语法分析然后构建语法树方便后续模块读取表名、字段、语句类型执行 SQL执行 SQL 共有三个阶段 预处理阶段检查表或字段是否存在将 select * 中的 * 符号扩展为表上的所有列。优化阶段基于查询成本的考虑 选择查询成本最小的执行计划执行阶段根据执行计划执行 SQL 查询语句从存储引擎读取记录返回给客户端 一、MySQL的架构两层 Server 层负责建立连接、分析和执行 SQL。MySQL 大多数的核心功能模块都在这实现主要包括连接器查询缓存、解析器、预处理器、优化器、执行器等。另外所有的内置函数如日期、时间、数学和加密函数等和所有跨存储引擎的功能如存储过程、触发器、视图等。都在 Server 层实现。存储引擎层负责数据的存储和提取。支持 InnoDB、MyISAM、Memory 等多个存储引擎不同的存储引擎共用一个 Server 层。 二、Server层 1.连接器 连接MySQL服务与客户端进行TCP三次握手因为 MySQL 是基于 TCP 协议进行传输的 # -h 指定 MySQL 服务得 IP 地址如果是连接本地的 MySQL服务可以不用这个参数 # -u 指定用户名管理员角色名为 root # -p 指定密码如果命令行中不填写密码为了密码安全建议不要在命令行写密码就需要在交互对话里面输入密码 mysql -h$ip -u$user -p 校验客户端的用户名和密码如果用户名或密码不对则会报错如果用户名和密码都对了会读取该用户的权限保存然后后面的权限逻辑判断都基于此时读取到的权限 show processlist //查看 MySQL 服务被多少个客户端连接 kill connection id //手动断开空闲的连接 1MySQL 定义了空闲连接的最大空闲时长由 wait_timeout 参数控制的默认值是 8 小时28880秒如果空闲连接超过了这个时间连接器就会自动将它断开。 2MySQL 服务支持的最大连接数由 max_connections 参数控制比如我的 MySQL 服务默认是 151 个,超过这个值系统就会拒绝接下来的连接请求并报错提示“Too many connections”。 3MySQL 的连接也跟 HTTP 一样有短连接和长连接的概念。 // 短连接 连接 mysql 服务TCP 三次握手 执行sql 断开 mysql 服务TCP 四次挥手// 长连接 连接 mysql 服务TCP 三次握手 执行sql 执行sql 执行sql .... 断开 mysql 服务TCP 四次挥手 使用长连接的好处就是可以减少建立连接和断开连接的过程所以一般是推荐使用长连接。 但是使用长连接后可能会占用内存增多因为 MySQL 在执行查询过程中临时使用内存管理连接对象这些连接对象资源只有在连接断开时才会释放。如果长连接累计很多将导致 MySQL 服务占用内存太大有可能会被系统强制杀掉这样会发生 MySQL 服务异常重启的现象。 解决长连接占用内存的问题 有两种解决方式。 第一种定期断开长连接。既然断开连接后就会释放连接占用的内存资源那么我们可以定期断开长连接。 第二种客户端主动重置连接。MySQL 5.7 版本实现了 mysql_reset_connection() 函数的接口注意这是接口函数不是命令那么当客户端执行了一个很大的操作后在代码里调用 mysql_reset_connection 函数来重置连接达到释放内存的效果。这个过程不需要重连和重新做权限验证但是会将连接恢复到刚刚创建完时的状态。 2.查询缓存 MySQL 服务收到 SQL 语句后就会解析出 SQL 语句的第一个字段看看是什么类型的语句。如果 SQL 是查询语句select 语句MySQL 就会先去查询缓存 Query Cache 里查找缓存数据看看之前有没有执行过这一条命令这个查询缓存是以 key-value 形式保存在内存中的key 为 SQL 查询语句value 为 SQL 语句查询的结果。如果查询的语句命中查询缓存那么就会直接返回 value 给客户端。如果查询的语句没有命中查询缓存中那么就要往下继续执行等执行完后查询的结果就会被存入查询缓存中。 查询缓存挺鸡肋 对于更新比较频繁的表查询缓存的命中率很低的因为只要一个表有更新操作那么这个表的查询缓存就会被清空。如果刚缓存了一个查询结果很大的数据还没被使用的时候刚好这个表有更新操作查询缓冲就被清空了相当于缓存了个寂寞。 所以MySQL 8.0 版本直接将查询缓存删掉了也就是说 MySQL 8.0 开始执行一条 SQL 查询语句不会再走到查询缓存这个阶段了。 对于 MySQL 8.0 之前的版本如果想关闭查询缓存我们可以通过将参数 query_cache_type 设置成 DEMAND。 3.解析器 词法分析识别关键字语法分析检查语法是否正确然后构建SQL语法树 4.执行SQL 4.1 预处理器 检查 SQL 查询语句中的表或者字段是否存在将 select * 中的 * 符号扩展为表上的所有列 4.2 优化器 将 SQL 查询语句的执行方案确定下来比如在表里面有多个索引的时候优化器会基于查询成本的考虑来决定选择使用哪个索引。 4.3 执行器 在执行的过程中执行器就会和存储引擎交互了交互是以记录为单位的。 有三种方式执行 主键索引查询全表扫描索引下推 三、参考 小林 coding
http://www.dnsts.com.cn/news/15050.html

相关文章:

  • 广东省两学一做网站网站怎么自己做
  • 开源 购物网站沧州网站建设哪家专业
  • 自助建站网站哪个好品牌策划案例
  • 中国建筑总公司网站如今做那些网站致富
  • html5网站多少钱wordpress模板极简
  • 株洲网站排名优化价格wordpress模板后门
  • 建设银行德阳分行网站网页设计报告心得
  • 漂亮的php网站源码wordpress网站主题
  • 北京做网站多少钱合理苏州手机网站建设多少钱
  • 烟台市城市建设发展有限公司网站微信小程序开发平台
  • 百度站长平台官网wordpress更改忘记密码样式
  • 通用企业网站模板做网站什么软件好
  • 网站界面设计的要求万网封停慧聪网域名事件
  • 如何360收录网站写字楼装修公司
  • 电影网站建设的核心是阿里云服务器如何做两个网站
  • 如何弄一个自己的网站仿照别人的网站做违法吗
  • 没有服务器怎样做网站网站管理助手 1004
  • 做公司网站的南宁公司软件项目交易网
  • 做商铺最好的网站网站权重能带来什么作用
  • 建设高端网站公司kunkka wordpress
  • 用cms创建自己带数据库的网站中国建筑网官网首页
  • 烟台网站排名系统做购物网站多少钱 知乎
  • 做论坛网站怎么赚钱家装公司图片
  • 防城港网站建设甘肃网络公司网站建设
  • 俄语淘宝网站建设wordpress中的邮箱设置
  • 网站建设 jsp php手机营销型网站建设公司
  • dw建设网站如何加入音乐合肥网站建设技术
  • 鞍山市做网站公司Wordpress模板服务
  • 外贸网站建设报价差别那么大花钱多吃亏wordpress添加订阅会员
  • 怎么建设网站赚钱WordPress添加上传下载