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

酒店用品网站源码凡诺企业网站管理系统

酒店用品网站源码,凡诺企业网站管理系统,游戏开发小说,it外包运维服务文章目录 MySQL逻辑架构整体分为三层连接层服务层查询缓存解析器优化器执行器 存储引擎层系统文件层 MySQL 查询过程查询过程框图 博客1 博客2 MySQL逻辑架构整体分为三层 最上层为客户端层#xff0c;并非MySQL所独有#xff0c;诸如#xff1a;连接管理、授权认证、权限校… 文章目录 MySQL逻辑架构整体分为三层连接层服务层查询缓存解析器优化器执行器 存储引擎层系统文件层 MySQL 查询过程查询过程框图 博客1 博客2 MySQL逻辑架构整体分为三层 最上层为客户端层并非MySQL所独有诸如连接管理、授权认证、权限校验等功能均在这一层处理。 MySQL大多数核心服务均在中间这一层包括查询解析、优化、执行、缓存、内置函数(比如时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现存储过程、触发器、视图等。 最下层为存储引擎其负责 MySQL 中的数据存储和提取。和 Linux 下的文件系统类似每种存储引擎都有其优势和劣势。中间的服务层通过API与存储引擎通信这些API接口屏蔽了不同存储引擎间的差异。 连接层 连接层主要负责连接管理、授权认证、权限校验等功能。 连接管理 负责客户端与 MySQL 服务器之间的连接建立、维护和终止。客户端发起连接请求MySQL 服务器接收到请求每个客户端连接对应服务器上的一个线程服务器利用线程池来管理这些连接避免频繁创建和销毁线程提高效率当客户端请求断开连接时服务器会关闭相应的线程释放资源 身份认证 在客户端输入连接命令如 mysql -uxxx -pxxx后连接层的第一步是进行身份验证。通过用户名和密码进行认证确保只有授权用户才能访问数据库。还支持 SSL 证书认证提供更高级别的安全性确保数据在传输过程中不被窃取。认证成功后服务器会加载用户的权限信息。 权限校验 登录后连接层会检查用户是否有执行特定操作的权限。这包括对数据库、表和其他资源的访问控制确保用户只能访问其权限范围内的数据。如果权限不足服务器会拒绝该请求并返回相应的错误信息。 比如输入的 mysql -uxxx -pxxx 之后来到MySQL的第一件事就是校验身份权限等。每个客户端连接都对应着服务器上的一个线程。服务器上维护了一个线程池避免为每个连接都创建销毁一个线程。当客户端连接到 MySQL 服务器时服务器对其进行认证。可以通过用户名与密码认证也可以通过 SSL 证书进行认证。登录认证后服务器还会验证客户端是否有执行某个查询的操作权限。 服务层 认证成功过后接下来就来到服务层了服务层是 MySQL 的核心MySQL 的核心服务层都在这一层包括要执行的任何 SQL 语句普通的 DDL、DML、DQL、存储过程、视图、触发器等都需要经过这一层的一些操作最终才可以被 MySQL 识别。主要经过有 SQL 解析器、SQL 优化器等最终还会经过查询缓存总之所有跨存储引擎的功能都在这一层实现。 查询缓存 在执行 SELECT 语句之前MySQL 会检查查询缓存Query Cache。如果相同的 SQL 查询请求已经存在于缓存中MySQL 会直接返回缓存中的结果服务器就不需要再执行查询解析、优化和执行的整个过程 对于相同的查询请求可以快速返回结果减少处理时间。但不推荐使用查询缓存为什么呢因为查询缓存往往弊大于利。一旦对表进行任何更新如 INSERT、UPDATE 或 DELETE该表上的所有查询缓存都会被清空。这导致在高更新频率的数据库中查询缓存的命中率很低反而会影响性能。除非业务需求中需要使用一张静态表很长时间才会更新一次比如系统配置表那这张表上的查询才适合使用查询缓存。MySQL8.0 彻底废弃了查询缓存的功能MySQL 8.0 的设计更注重高效的查询处理和优化而不是依赖查询缓存。 虽然查询缓存已被废弃但在早期版本中开发者仍然可以通过设置 query_cache_type 参数来控制缓存行为。可以将参数 query_cache_type 设置成DEMAND这样对于默认的 SQL 语句都不使用查询缓存。 解析器 如果缓存没有命中的话MySQL 解析器会对查询语句进行进行语法和语义分析确保 SQL 语句符合 SQL 标准并且逻辑上正确。解析的结果生成一个内部表示这个表示用于后续的优化和执行。简单说解析的作用将我们人能看懂的 SQL 解析成 MySQL 能识别的语言 解析器先会做 “词法解析”。词法解析是一种将输入的 SQL 语句分解为基本组成部分的过程这些组成部分称为“词法单元”。MySQL 会识别出 SQL 语句中的关键字如 SELECT、FROM、WHERE 等、表名、列名等并将其分类。也就是 MySQL 需要识别出里面的字符串分别是什么代表什么 做完“词法解析”接着做“语法解析”。语法解析基于词法解析的结果检查 SQL 语句的结构是否符合 MySQL 的语法规则判断输入的这个 SQL 语句是否满足 MySQL 语法。如果语法正确语法解析器会生成一个语法树或解析树这是 SQL 语句的内部表示形式便于后续处理 优化器 经过了解析器器MySQL 知道要做什么了。接下来并不是直接执行而是会在优化器这一层进行优化优化器是个非常复杂的部件它会按照它认为的最好的方式去优化这条 SQL 语句并生成一条条的执行计划。 优化过程可能包括选择合适的索引、确定连接顺序、重写查询等以提高查询性能 索引选择当查询涉及多个索引时优化器会评估每个索引的使用效率决定采用哪个索引进行查询。这包括考虑索引的选择性、数据分布等因素连接顺序优化在执行多表关联JOIN时优化器会决定表的连接顺序。不同的连接顺序可能会导致不同的查询效率优化器会选择最优的顺序查询重写优化器可以对 SQL 语句进行重写以简化查询并提升性能。例如它可能会将某些子查询转换为 JOIN从而减少数据处理的复杂性 例如在表里面有多个索引的时候决定使用哪个索引或者在一个语句有多表关联join的时候决定各个表的连接顺序。比如你执行下面这样的语句这个语句是执行两个表的join mysql select * from t1 join t2 using(ID) where t1.c10 and t2.d20;既可以先从表t1里面取出c10的记录的ID值再根据ID值关联到表t2再判断t2里面d的值是否等于20。 也可以先从表t2里面取出d20的记录的ID值再根据ID值关联到t1再判断t1里面c的值是否等于10。 这两种执行方法的逻辑结果是一样的但是执行的效率会有不同而优化器的作用就是决定选择使用哪一个方案。 优化器阶段完成后这个语句的执行方案就确定下来了然后进入执行器阶段。 执行器 MySQL 通过解析器知道了你要做什么通过优化器知道了该怎么做于是就进入了执行器阶段。执行器会根据优化器生成的执行计划去调用执行引擎会调用相应的存储引擎接口进行数据的读取、插入、更新和删除操作 在执行 SQL 语句之前执行器会首先检查用户对目标表的操作权限 mysql select * from T where ID10; ERROR 1142 (42000): SELECT command denied to user blocalhost for table T如果有权限就打开表继续执行。打开表的时候执行器根据表的存储引擎定义使用相应的存储引擎接口打开表 比如上述sql查询表T语句ID字段没有索引执行器的执行流程处理流程 调用 InnoDB 引擎接口读取表的第一行数据检查 ID 值是否为 10。如果 ID 值不匹配则跳过这行如果匹配则将该行添加到结果集中继续调用引擎接口获取“下一行”数据重复上述检查逻辑直到遍历完整个表执行器将上述遍历过程中所有满足条件的行组成的记录集作为结果集返回给客户端。 对于有索引的表执行的逻辑与无索引的表类似但效率更高。 执行器首先调用引擎接口获取满足条件的第一行数据由于索引的存在查找和定位数据的过程更为高效通过调用接口循环获取“满足条件的下一行”直到没有更多匹配的行。每次获取时执行器会根据索引的顺序直接定位到相关数据减少了不必要的全表扫描将所有满足条件的记录组成的结果集返回给客户端 存储引擎层 根据优化器生成的执行计划执行引擎负责实际的数据检索和操作。执行引擎会调用相应的存储引擎接口进行数据的读取、插入、更新和删除操作 MySQL 提供了可插拔式的存储引擎即 “插上什么存储引擎就有什么功能”存储引擎真正的负责了 MySQL 中数据的存储和提取服务器通过 API 与存储引擎进行通信不同的存储引擎具有功能不同。不同的存储引擎将直接决定了数据存储到磁盘的方式。例如InnoDB 使用聚簇索引存储数据而 MyISAM 使用非聚簇索引 系统文件层 系统文件层是 MySQL 逻辑架构中负责数据持久化和存储的底层组件。它主要涉及数据的存储与管理确保数据能够安全、有效地写入磁盘并与存储引擎进行交互。 数据存储负责将数据以文件的形式存储在操作系统的文件系统中与存储引擎交互系统文件层通过 API 与存储引擎进行通信完成数据的写入和读取操作。这一层使存储引擎能够透明地处理数据存储的细节。 MySQL 查询过程 查询过程框图 我们总是希望MySQL能够获得更高的查询性能最好的办法是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点就会发现很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。 当向MySQL发送一个请求的时候MySQL到底做了些什么呢 接收请求 客户端连接客户端通过连接管理与 MySQL 服务器建立连接并发送 SQL 查询请求。 查询缓存可选 如果启用了查询缓存MySQL 会检查该查询是否已有缓存的结果。如果缓存中存在该查询的结果MySQL 会直接返回缓存结果而无需执行查询。 查询解析 语法解析MySQL 的查询解析器会检查 SQL 查询的语法确保其符合 SQL 标准。 语义分析解析器验证表名、列名是否存在以及用户是否有权限执行该查询。 查询优化 生成执行计划查询优化器分析解析后的 SQL 语句生成一个或多个执行计划。 优化器使用统计信息如表的行数、索引的选择性等来评估不同的执行计划并选择最优的执行路径。 执行查询 调用存储引擎优化后的执行计划会被传递给执行引擎MySQL 根据计划调用相应的存储引擎执行实际的数据操作。 数据检索存储引擎根据执行计划从磁盘读取数据进行必要的计算和处理如连接、排序等。 返回结果 结果集返回执行引擎将结果集通过服务层返回给客户端。 连接管理客户端接收到结果后可以继续发送其他查询或关闭连接。 详解一条 SQL 的执行过程
http://www.dnsts.com.cn/news/105591.html

