首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Sql语句在Mysql中的执行流程

分析器: 没有命中缓存的话,SQL 语句就会经过分析器,分析器说白了就是要先看你的 SQL 语句要干嘛,再检查你的 SQL 语句语法是否正确。   ...连接建立后,执行查询语句的时候,会先查询缓存,MySQL 会先校验这个 sql 是否执行过,以 Key-Value 的形式缓存在内存中,Key 是查询预计,Value 是结果集。...当然在真正执行缓存查询的时候还是会校验用户的权限,是否有该表的查询条件。             ...MySQL 查询不建议使用缓存,因为查询缓存失效在实际业务场景中可能会非常频繁,假如你对一个表更新的话,这个表上的所有的查询缓存都会被清空。...对于不经常更新的数据来说,使用缓存还是可以的。             所以,一般在大多数情况下我们都是不推荐去使用查询缓存的。

4.7K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【DB笔试面试575】在Oracle中,SQL语句的执行过程有哪些?

    ♣ 题目部分 在Oracle中,SQL语句的执行过程有哪些? ♣ 答案部分 Oracle数据库里SQL语句的执行过程可以如下图所示: ?...如果目标SQL能通过上述检查,那么接下来Oracle就会去SGA的共享池中的库缓存(Library Cache)中查找是否存在匹配的共享游标(Shared Cursor)。...在查询转换过程中,Oracle会根据一些规则来决定是否对目标SQL执行查询转换,这些规则在Oracle不同的版本里不尽相同。...只有当等价改写后SQL的成本值小于未经过查询转换的原始SQL的成本值时,Oracle才会对目标SQL执行查询转换。在执行完查询转换后,原目标SQL可能就被Oracle改写了,当然也有可能没有改写。...(5)在得到了目标SQL的执行计划后,接下来Oracle就会根据执行计划去实际执行该SQL,并将执行结果返回给用户。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

    1.4K10

    PostgreSQL查询当前执行中SQL的执行计划——pg_show_plans

    但是explain查询当前缓存的执行计划,在实际中估算的成本可能是不准确的,因为很可能估算的成本和实际运行的成本不一致。...pg_show_plans模块 接下来的主题则是一个供PostgreSQL数据库查询正在进行的SQL执行计划的模块——pg_show_plans,它可以动态查找当前正在进行的SQL执行计划。...pg_show_plans是一个显示当前运行的所有SQL语句执行计划的模块。它在plan结束位置,截获并存储当前plan tree,从而使其他会话可以打印存储plan tree。.../pg_show_plans--1.0.sql '/opt/pg12/share/postgresql/extension/' 4.在postgresql.conf文件的shared_preload_libraries...一个session执行一条较慢SQL(便于获取到其执行计划) 一个session在SQL执行过程获取其执行计划 2.这里我举例的SQL为对一张346MB的表的全表扫描。

    2.9K40

    SQL语句在MySQL中是如何执行的

    mysql> select * from T where ID=10; 开门见山,当我们输入一条 SQL 语句的时候,MySQL 内部究竟执行了什么?...修改完成后,只有再重新建立的连接才会使用到新的权限设置。 建立连接的过程通常是比较复杂的,所以我建议你在使用中要尽量减少建立连接的动作,也就是尽量使用长连接。...如果缓存 key 被命中,就会直接返回给客户端,如果没有命中,就会执行后续的操作,完成后也会把结果缓存起来,方便下一次调用。当然在真正执行缓存查询的时候还是会校验用户的权限,是否有该表的查询条件。...优化器 经过了分析器分析,MySQL 知道你要干啥了,在开始执行之前,还要先经过优化器的处理。...InnoDB 引擎把数据保存在内存中,同时记录 redo log,此时 redo log 进入 prepare 状态,然后告诉执行器,执行完成了,随时可以提交。

    4.4K20

    【DB笔试面试806】在Oracle中,如何查找未使用绑定变量的SQL语句?

    ♣ 题目部分 在Oracle中,如何查找未使用绑定变量的SQL语句?...⊙ 【DB笔试面试586】在Oracle中,什么是自适应游标共享(4)?⊙ 【DB笔试面试586】在Oracle中,什么是自适应游标共享(3)?...⊙ 【DB笔试面试586】在Oracle中,什么是自适应游标共享(2)?⊙ 【DB笔试面试586】在Oracle中,什么是自适应游标共享(1)?...⊙ 【DB笔试面试585】在Oracle中,什么是常规游标共享?⊙ 【DB笔试面试584】在Oracle中,如何得到已执行的目标SQL中的绑定变量的值?...⊙ 【DB笔试面试583】在Oracle中,什么是绑定变量分级?⊙ 【DB笔试面试582】在Oracle中,什么是绑定变量窥探(下)?

    6.4K20

    【DB笔试面试600】在Oracle中,如何获取SQL历史执行计划?

    ♣ 题目部分 在Oracle中,如何获取SQL历史执行计划?...♣ 答案部分 历史执行计划只能从AWR中获取,如果AWR没有记录的话,那么就无法获取历史执行计划了,获取历史执行计划的命令如下所示: SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR...,单机环境为1,RAC环境填写具体的实例号,L_BID为开始的快照号,L_EID为结束的快照号,L_SQLID为要查看SQL的SQL_ID。...下面的例子可以直接从AWR中获取SQL_ID为“bsa0wjtftg3uw”的执行计划,可以看到历史有2种执行计划,一个是全表扫描,一个是索引范围扫描: SYS@RAC2LHR1> SELECT * FROM...本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

    1.2K20

    【DB笔试面试603】在Oracle中,固定SQL执行计划的方法有哪些?

    ♣ 题目部分 在Oracle中,固定SQL执行计划的方法有哪些?...♣ 答案部分 在实际项目中,通常在开发环境下,一些SQL执行没有任何功能问题,而当到了生产环境或生产环境的数据量发生较大的变量时,其SQL的执行效率非常低。...此时如果更改SQL,那么可能需要重新修改源程序以及重新编译程序。如果修改源程序的成本比较大,那么可以使用一些方法在不改变源应用程序的情况下更改特定SQL的执行计划并固定下来。...因为在SQL语句的执行计划发生更改时,可能存在性能风险。SQL计划发生更改的原因有很多,如优化程序版本、优化程序统计信息、优化程序参数、方案定义、系统设计和SQL概要文件创建等。...有4种方式可以固定和控制执行计划,分别是使用Hint(提示)、OUTLINE(存储概要)、SQL PROFILE(SQL概要文件)和SPM(SQL Plan Management,SQL计划管理),如下表所示

    74220

    【DB笔试面试605】在Oracle中,SQL概要(SQL Profile)的作用是什么?

    ♣ 题目部分 在Oracle中,SQL概要(SQL Profile)的作用是什么?...♣ 答案部分 SQL Profile就是为某条SQL语句提供除了系统统计信息、对象(表和索引等)统计信息之外的其它信息,比如运行环境、额外的更准确的统计信息,以帮助优化器为SQL语句选择更适合的执行计划...使用SQL Profile的两个目的:①锁定或者说是稳定执行计划。②在不能修改应用中的SQL的情况下使SQL语句按指定的执行计划运行。...SQL Profile最大的优点是在不修改SQL语句和会话执行环境的情况下去优化SQL的执行效率,适合无法在应用程序中修改SQL时。...('FULL(t1@SEL$1)')是这里的格式如何写,在Mos上的文章note 215187.1中的sqlt.zip的目录utl中提供了脚本coe_xfr_sql_profile.sql可以生成这些信息

    96410

    【DB笔试面试584】在Oracle中,如何得到已执行的目标SQL中的绑定变量的值?

    ♣ 题目部分 在Oracle中,如何得到已执行的目标SQL中的绑定变量的值?...♣ 答案部分 当Oracle解析和执行含有绑定变量的目标SQL时,如果满足如下两个条件之一,那么该SQL中的绑定变量的具体输入值就会被Oracle捕获: l 当含有绑定变量的目标SQL以硬解析的方式被执行时...l 当含有绑定变量的目标SQL以软解析或软软解析的方式重复执行时,Oracle在默认情况下至少得间隔15分钟才会捕获一次。...,Oracle只会捕获那些位于目标SQL的WHERE条件中的绑定变量的具体输入值,而对于那些使用了绑定变量的INSERT语句,不管该INSERT语句是否是以硬解析的方式执行,Oracle始终不会捕获INSERT...并捕捉跟踪文件中的绑定变量。

    3K40

    一条SQL语句在MySQL中如何执行的

    来源:JavaGuide | 作者:木木匠 本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。...一 MySQL 基础架构分析 1.1 MySQL 基本架构概览 下图是 MySQL 的一个简要架构图,从下图你可以很清晰的看到用户的 SQL 语句在 MySQL 内部是如何执行的。...连接建立后,执行查询语句的时候,会先查询缓存,MySQL 会先校验这个 sql 是否执行过,以 Key-Value 的形式缓存在内存中,Key 是查询预计,Value 是结果集。...: 先检查该语句是否有权限,如果没有权限,直接返回错误信息,如果有权限,在 MySQL8.0 版本以前,会先查询缓存,以这条 sql 语句为 key 在内存中查询是否有结果,如果有直接缓存,如果没有,执行下一步...接下来就是优化器进行确定执行方案,上面的 sql 语句,可以有两种执行方案: a.先查询学生表中姓名为“张三”的学生,然后判断是否年龄是 18。

    3.5K20

    一条SQL语句在MySQL中是如何执行的

    来源:http://t.cn/E6U9Z9T ---- 概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的。...查询缓存 连接建立后,执行查询语句的时候,会先查询缓存,Mysql会先校验这个sql是否执行过,以Key-Value的形式缓存在内存中,Key是查询预计,Value是结果集。...二、语句分析 2.1 查询语句 说了以上这么多,那么究竟一条sql语句是如何执行的呢?其实我们的sql可以分为2中,一种是查询,一种是更新(增加,更新,删除)。...: 先检查该语句是否有权限,如果没有权限,直接返回错误信息,如果有权限,在mysql8.0版本以前,会先查询缓存,以这条sql语句为key在内存中查询是否有结果,如果有直接缓存,如果没有,执行下一步。...接下来就是优化器进行确定执行方案,上面的sql语句,可以有两种执行方案: a.先查询学生表中姓名为“张三”的学生,然后判断是否年龄是18。

    2K20

    一条查询SQL在MySQL中是怎么执行的

    平时我们使用的数据库,看到的通常是一个整体,比如我们执行一条查询SQL,返回一个结果集,却不知道这条语句在MySQL内部是如何执行的,接下来我们就来简单的拆解一下MySQL,看看MySQL是由哪些“零件...这样在我们以后遇到MySQL的一些异常或者问题的时候,就可以快速定位问题并解决问题。 下边通过一张图来看一下SQL的执行流程,从中可以清楚的看到SQL语句在MySQL的各个功能模块中执行的过程。 ?...当我们全部使用长连接后,会发现有时候MySQL专用内存涨的特别快,这是因为MySQL在执行过程中临时使用的内存是管理在连接对象里面的,这些资源会在连接断开的时候才释放,所以长时间使用长连接累计下来,可能导致内存占用太大...如果查询语句在缓存中可以查到这个key,就直接把结果返回给客户端。如果语句不在缓存中,就会继续执行后边的阶段。执行完成后,将执行结果存入缓存中。...在数据库的慢查询日志中可以看到一个rows_examined的字段,表示这个语句执行过程中扫描了多少行,这个值是在执行器每次调用引擎的时候累加的,有时候执行器调用一次,在引擎内部扫描了多行,隐藏引擎扫描行数跟

    4.8K20

    让docker中的mysql启动时自动执行sql文件

    本文提要 本文目的不仅仅是创建一个MySQL的镜像,而是在其基础上再实现启动过程中自动导入数据及数据库用户的权限设置,并且在新创建出来的容器里自动启动MySQL服务接受外部连接,主要是通过Dockerfile...搭建步骤 1、首先创建Dckerfile: FROM mysql:5.7 #设置免密登录 ENV MYSQL_ALLOW_EMPTY_PASSWORD yes #将所需文件放到容器中 COPY setup.sh.../mysql/setup.sh COPY schema.sql /mysql/schema.sql COPY privileges.sql /mysql/privileges.sql #设置容器启动时执行的命令...表示当前目录,即Dockerfile文件所在的目录,创建过程如下: ? 执行docker images查看该镜像是否存在于镜像列表中: ? 创建成功。...验证结果 1、通过进入容器在命令行验证 启动时容器的id为9db491b1d760,因此执行exec命令进入容器: docker exec -it 9db491b1d760 /bin/bash 这个命令不要直接使用

    4.3K70

    【DB笔试面试569】在Oracle中,SQL如何优化?SQL优化的关注点有哪些?

    ♣ 题目部分 在Oracle中,SQL如何优化?SQL优化的关注点有哪些? ♣ 答案部分 随着数据库中数据量的增长,系统的响应速度就成为目前系统需要解决的最主要的问题之一。...对于一个系统不是简单地能实现其功能就可以了,而是要写出高质量的SQL语句,提高系统的可用性。 在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。...排序字段有正确的索引,驱动表的限制条件有索引,被驱动表的连接条件有索引。 (2)相关的统计信息缺失或者不准确。查看SQL的执行计划是不是最优,然后结合统计信息查看执行计划是否正确。...(13)在创建表的时候,应尽量建立主键,可以根据实际需要调整数据表的PCTFREE参数。 SQL优化的一般性原则如下所示: l 目标: 减少服务器的资源消耗(主要是磁盘I/O)。...l 编码方面: 参考【1.2.5.2 SQL优化在写法上有哪些常用的方法?】。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

    1K20
    领券