一条sql查询语句是如何执行的

如图所示

select * from table where ID=1这条sql在数据库中如何执行

在这里插入图片描述

mysql的基本架构图

在这里插入图片描述
大体上Mysql可以分为Server层和存储引擎层两部分
存储引擎层负责数据的存取,其架构模式是插件式的,支持InniDB,MylSAM,Memory等多个存储引擎,它从Mysql 5.5.5版本开始成为了默认存储引擎。
在执行create table创建表的时候,如果不指定引擎类型 默认的是使用InnoDB.要切换不同的存储引擎可以用engine=Memory 这里不同的存储引擎表数据的存储结构也是不一样的

连接器

第一步你会先来连接到这个数据库上,这时候接待你的就是连接器 连接命令:

mysql -h$ip -P$port -u$user -p

ip+端口号+用户名+密码
这里密码可以跟在-p的后面 这里需要注意的是来连接生产服务器的时候一定不要跟在-p的后面
连接命令中的mysql是客户端工具,用来跟服务端建立连接。在完成经典的TCP握手后,连接器就要开始认证你的身份,这时候用的就是你输入的用户名和密码

  • 如果用户名和密码不对,你就会收到一个”Access denied for user “的错误然后客户端结束执行

  • 如果用户名和密码认证通过,连接器会到权限表里查出你拥有的权限
    连接完成后,如果你没有后续动作,这个连接就处于空闲状态 可以用

    show processlist
    在这里插入图片描述
    其中的Command列显示为”sleep“的这一行就表示系统里面有一个空闲连接
    客户端如果太长时间没动静,连接器就会自动断开连接。这是时间的参数是由wait_timeout控制的默认值是8
    如果连接中断,客户端再次发送请求,就会收到一个错误的提醒:Lost connection
    to Mysql server during query 这时候如果想继续,就需要重连,然后执行请求。
    长连接:客户端持续有请求
    短链接:每次执行完很少的几次就断开来连接

    连接的过程通常是比较复杂的,建议尽量减少建立连接的动作,也就是尽量使用长连接
    但是这里要注意一个问题 全部使用长连接之后内存会占用的非常快。

猜你喜欢

转载自blog.csdn.net/OnlyoneFrist/article/details/89503963