首页 > 其他分享 >事务基础知识与执行计划

事务基础知识与执行计划

时间:2023-02-18 13:03:55浏览次数:36  
标签:语句 事务 数据库 基础知识 计划 SQL 执行


事务基础知识

  • 数据库事务的概念
  1. 数据库事务是什么?
  1. 事务是一组原子性的SQL操作。
  2. 事务由事务开始与事务结束之间执行的全部数据库操作组成。
  3. A(原子性)、(C一致性)、I(隔离性)、D(持久性)
  • 事务处理语句的使用

1、使用ROLLBACK回滚事务(BEGIN+ROLLBACK)

事务基础知识与执行计划_SQL

注意:也可以利用退出程序(\q)结束事务

  1. 十五保存点使用(SAVEPOINT+ROLLBACK)

创建并回滚到保存点

事务基础知识与执行计划_国产数据库_02

删除保存点

事务基础知识与执行计划_国产数据库_03

小结

  1. 如何控制事务自动提交?
  1. KES中默认开启了自动提交

事务基础知识与执行计划_SQL_04

注意:显示on,请注意在KES中不允许全局性地修改AUTOCOMMIT的值。

  1. 在会话中关闭自动提交

事务基础知识与执行计划_事务_05

  1. 什么是隐式事务?
  1. 在AUTOCOMMIT=ON的情况下,每条SQL(增删改查)是一个自动提交的事物,这种事务又称为隐式事务。
  1. 什么是显示事务?
  1. 显示事务指不会自动结束的事务,这种事务一般需要用户手动控制来结束事务。
  1. 什么是单机事务?什么是分布式事务?
  1. 单机事务:指的是一个事务的所有的操作都分布同一个数据库实例上。
  2. 分布式事务:指事务参与者、事务协调者、支持事务的服务器不在同一节点上。
  1. KES支持只读事务吗?

开启只读事务

事务基础知识与执行计划_事务_06

注意:不能在一个被设置为只读模式的事物中执行DML、DDL、DCL操作。


执行计划

  • SQL语句的执行计划
  1. 执行计划概述

(1)执行计划(Execution Plan)描述SQL语句在数据库中的执行过程,常用于SQL 性能分析。

(2)它是数据库查询优化器选择出来的执行语句的方案。
(3)它依赖于准确的数据库统计信息,包含系统统计信息和对象统计信息。
(4)KES使用的是基于代价(COST)的执行计划,它是优化器对于该语句要运行多久的预估。(5)执行计划会显示启动代价和总代价,对于大部分查询来讲总代价是最需要被关注的。
 

2、执行计划三要素

访问路径、连接顺序、连接方式

事务基础知识与执行计划_事务_07

二、查询执行计划

1、使用命令执行计划查看方式

事务基础知识与执行计划_SQL_08

变量解释

事务基础知识与执行计划_事务_09

  1. 实际执行语句
  1. 查看预估执行计划,并实际执行sql

事务基础知识与执行计划_事务_10

EXPLAIN (analyze true) 可以简写为EXPLAIN analyze。

变量解释:

  1. analyze选项表示系统会实际执行该语句
  2. actual time 表示当前节点单次实际的启动时间和执行时间, 当前节点总体执行时间需要乘以loops。
  3. Planning time表示生成执行计划所需时间。
  4. Execution time 表示实际执行这条SQL语句所花费时间,不包括生成执行计划的时间。
  • 将执行计划输出不同格式

输出json格式

事务基础知识与执行计划_事务_11

输出yaml格式

事务基础知识与执行计划_国产数据库_12

注意:输出XML、JSON、YAML格式,一般是为了方便某些背程序或脚本抓取处理。

小结

  1. 执行计划说明
  1. 自下向上看执行成本
  2. 上级节点成本包含了下级的成本
  3. 各节点的估算的总启动或结束成本只是每次loops的平均成本,总成本还要乘以loops次数。
  1. 执行计划步骤耗时规则
  1. 表顺序扫描立即可以获得第一行启动时间一般是0,排序操作是需要启动时间的。

标签:语句,事务,数据库,基础知识,计划,SQL,执行
From: https://blog.51cto.com/HMJP/6065393

相关文章

  • spring事务管理
    1.事务添加到javaEE三层架构里面的Service层(业务逻辑层)2.spring事务管理API①提供一个接口,代表事务管理器,这个接口针对不同框架提供不同的实现类  声明式事务管理......
  • Java基础知识点(二维数组)
                       二维数组1.二维数组的定义方式有多种。下面介绍常见的三种方式:第一种:数据类型[][]数组名=new数据类型[行的......
  • PowerShell 脚本自动执行 Azure 任务
    PowerShell脚本自动执行Azure任务Azure提供了三种管理工具:Azure门户:Azure门户是一个网站,可在其中创建、配置和更改Azure订阅中的资源,该门户是一个图形用户界面......
  • vue中执行异步函数async和await的用法
    在开发中,可能会遇到两个或多个函数异步执行的情况,对于Vue中函数的异步函数执行做了一个小总结,如下:异步执行使用async和await完成created(){this.init()},methods:{......
  • composer 执行install 超时解决
    我本地的环境是docker,进入docker执行install后返回超时:#composerinstallNocomposer.lockfilepresent.Updatingdependenciestolatestinsteadofinstallingf......
  • Java基础知识点(数组遍历以及常见问题)
    一:数组遍历:将数组中的所有内容取出来,取出来之后可以对它进行一系列的操作。注意:遍历指的是取出数据的过程,不要局限的理解为遍历就是打印。在Java中,关于数组的一个长度属性.l......
  • Java基础知识点(数组较难的的一个练习-数组的排序)
    冒泡排序:第一步:从第一个元素开始,将相邻的两个元素进行比较,如果前一个元素比后一个元素大,则交换他们的位置,直到最后两个元素完成比较。整个过程完成后,数组中最后一个元素自然......
  • 【LeetCode二叉树#00】二叉树的基础知识
    基础知识分类满二叉树如果二叉树中除了叶子结点,每个结点的度都为2,则此二叉树称为满二叉树。完全二叉树除了底层外,其他部分是满的,且底层从左到右是连续的,称为完全二......
  • 多线程等待所有子线程执行完使用总结(3)——CyclicBarrier使用和源码初步分析
    问题背景我们在日常开发和学习过程中,经常会使用到多线程的场景,其中我们经常会碰到,我们代码需要等待某个或者多个线程执行完再开始执行,上一篇文章中(参考https://blog.51cto......
  • 【MySQL】事务日志 undo log 详解
    Redolog是事务持久性的保证,Undolog是事务原子性的保证。在事务中更新数据的前置操作其实就是要写入Undolog。1.Undo日志引入:事务需要保证原子性,也就是事务中的操作要么......