事务基础知识与执行计划

news/2025/2/9 6:46:31/

事务基础知识

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

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

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

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

创建并回滚到保存点

删除保存点

小结

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

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

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

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

开启只读事务

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


执行计划

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

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

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

2、执行计划三要素

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

二、查询执行计划

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

变量解释

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

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

变量解释:

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

输出json格式

输出yaml格式

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

小结

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


http://www.ppmy.cn/news/24194.html

相关文章

Vue3 如何实现一个函数式右键菜单(ContextMenus)

前言: 最近在公司 PC 端的项目中使用到了右键出现菜单选项这样的一个工作需求,并且自己现在也在实现一个偶然迸发的 idea( 想用前端实现一个 windows 系统从开机到桌面的 UI),其中也要用到右键弹出菜单这样的一个功能,…

【C++】模板初阶STL简介

今天,你内卷了吗? 文章目录一、泛型编程二、函数模板(显示实例化和隐式实例化)1.函数模板格式2.单参数模板3.多参数模板4.模板参数的匹配原则三、类模板(没有推演的时机,统一显示实例化)1.类模…

NSSCTF Round#8 Basic

from:http://v2ish1yan.top MyDoor 使用php伪协议读取index.php的代码 php://filter/readconvert.base64-encode/resourceindex.php<?php error_reporting(0);if (isset($_GET[N_S.S])) {eval($_GET[N_S.S]); }if(!isset($_GET[file])) {header(Location:/index.php?fi…

通过实例告诉你lua中ipairs到底是怎么遍历的!

这个的文章挺多的&#xff0c;但是有好几种说法并且不全。有人说是忽略手动设定值&#xff0c;有人说是从1开始数&#xff0c;直到序号断开&#xff0c;还有人给出结果&#xff0c;但是和我实机测试的效果不一样&#xff0c; 所以我自己总结一篇。经过我的测试和总结得到以下结…

Java 多态

文章目录1、多态的介绍2、多态的格式3、对象的强制类型转换4、instanceof 运算符5、案例&#xff1a;笔记本USB接口1、多态的介绍 多态&#xff08;Polymorphism&#xff09;按字面意思理解就是“多种形态”&#xff0c;即一个对象拥有多种形态。 即同一种方法可以根据发送对…

linux 线程

文章目录1、线程的概念1.1、进程 vs 线程1.2、线程的种类2、线程的控制2.1、线程的创建2.2、线程的退出2.3、线程的取消2.4、线程的等待2.5、线程的分离2.5、线程清理函数线程清理函数响应的时机线程清理函数不响应的时机3、线程的同步和互斥3.1、锁机制3.1.1、锁的类型3.1.2、…

求职(JAVA程序员的面试自我介绍)

背景 在找工作的过程中&#xff0c;在面试的环节&#xff0c;大多数面试官首先都会叫你自我介绍一下。一般是3到5分钟内。不过经过我面试的无数的公司还有曾经也面试过大多数的求职者。国内很多的程序员面试都极其不专业。有一种很随心所欲的感觉。所以经常遇到求职者吐槽遇到了…

02- 天池工业蒸汽量项目实战 (项目二)

忽略警告: warnings.filterwarnings("ignore") import warnings warnings.filterwarnings("ignore") 读取文件格式: pd.read_csv(train_data_file, sep\t) # 注意sep 是 , , 还是\ttrain_data.info() # 查看是否存在空数据及数据类型train_data.desc…