MySQL cdc 开启查看 查看mysql执行的sql_sql

连接器

管理现有数据库连接,做权限校验

建立连接的过程是比较复杂的,建议是在使用中要尽量减少建立连接的动作(所以现场有很多连接池技术提供,阿里的、C3P0等等),也就是尽量使用长连接。但是全部使用长连接后,有些时候 MySQL 占用内存涨得特别快,因为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。这些资源会在连接断开的时候才释放。所以如果长连接累积下来,可能导致内存占用太大,被系统强行杀掉(OOM),从现象看就是 MySQL 异常重启了。

查询缓存

为了提升数据库的性能,往往都会想到缓存技术。比如 MyBatis 有着自己的缓存技术。还有现在流行的 Redis 。而 MySQL 也有着自己的缓存,可以把查询过的数据缓存在内存中,以 Key-Value 的方式,key是一个哈希值,是通过查询SQL、当前要查询的数据库、客户端协议版本等,生成的一个哈希值,而value自然就是查询结果。每次查询的时候,在缓存中查找。
但是,不建议使用,因为往往对表的更新,会把该表对应的缓存都进行删除。那么好不容易建立起来的缓存,就没了。并且在 MySQL 8.0 的版本中,已经不在支持查询缓存。

分析器

进行语法解析,判断你输入的这个 SQL 语句是否满足 MySQL 语法。然后生成下面一颗语法树

MySQL cdc 开启查看 查看mysql执行的sql_MySQL_02

优化器

优化实际上是针对语法树进行优化
优化器:任务就是帮你判断一下怎么样执行更快,比如先查Table1再查Table2,还是先查Table2再查Table1呢?判断完如何执行以后,生成执行计划。

执行器

执行器:就是根据执行计划来进行执行查询。我就根据你的指令,逐条调用底层存储引擎,逐步执行。