事务基础知识
- 数据库事务的概念
- 数据库事务是什么?
- 事务是一组原子性的SQL操作。
- 事务由事务开始与事务结束之间执行的全部数据库操作组成。
- A(原子性)、(C一致性)、I(隔离性)、D(持久性)
- 事务处理语句的使用
1、使用ROLLBACK回滚事务(BEGIN+ROLLBACK)
注意:也可以利用退出程序(\q)结束事务
- 十五保存点使用(SAVEPOINT+ROLLBACK)
创建并回滚到保存点
删除保存点
小结
- 如何控制事务自动提交?
- KES中默认开启了自动提交
注意:显示on,请注意在KES中不允许全局性地修改AUTOCOMMIT的值。
- 在会话中关闭自动提交
- 什么是隐式事务?
- 在AUTOCOMMIT=ON的情况下,每条SQL(增删改查)是一个自动提交的事物,这种事务又称为隐式事务。
- 什么是显示事务?
- 显示事务指不会自动结束的事务,这种事务一般需要用户手动控制来结束事务。
- 什么是单机事务?什么是分布式事务?
- 单机事务:指的是一个事务的所有的操作都分布同一个数据库实例上。
- 分布式事务:指事务参与者、事务协调者、支持事务的服务器不在同一节点上。
- KES支持只读事务吗?
开启只读事务
注意:不能在一个被设置为只读模式的事物中执行DML、DDL、DCL操作。
执行计划
- SQL语句的执行计划
- 执行计划概述
(1)执行计划(Execution Plan)描述SQL语句在数据库中的执行过程,常用于SQL 性能分析。
(2)它是数据库查询优化器选择出来的执行语句的方案。
(3)它依赖于准确的数据库统计信息,包含系统统计信息和对象统计信息。
(4)KES使用的是基于代价(COST)的执行计划,它是优化器对于该语句要运行多久的预估。(5)执行计划会显示启动代价和总代价,对于大部分查询来讲总代价是最需要被关注的。
2、执行计划三要素
访问路径、连接顺序、连接方式
二、查询执行计划
1、使用命令执行计划查看方式
变量解释
- 实际执行语句
- 查看预估执行计划,并实际执行sql
EXPLAIN (analyze true) 可以简写为EXPLAIN analyze。
变量解释:
- analyze选项表示系统会实际执行该语句
- actual time 表示当前节点单次实际的启动时间和执行时间, 当前节点总体执行时间需要乘以loops。
- Planning time表示生成执行计划所需时间。
- Execution time 表示实际执行这条SQL语句所花费时间,不包括生成执行计划的时间。
- 将执行计划输出不同格式
输出json格式
输出yaml格式
注意:输出XML、JSON、YAML格式,一般是为了方便某些背程序或脚本抓取处理。
小结
- 执行计划说明
- 自下向上看执行成本
- 上级节点成本包含了下级的成本
- 各节点的估算的总启动或结束成本只是每次loops的平均成本,总成本还要乘以loops次数。
- 执行计划步骤耗时规则
- 表顺序扫描立即可以获得第一行启动时间一般是0,排序操作是需要启动时间的。