相关文章:

  • 网站开发西安免费做的英文网站
  • 网站建设盒子模型浮动都有什么网站
  • 给网站做cdn大型网站建设优化排名
  • 商梦建站个人网站可以做什么
  • 手机网站需要备案吗贵阳企业网站排名优化
  • 学做网站开发要1万6东莞网站建设方案
  • 视频网站后台登陆和京东一样的网站
  • 硬件开发一站式平台临淄房产信息网123
  • 网站icp备案信息注册邯郸市第一医院
  • 网站文章编辑器代码建网站需要怎么做
  • 辽宁省品牌建设促进会网站扬中零壹网站建设
  • 接视频做的网网站整合营销传播方案案例
  • 哈尔滨行业网站开发网站根目录表示
  • 数据分析和网站开发网站如何建设数据库
  • 泰安网站建设广告做网页学什么语言
  • 怎么做app网站ui原型纯html5网站
  • 企业网站建设服务商网站域名后缀cc
  • 建筑网站绿地新里城网站出现建设中
  • wordpress站点统计小工具食品网站建设规划
  • 网站浏览速度大型国企网站建设费用
  • 个人网站注册步骤图解电商网站开发目的
  • 网站建设与管理pdfc2c旅游电子商务平台
  • 代理记账 营销型网站网站设计与开发培训
  • 厦门网络推广建网站网盘手机app官网下载
  • 大朗网站建设公司安徽万振建设集团网站
  • 茶叶网站建设哪家购物网站主页模版
  • seo网站优化方案摘要哈尔滨市建设工程质量安全站
  • php网站开发建设wordpress模板用法
  • 大同市网站建设深圳建站公司需要多久
  • 深圳购物网站南充市企业网站建设