MySQL基础架构-架构详解
mysql基础架构图

架构详解
连接器部分
整体功能
建立连接
维持管理连接
校验用户名密码,查询权限
最佳实践
- 不要在命令行客户端中明文输入密码
- -p 中不要使用明文密码
- 修改权限,需要重新建立连接后才会生效
- mysql在建立连接时会读取一次权限,以后都使用这个权限
- 查看所有连接命令:show processlist
- 长连接默认超时时间为8小时,超时后服务端会断开连接
- 使用这个超时参数:wait_timeout来设置
- 服务端断开连接后,客户端再次执行请求,会报Lost Connection to mysql server during query。
- mysql异常重启(OOM被杀掉)原因之一
- 客户端建立长连接后,会占用一些内存,直到连接关闭后才释放。如果建立大量连接,可能导致内存飙升
- 解决方法:
- 定期断开连接
- mysql5.7以后版本,支持 mysql_reset_connection命令,可以初始化连接内存,和第一种方法比,不需要重连和校验权限。
查询缓存部分
最佳实践
- mysql8.0版本以后已经去掉这个功能了
- mysql8.0以前的版本
- 建议关闭查询缓存功能,把query_cache_type设置为DEMAND
- 在需要使用缓存的表中,select语句中加入 SQL_CACHE即可
- select SQL_CACHE * from 表名
- 查询结果返回时,会校验权限
分析器部分
分析器部分主要做两件事:
- 词法分析:解析关键词,校验表名是否存在,列是否存在等等
- 语法分析:判断是否符合mysql的语法规则
最佳实践
- 出现语法错误时,会返回you have an error in your SQL syntax错误,这个错误提示第一个出现错误的地方,所以检查紧跟use near后面的语句即可
优化器部分
优化器做两类事:
- 选择索引
- 确定表关联的顺序
目的都是优化执行性能
执行器部分
执行器先校验是否有权限
如果有权限,按照表定义中的引擎,使用这个引擎提供的接口
如果没有索引:
- 调用引擎提供的取表第一行,判断是否符合条件,符合条件加入结果集
- 调用引擎提供的下一行接口,继续判断;直到最后一行
- 将结果集返回给客户端
如果有索引:
- 调用满足条件的第一行接口
- 循环取满足条件的下一行接口
最佳实践
- 慢查询日志中有一个rows_examined字段,这个字段是在执行器每调用一次引擎接口的时候就加一,但是每调用一次接口,实际在引擎中扫描的行数是不确定的,所以实际扫描行数和这个字段并不完全一致
MySQL基础架构-架构详解的更多相关文章
- Dubbo架构设计详解-转
Dubbo架构设计详解 2013-09-03 21:26:59 Yanjun Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解 ...
- [CB]Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束
Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束 北京时间12月12日晚,Intel在圣克拉拉举办了架构日活动.在五个小时的演讲中,Intel揭开了2021年CP ...
- (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解
总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...
- Tomcat负载均衡、调优核心应用进阶学习笔记(一):tomcat文件目录、页面、架构组件详解、tomcat运行方式、组件介绍、tomcat管理
文章目录 tomcat文件目录 bin conf lib logs temp webapps work 页面 架构组件详解 tomcat运行方式 组件介绍 tomcat管理 tomcat文件目录 ➜ ...
- mysql学习3:mysql之my.cnf详解
mysql之my.cnf详解 本文转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html 以下是 my.cnf 配置文件参数解释: #*** ...
- 基础拾遗------redis详解
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
- MySQL复制相关参数详解
MySQL复制相关参数详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.复制相关系统变量 1>.server_id 是必须设置在master和每个slave上的唯一标 ...
- Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)
通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- 基础拾遗------webservice详解
基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...
随机推荐
- 给DevOps加点料:融入安全性的DevSecOps
从前,安全防护只是特定团队的责任,在开发的最后阶段才会介入.当开发周期长达数月.甚至数年时,这样做没什么问题:但是现在,这种做法现在已经行不通了.采用 DevOps 可以有效推进快速频繁的开发周期(有 ...
- Redis学习笔记之spring-data-redis
一.关于spring-data-redis spring-data-redis针对jedis提供了如下功能: 连接池自动管理,提供了一个高度封装的"RedisTemplate"类 ...
- C# Winform cilent call SignalR
一.SignalR是什么 Asp.net SignalR是微软为实现实时通信的一个类库.一般情况下,SignalR会使用JavaScript的长轮询(long polling)的方式来实现客户端和服务 ...
- biancheng-Redis教程
目录http://c.biancheng.net/redis/ 1Redis是什么2Windows下载安装Redis3Ubuntu下载安装Redis4Redis配置文件5Redis数据类型6Redis ...
- Shenzi pg walkthrough Intermediate window
nmap └─# nmap -p- -A -sS -T5 192.168.218.55 Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-12-16 ...
- nacos(二):原生java调用配置与服务实例
本文主要介绍原生java连接nacos,操作nacos的共享配置与服务实例. 1.引入依赖 <dependencies> <dependency> <groupId> ...
- Luogu P11280 GFOI Round 2 Jom & Terry 题解 [ 黄 ] [ BFS ]
Jom & Terry:讲个笑话,我赛时被诈骗了. 思路 先放结论:如果 Terry 到终点的距离小于等于 Jom 到终点的距离,那么 Terry 一定不会被抓. 为啥呢,因为不管 Jom 堵 ...
- Asp.Net Core3.0 微信退款
参考文档: 微信支付申请退款API文档:https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_8_11.shtml (最新更新时间:2022 ...
- DeepSeek普照的阳光下,继续RAG还是Distillation?
什么是RAG RAG概述 RAG,全称为Retrieval-Augmented Generation(检索增强生成),是一种结合了信息检索和文本生成的人工智能技术.简单来说,RAG通过从大量文档或数据 ...
- 理解ID3决策树
决策树是一个树形结构,类似下面这样: 上图除了根节点外,有三个叶子节点和一个非叶子节点. 在解决分类问题的决策树中,叶子节点就表示所有的分类,比如这里的分类就有3种:无聊时阅读的邮件.需及时处理的邮件 ...