一条SQL语句内部执行流程是怎样的?
1 select * from user where id=1;
1.客户端发送SQL语句到服务器,先要通过连接器连接到数据库,在完成TCP握手之后,验证用户名和密码。验证通过之后,首先要去查询缓存查询是否有此SQL对应的数据,如果你之前执行过该SQL语句,语句和结果会通过key-value的形式保存在内存中。key是语句,value是结果。
2.如果查询缓存中没有SQL对应的数据,就会进入解析器。
3.服务器通过解析器会对SQL语句进行词法、语法分析。比如关键字有没有拼写错误,语法有没有错误。
4.解析完之后,服务器就会通过优化器会对SQL语句进行默认优化,然后生成一个执行计划。
5.服务器将执行计划交给执行器,执行器首先判断该表是否有执行查询的权限,没有则返回权限错误,如果有,执行器会根据执行计划,调用存储引擎执行SQL查询逻辑。
6.最后将查询结果存储到查询缓存中,然后再返回给客户端。
1)如何查看MySQL中的最大连接数?
1 show variables like '%max_connections%';
2)如何设置MySQL的最大连接数?
1 set global max_connections=200;
3)如何查询MySQL是否开启了查询缓存?(MySQL8.0默认关闭了查询缓存)
1 show variables like '%query_cache%';
注:如果想要开启/关闭缓存,需要修改MySQL的my.ini配置文件。
标签:语句,说一说,FAQ,查询,缓存,SQL,MySQL,执行 From: https://www.cnblogs.com/yangcrazy/p/16989276.html