mysql基础架构图

架构详解

连接器部分
整体功能
  • 建立连接

  • 维持管理连接

  • 校验用户名密码,查询权限

最佳实践
  1. 不要在命令行客户端中明文输入密码

    • -p 中不要使用明文密码
  2. 修改权限,需要重新建立连接后才会生效
    • mysql在建立连接时会读取一次权限,以后都使用这个权限
  3. 查看所有连接命令:show processlist
    • 长连接默认超时时间为8小时,超时后服务端会断开连接
    • 使用这个超时参数:wait_timeout来设置
    • 服务端断开连接后,客户端再次执行请求,会报Lost Connection to mysql server during query。
  4. mysql异常重启(OOM被杀掉)原因之一
    • 客户端建立长连接后,会占用一些内存,直到连接关闭后才释放。如果建立大量连接,可能导致内存飙升
    • 解决方法:
      • 定期断开连接
      • mysql5.7以后版本,支持 mysql_reset_connection命令,可以初始化连接内存,和第一种方法比,不需要重连和校验权限。

查询缓存部分
最佳实践
  1. mysql8.0版本以后已经去掉这个功能了
  2. mysql8.0以前的版本
    • 建议关闭查询缓存功能,把query_cache_type设置为DEMAND
    • 在需要使用缓存的表中,select语句中加入 SQL_CACHE即可
      • select SQL_CACHE * from 表名
  3. 查询结果返回时,会校验权限

分析器部分

分析器部分主要做两件事:

  1. 词法分析:解析关键词,校验表名是否存在,列是否存在等等
  2. 语法分析:判断是否符合mysql的语法规则
最佳实践
  1. 出现语法错误时,会返回you have an error in your SQL syntax错误,这个错误提示第一个出现错误的地方,所以检查紧跟use near后面的语句即可

优化器部分

优化器做两类事:

  1. 选择索引
  2. 确定表关联的顺序

目的都是优化执行性能


执行器部分

执行器先校验是否有权限

如果有权限,按照表定义中的引擎,使用这个引擎提供的接口

如果没有索引:

  1. 调用引擎提供的取表第一行,判断是否符合条件,符合条件加入结果集
  2. 调用引擎提供的下一行接口,继续判断;直到最后一行
  3. 将结果集返回给客户端

如果有索引:

  1. 调用满足条件的第一行接口
  2. 循环取满足条件的下一行接口
最佳实践
  1. 慢查询日志中有一个rows_examined字段,这个字段是在执行器每调用一次引擎接口的时候就加一,但是每调用一次接口,实际在引擎中扫描的行数是不确定的,所以实际扫描行数和这个字段并不完全一致

MySQL基础架构-架构详解的更多相关文章

  1. Dubbo架构设计详解-转

    Dubbo架构设计详解  2013-09-03 21:26:59    Yanjun Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解 ...

  2. [CB]Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束

    Intel 2018架构日详解:新CPU&新GPU齐公布 牙膏时代有望明年结束 北京时间12月12日晚,Intel在圣克拉拉举办了架构日活动.在五个小时的演讲中,Intel揭开了2021年CP ...

  3. (转)总结之:CentOS 6.5 MySQL数据库的基础以及深入详解

    总结之:CentOS 6.5 MySQL数据库的基础以及深入详解 原文:http://tanxw.blog.51cto.com/4309543/1395539 前言 早期MySQL AB公司在2009 ...

  4. Tomcat负载均衡、调优核心应用进阶学习笔记(一):tomcat文件目录、页面、架构组件详解、tomcat运行方式、组件介绍、tomcat管理

    文章目录 tomcat文件目录 bin conf lib logs temp webapps work 页面 架构组件详解 tomcat运行方式 组件介绍 tomcat管理 tomcat文件目录 ➜ ...

  5. mysql学习3:mysql之my.cnf详解

    mysql之my.cnf详解 本文转自:https://www.cnblogs.com/panwenbin-logs/p/8360703.html 以下是 my.cnf 配置文件参数解释: #*** ...

  6. 基础拾遗------redis详解

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  7. MySQL复制相关参数详解

    MySQL复制相关参数详解 作者:尹正杰  版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.复制相关系统变量 1>.server_id 是必须设置在master和每个slave上的唯一标 ...

  8. Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)

    通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...

  9. Python中操作mysql的pymysql模块详解

    Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...

  10. 基础拾遗------webservice详解

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

随机推荐

  1. ICML 2022 | Graph Machine Learning 论文分享

    ICML 2022 | Graph Machine Learning 论文分享 国际机器学习大会(International Conference on Machine Learning,简称ICML ...

  2. [Flink] Flink运行过程中Flink作业运行崩溃,且`TaskManager`报:"Association with remote system [akka.tcp://flink@flink-236429.ns-69020:6123] has failed, address is now gated for [50] ms. Reason: [Disassociated]"

    1 问题描述 一个长期正常运行的FlinkSqlCdcJob(Flink 1.12 . Flink CDC 1.3.0),运行崩溃,且TaskManager的日志(taskmanager.log)报: ...

  3. Java中使用JFreeChart生成甘特图

    引言 甘特图是一种流行的项目管理工具,用于显示项目的进度和任务分配.它通过条形图显示任务的开始和结束时间,使项目经理能够直观地了解项目的整体情况.在Java开发中,JFreeChart是一个强大的开源 ...

  4. 关于经纬度坐标与utm坐标之间的相互转换api

    /* * Author: Sami Salkosuo, sami.salkosuo@fi.ibm.com * * (c) Copyright IBM Corp. 2007 */ package com ...

  5. Redis(3)---Redis事务|主从复制

    Redis事务 Redis 通过 MULTI .EXEC. DISCARD  和 WATCH 四个命令来实现事务功能. MULTI :标记一个事务块的开始. EXEC: 执行所有事务块内的命令. DI ...

  6. excel表格里面数据统计有几个(相同的算1个)

    例如:1 2 3 4 5 6 7 1 2 3 统计出来的结果 是 7个! 相同的算1个. 假设数据在A1:A10区域内,在B1单元格中显示结果,则在B1单元格中输入公式: =SUMPRODUCT(1/ ...

  7. selenium学习-常用方法

    id_#当前元素的ID  tag_name#获取元素标签名的属性  text#获取该元素的文本.  click()#单击(点击)元素  submit()#提交表单  clear()#清除一个文本输入元 ...

  8. 0511-Properties集合

    package A10_IOStream; import java.io.*; import java.util.Properties; import java.util.Set; /* java.u ...

  9. 帮您了解CDN节点如何做到访问加速与安全防护

    本文分享自天翼云开发者社区<帮您了解CDN节点如何做到访问加速与安全防护>,作者:尹****荷 网站业务痛点 在当前网站快速发展的背景下,网站业务突增往往伴随着一系列网络安全隐患.主要会有 ...

  10. 让我们从零开始使用PyTorch构建一个轻量级的词嵌入模型

    图片来源:Phil Hearing(Unsplash) 在我之前写的一篇文章中,我们学习了如何使用PyTorch的nn.Embedding层将单词转换为稠密向量.但由于该嵌入层是未经训练的,这些向量并 ...