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

数据库的内置函数,存储过程,视图,触发器都在server层

连接器:连接之后如果没有后续操作就属于一个空闲连接,数据库权限也在这里。

如果连接之后很长时间没有后续操作,就会断开连接,如果这时去查询就会抛出异常,长连接就是一直使用这个连接,短连接就是执行了几次查询就会断开连接。

所以建议使用长连接,但是长连接有非常占用内存,比如一个很大的查询。如果内存积压就会内存溢出,mysql自动重启

一:定期断开连接,从新连接,尤其是对于大的查询

二:mysql 5.7可以设置mysql_reset_connection ,这回重新初始化连接资源,但是不会从新权限验证,只是回到连接的初始状态

查询缓存:先去缓存中找没有没执行过,有就返回,没有就执行,然后加入缓存,但是每一次对表的更新操作都会清空缓存,所以不建议使用缓存。

分析器:词法分析,语法分析

优化器:索引的选择

执行器:取符合条件的第一行,然后往后执行,直到取出所有符合条件的行,当使用索引的时候也一样

慢查询日志中的一个row_examined看出扫描了多少行

猜你喜欢

转载自www.cnblogs.com/hanguocai/p/10029394.html