数据库
首页 > 数据库> > SQL底层执行原理

SQL底层执行原理

作者:互联网

Server层

主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 

Store层

存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB,它从MySQL5.5.5版本开始成为了默认存储引擎。也就是说如果我们在createtable时不指定表的存储引擎类型,默认会给你设置存储引擎为InnoDB。

 连接器

我们知道由于MySQL是开源的,他有非常多种类的客户端:navicat,mysqlfront,jdbc,SQLyog等非常丰富的客户端,这些客户端要向mysql发起通信都必须先跟Server端建立通信连接,而建立连接的工作就是有连接器完成的。

 查询缓存:

每次将查询语句作为key,结果作为value来存储起来,类似于map结构

比较鸡肋,适合于万年不变的数据。

.Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。

.(cache_free blooks:.表示查询缓存中目前还有多少剩余的blocks,如果该值显示较大,则说明查询缓存中的内存碎片过多了,可能在一定的时间进行整理。Ccache_free menory:查询缓存的内存大小,通过这个参数可以很清晰的知道当前系统的查询内存是否够用,是多了,还是不够用,DBA可以根据实际情况做出调整。
.Qcache_hits:表示有多少次命中缓存。我们主要可以通过该值来验证我们的查询缓存的效果。数字越大,缓存效果越理想。
·cache_inserts:表示多少次未命中然后插入,意思是新来的SaL请求在缓存中未找到,不得不执行查询处理,执行查询处理后把结果insert到查询缓存中。这样的情况的次数,次数越多,表示查询缓存应用到的比较少,效果也就不理想。当然系统刚启动后,查询缓存是空的,这很正常。
.Qcache_lowmem_prunes :该参数记录有多少条查询因为内存不足而被移除出查询缓存。通过这个值,用户可以适当的调整缓存大小Qcache_not_cached:表示因为query_cathe_type的设置而没有被缓年的查询数量。
Qcache_queries_in_cache:当前缓存中缓存的查询数量。
. Qcache_total_blocks:当前缓存的block数量。
mysgl8.0已经移除了查询缓存功能
 

标签:存储,缓存,Qcache,查询,引擎,连接器,SQL,原理,底层
来源: https://blog.csdn.net/qq_39440464/article/details/120785946