首页 > 数据库 >MySQL 基础架构

MySQL 基础架构

时间:2024-10-13 16:23:06浏览次数:7  
标签:执行 缓存 查询 基础架构 MySQL 权限 连接

MySQL 基础架构:一条SQL查询语句如何执行

  • 连接器(管理连接、权限验证)
  • 查询缓存(5.7不推荐使用,8.0完全废弃)
  • 解析器(解析树)
  • 优化器(索引选择、表关联顺序、执行计划)
  • 执行器(调用存储引擎接口)
  • 执行引擎(InnoDB、MyISAM、Memory)

MySQL 分成Server层和存储引擎层两部分。

连接器

mysql -h<ip> -P<port> -u<user> -p

建立连接后,连接器会查询权限表。

  • 如果使用 GRANT/REVOKE 修改用户权限,权限会立即生效
  • 如果直接更新权限表,需要使用 FLUSH PRIVILEGES 或重新登录,权限才会生效

查看连接状态;默认连接空闲超过8小时会自动断开(由 wait_time 参数控制),断开后查询会收到 lost connection 错误

show processlist

长连接/短连接:在应用中应该尽量使用长连接,避免频繁建立断开连接的开销。

但是查询执行过程临时使用的内存是由连接对象管理的,所以长连接可能会占用大量内存问题

  • 定期断开连接或执行大查询后断开连接
  • MySQL 5.7 后可以通过 mysql_reset_connection 重新初始化资源,但不会重连和重做权限校验

查询缓存

缓存失效:只要对表进行更新,表上的所有查询缓存都会被清空。

按需使用缓存,设置参数 query_cache_type=demand 后查询默认不进行缓存,使用缓存需要显示指定 SQL_CACHE

select sql_cache * from table

MySQL 8.0 移除查询缓存功能

分析器

分析器:进行词法分析和语法分析,生成解析树。

优化器

优化器:索引选择、表关联顺序、生成执行计划

查看执行计划

explain select * from table

执行器

解析器执行后会校验用户有没有表权限(precheck),执行器在执行时会在此之前校验用户有没有表权限(触发器、存储过程等一些在运行时涉及的表)

慢日志中的 rows_examined(扫描行数),就是在每次调用存储引擎接口是累加的。

标签:执行,缓存,查询,基础架构,MySQL,权限,连接
From: https://www.cnblogs.com/liaozibo/p/18462508

相关文章

  • mysql+navicat+eclipse+jsp
    mysqlserver5.5安装微信公众号搜软件智库,然后找到mysql5.5百度网盘下载对应自己电脑版本的mysql百度网盘:http://pan.baidu.com/s/1jI5oB6A提取密码:7act解压解压密码:rjzkgzh(软件智库公众号)readygo解压后,双击开始安装点击next 点击我接受,然后next......
  • 使用MySQL之SHOW语句
    SHOWDATABASES;返回可用数据库的一个列表。包含在这个列表中的可能是MySQL内部使用的数据库(如例子中的mysql,information_schema,performance_schema,sys)showdatabases;输出如下:SHOWTABLES;返回当前选择的数据库内可用表的列表showtables;输出如下:SHOW......
  • Mysql(1)—简介及Windows环境下载安装
    Mysql(1)—简介及Windows环境下载安装一、关于Mysql1.1简介MySQL是一个流行的关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行操作。MySQL由瑞典MySQLAB公司开发,后来被SunMicrosystems收购,最终成为Oracle公司的产品。它是最广泛使用的开源数据库之一,通常用于Web应用......
  • 基于Java+Jsp+Html+MySQL实现的企业仓储管理系统设计与实现(源码+文档+部署视频)
    文章目录1.前言2.详细视频演示3.论文参考4.项目运行截图5.技术框架5.1后端采用SpringBoot框架5.2前端框架Vue6.选题推荐毕设案例8.系统测试8.1系统测试的目的8.2系统功能测试9.代码参考10.为什么选择我?11.获取源码1.前言......
  • MySQL 的索引和事务
    MySQL的索引事务1.索引首先知道两个事情索引是一种特殊的文件,包含对数据表所有记录的指针像目录一个表是可以产生多个索引的关键字是index索引的作用:用于快速定位和检索我们都知道mySQL每次的查询都会遍历一遍这个列利用好索引可以快速的定位检索数据......
  • Java项目:高校心理辅导系统(java+SpringBoot+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍基于Springboot+vue高校心理教育辅导设计与实现本系统分为前后台,包含管理员、学生、教师三种角色,前台为学生、教师登录,后台为管理员、学生、教师分别登录。前台主要功能:首页、心理健康学习、试卷列表、公告通知、留言反馈、......
  • Java项目:母婴商城系统(java+SpringBoot+Mybaits+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍基于Springboot+vue的母婴商城系统本系统分为前后台,包含管理员、用户两种角色,前台为普通用户登录,后台为管理员、用户分别登录。前台主要功能:首页、商品信息、商品资讯、用户登录、用户注册、用户个人中心、我的订单、我的地......
  • Java项目:房产销售系统(java+SpringBoot+Mybaits+Vue+elementui+mysql)
    源码获取:俺的博客首页"资源"里下载! 项目介绍基于Springboot+vue的房产销售系统本系统分为前后台,包含管理员、用户、销售经理三种角色,前台为普通用户登录,后台为管理员、用户、销售经理分别登录。前台主要功能:首页、房源信息、用户登录、用户注册、用户个人中心、我的收......
  • 20241012 mysql查漏补缺
    2024/10/12mysql查漏补缺1.联合索引什么时候会失效[联合索引]遵循最左前缀法则NO1​ 如果索引了多列(联合索引),要遵守最左前缀法则。最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。如果跳跃某一列,索引将会部分失效​ 对于最左前缀法则指的是,查询时,最左边......
  • python3 mysql 连接
    python3mysql连接脚本#-*-coding:utf-8-*-#importMySQLdb,sys,osimportpymysqlasMySQLdb,sys,osimportos,sys,traceback#importMySQLdb.cursors#importmysql.connectordefsingleton(cls):instances={}defget_instance():ifcls......