mysql逻辑结构介绍

 

​    客户端:大多数基于网络的C/S架构都有客户端的角色

    server层:大多数MySQL的核心服务功能都在这一层,包括查询解析,分析,优化,缓存,以及所有的内置函数(日期,时间,数学函数,加密函数等)以及所有跨存储引擎的功能都在这一层实现:存储过程,触发器,视图等

    存储引擎层:负责mysql中数据的存储和提取,和文件系统一样,存储引擎不会解析SQL,而且也不同存储引擎之间不能通信

关于sever层介绍:

    连接器:维持,管理连接,权限验证,建立连接,选择是TCP/SOCKE连接,基本命令和参数

注意点:

  1. 一个用户一旦登陆,即使后台修改他的权限,也不会立即生效,除非断开重连

  2. 可以通过show processlist 查看当前连接的用户

  3. 最大连接时长由wait_timeout控制,默认8小时

  4. 建议定期断开长连接,少使用过多的短连接,如果版本>5.7,执行mysql_reset_connection可以重新初始化连接资源,不要重新做权限验证

1.mysql -u root -p -S /tmp/mysql.sock 2.mysql -uroot -p -h 10.0.0.51 -P 3306 # 远程登录3.mysql -u root -p -e "show database" # 在bash窗口操作数据库,不会进入数据库命令行# 常用参数如下-u  用户-p   密码-S-h  IP地址-P  端口-e   不进入数据库 在shell中执行交互命令(一般用户脚本操作)<    回收数据用的  mysql -u root -p wulinlin < word.sql       (免交互执行sql文件)

    查询缓存

        MySQL数据库拿到查询请求后,会优先查找查询缓存,如果之前执行过这条查询语句,其结果会以k-v格式保存在内存中,k:查询语句,v:查询结果,一旦命中查询缓存,直接返回结果

       但是一般情况下不建议使用查询缓存:

  1. 查询缓存的失效特别频繁,只要表有更新,所有查询缓存全部清空,除非是静态表

  2. mysql8.0版本后直接放弃了查询缓存

  3. 可以将query_cache_type设置成DEMAND,那么默认sql语句是不走查询缓存的

    分析器

        词法分析

            分析SQL语句是多少个字符串和多少个空格组成,需要识别出里面的字符串代表的是什么

        语法分析

            根据语法规则,判断输入的SQL语句是否合法,一般所有的语法错误都是这一层给的提示

    优化器:执行计划生成,索引选择

        创建解析树,对sql进行各种优化,重写查询,表的读取(连接)顺序,以及索引的选择

    执行器:操作引擎,返回结果

    判断是否有执行权限

    根据引擎的定义使用引擎提供的接口,执行SQL语句

那么如果查询一个存在的表,报错是在哪一个环节呢?

select * from T where sname = "微信";报错提示:unkonwn column 'sname' in 'where clause'# 答案:分析器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一根甜苦瓜

祝老板身体棒棒,夜夜笙歌

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值