学会用数据库的方式思考SQL是如何执行的

标签: 数据库 思考 sql | 发表时间:2019-07-03 00:49 | 作者:陈旸
出处:https://www.infoq.cn

虽然SQL是声明式语言,我们可以像使用英语一样使用它,不过在RDBMS(关系型数据库管理系统)中,SQL的实现方式还是有差别的。今天我们就从数据库的角度来思考一下SQL是如何被执行的。

关于今天的内容,你会从以下几个方面进行学习:

  1. Oracle中的SQL是如何执行的,什么是硬解析和软解析;
  2. MySQL中的SQL是如何执行的,MySQL的体系结构又是怎样的;
  3. 什么是存储引擎,MySQL的存储引擎都有哪些?

Oracle中的SQL是如何执行的

我们先来看下SQL在Oracle中的执行过程:

从上面这张图中可以看出,SQL语句在Oracle中经历了以下的几个步骤。

  1. 语法检查:检查SQL拼写是否正确,如果不正确,Oracle会报语法错误。

  2. 语义检查:检查SQL中的访问对象是否存在。比如我们在写SELECT语句的时候,列名写错了,系统就会提示错误。语法检查和语义检查的作用是保证SQL语句没有错误。

  3. 权限检查:看用户是否具备访问该数据的权限。

  4. 共享池检查:共享池(Shared Pool)是一块内存池,最主要的作用是缓存SQL语句和该语句的执行计划。Oracle通过检查共享池是否存在SQL语句的执行计划,来判断进行软解析,还是硬解析。那软解析和硬解析又该怎么理解呢?

相关 [数据库 思考 sql] 推荐:

学会用数据库的方式思考SQL是如何执行的

- - InfoQ - 促进软件开发领域知识与创新的传播
虽然SQL是声明式语言,我们可以像使用英语一样使用它,不过在RDBMS(关系型数据库管理系统)中,SQL的实现方式还是有差别的. 今天我们就从数据库的角度来思考一下SQL是如何被执行的. 关于今天的内容,你会从以下几个方面进行学习:. Oracle中的SQL是如何执行的,什么是硬解析和软解析;. MySQL中的SQL是如何执行的,MySQL的体系结构又是怎样的;.

Google Cloud SQL 云端数据库开测

- xcv58 - 谷奥——探寻谷歌的奥秘
很多Google App Engine用户都想要一个简单而传统的数据驱动应用,于是今天Google宣布开放测试Google Cloud SQL. 这是一个接近传统数据库的云端服务,并可与App Engine整合:. 不需要管理员和维护,Google会帮你搞定一切. 高可靠性和可用性,你的数据会在多个数据中心之间同步,即便一个出问题也不会影响使用.

SQL Server 数据库巡检脚本

- - CSDN博客数据库推荐文章
select '现在没有阻塞和死锁信息' as message. select '引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + '进程号,其执行的SQL语法如下'. select '进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ '被' + '进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其当前进程执行的SQL语法如下'.

Vertica数据库sql操作备忘

- - 阿辉的空间
删除主键(Vertica数据库的主键值并不是唯一的):. 类别: Database  查看评论.

用SQL语言管理Oracle数据库

- - CSDN博客推荐文章
1,查看数据库的基本属性:. SELECT dbid 数据库编号,name 数据库名称,db_unique_name 全局名称,created 创建时间,log_mode 归档方式,open_mode 访问方式,platform_name 版本类型 FROM v$database;. 2,查看所有数据库对象的类别和大小:.

SQL监控:mysql及mssql数据库SQL执行过程监控审计

- - Seay's blog 网络安全博客
   最近生活有很大的一个变动,所以博客也搁置了很长一段时间没写,好像写博客已经成了习惯,搁置一段时间就有那么点危机感,心里总觉得不自在. 所以从今天起还是要继续拾起墨笔(键盘),继续好好维护这个博客,写出心里最真实的想法,写出平时接触到的一些人和事以及一些新的技术. 当然写博客也不是单纯的为了记录,也想通过博客来结交更多的朋友,今天在公司图书馆看到一句话大致说的是“在今天这个年代,已经很难等到三顾茅庐,诸葛亮也需要博客、微博和影响力”,在一年前就曾想过写一篇关于怎样通过博客来提高个人影响力的文章,我会尽快在这个月抽时间写出来,另外最近也看了几本书,过些时候给大家推荐.

对数据库架构的再思考

- - 人月神话的BLOG
前面在谈PaaS的时候曾经谈到过共享数据库,私有数据库的问题,在这里再谈谈在多业务系统建设过程中的数据架构模式问题. 首先来看下传统的数据交换解决方案如下图:. 业务场景为单独构建的四个业务系统,在四个业务系统中SID数据为需要跨四个应用交互和共享的数据. 传统的做法则是对四个应用存在的SID库数据进行数据集成和交换,则后续的每一个业务系统中都有全部的共享基础数据,任何一个应用的SID库数据需要通过数据交换和集成同步四份.

Google推出云端数据库:Google Cloud SQL

- Johnny - 36氪
昨天Oracle推出了数据库即服务和Java平台即服务,现在处于开发者预览阶段,今天,Google在博客中宣布,推出自己的基于MySQL的云端数据库:Google Cloud SQL. 目前只支持Google App Engine. 下面是Google在博客中提到的一些功能:. 不需要维护和管理 – 我们帮你管理数据库.

MySQL 数据库性能优化之SQL优化

- - OurMySQL
注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. IO永远是数据库最容易瓶颈的地方,这是由数据库的职责所决定的,大部分数据库操作中超过90%的时间都是 IO 操作所占用的,减少 IO 次数是. SQL 优化中需要第一优先考虑,当然,也是收效最明显的优化手段.