SQL 执行 底层原理(一)】的更多相关文章

一.SQL Server组成部分 1.关系引擎:主要作用是优化和执行查询.包含三大组件: (1)命令解析器:检查语法和转换查询树. (2)查询执行器:优化查询. (3)查询优化器:负责执行查询. 2.存储引擎:管理所有数据及涉及的IO包含三大组件: (1)事务管理器:通过锁来管理数据及维持事务的ACID属性. (2)数据访问方法:处理对行.索引.页.行版本.空间分配等的I/O请求. (3)缓冲区管理器:管理SQL Server的主要内存消耗组件Buffer Pool. 3.Buffer Pool…
sql语句在面试里面问道的问题: sql的解析的顺序 1.where里面的条件是从右向左扫描解析 2.from里面的大表在前,小表在后,解析的顺序是从右向左解析. 3.left/right/inner join 链接基于hashjoin/loop/merge三种方式构建链接方式(最终翻译成oracle内部的一些函数). 4.存储过程的有点就是sql解析完一次之后,以后就可以恭喜,不需要重新构建sql解析过程(执行计划,类似一个翻译的过程),在开发中我们也可以给予绑定变量,减少sql硬解析的开销.…
1.一条查询SQL执行流程图 2.查询SQL执行流程之发送SQL请求 (1)客户端按照Mysql通信协议将SQL发送到服务端,SQL到达服务端后,服务端会单起一个线程执行SQL. (2)执行时Mysql首先判断SQL的前6个字符是否为select.并且语句中是否带有SQL_NO_CACHE关键字,如果没有则进入查询缓存. 3.查询SQL执行流程之查询缓存 查询缓存说白了就是一个哈希表,将执行过的语句及其结果以键值对的格式缓存到内存中.其中key是一个哈希值,由查询SQL.当前要查询的数据库.客户…
一条查询SQL执行流程图如下 序章 自我介绍 我是一条sql,就是一条长长的字符串,不要问我长什么样,因为我比较傲娇. 额~~不是我不说啊,因为细说起来,我可以细分为DML(Update.Insert.Delete),DDL(表结构修改),DCL(权限操作),DQL(Select)操作,一个个去介绍,我怕大家嫌我烦! 嗯,大家没什么意见,我继续往下自我介绍了~ 由于种类太多,这里我只是一条查询SQL,也就是一句DQL. 客户端按照Mysql通信协议,把我发送到服务端. 当我到达服务端后,我会在一…
本系列[T-SQL]主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式-上篇 [T-SQL基础]04.表表达式-下篇 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL基础]07.数据修改 [T-SQL基础]08.事务和并发 [T-SQL基础]09.可编程对象 ---------------------------------…
阅读目录 一.SQL Server组成部分 二.查询的底层原理 本系列[T-SQL]主要是针对T-SQL的总结. T-SQL基础 [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础]02.联接查询 [T-SQL基础]03.子查询 [T-SQL基础]04.表表达式-上篇 [T-SQL基础]04.表表达式-下篇 [T-SQL基础]05.集合运算 [T-SQL基础]06.透视.逆透视.分组集 [T-SQL基础]07.数据修改 [T-SQL基础]08.事务和并发 [T-SQL基础]09…
介绍 left join的实现效果就是保留左表的全部信息,将右表往左表上拼接,如果拼不上则为NULL. 除了left join以外,还有inner join.outer join.right join等,文章不介绍其他连接的具体效果,主要讲解join的底层原理是如何实现的?具体效果是怎样呈现的? 只有懂得了底层原理,才能更好的写出性能优越的SQL脚本,提高SQL的执行速度. join主要有3种方式,具体为: Nested Loop -- 嵌套循环,细分为以下3种连接方式: Simple Nest…
不懂hive中的explain,说明hive还没入门,学会explain,能够给我们工作中使用hive带来极大的便利! 理论 本节将介绍 explain 的用法及参数介绍 HIVE提供了EXPLAIN命令来展示一个查询的执行计划,这个执行计划对于我们了解底层原理,hive 调优,排查数据倾斜等很有帮助 使用语法如下: EXPLAIN [EXTENDED|CBO|AST|DEPENDENCY|AUTHORIZATION|LOCKS|VECTORIZATION|ANALYZE] query expl…
一 普通sql执行的具体过程1 连接器  管理连接,权限验证2 分析器  词法分析,语法分析   比如 数据表和数据列是否存在, 别名是否有歧义,是否符合标准sql语法等3 优化器检测   执行计划生成,索引选择4 执行器   1 判断是否拥有操作权限->这里包含更为复杂的权限验证,比如触发器,存储过程等   2 执行sql,返回结果集到客户端5 存储引擎层  存储引擎层提供和server端进行交互的读写接口,存储真正的数据注意   1 本文不考虑查询缓存的情况,因为现在线上数据库都建议关闭查询…
sqlSession简单介绍 拿到SqlSessionFactory对象后,会调用SqlSessionFactory的openSesison方法,这个方法会创建一个Sql执行器(Executor),这个Sql执行器会代理你配置的拦截器方法. 获得上面的Sql执行器后,会创建一个SqlSession(默认使用DefaultSqlSession),这个SqlSession中也包含了Configration对象,所以通过SqlSession也能拿到全局配置: 获得SqlSession对象后就能执行各种…