OBCP第四章 SQL调优-SQL执行性能监控
(g)v$sql_audit全局 SQL 审计表基于虚拟表__all_virtual_sql_audit的视图, 该虚拟表对应的数据存放在一个可配置的内存空间中由于存放这些记录的内存是有限的,因此到达一定内存使用量,会触发淘汰可以用来查看每次请求客户端来源,执行 server 信息,执行状态信息,等待事件及执行各阶段耗时等是按照租户拆分的,除了系统租户,其他租户不能跨租户查询sql_audit ....
OBCP第四章 SQL调优-Hint
Hint及特点基于代价的优化器,与Oracle的Hint类似如果使用MySQL的客户端执行带Hint的SQL语句,需要使用-c选项登陆,否则MySQL客户端会将Hint作为注释从用户SQL中去除,导致系统无法收到用户Hint如果server端不认识SQL语句中的Hint,直接忽略而不报错Hint只影响数据库优化器生成计划的逻辑,而不影响SQL语句本身的语义OceanBase支持的hint有以下几....
OBCP第四章 SQL调优-局部索引与全局索引
主键和二级索引主表指使用CREATE TABLE语句创建的表对象。也是索引对象所依赖的表(即CREATE INDEX语句中ON子句所指定的表)主键OceanBase的每一张表都有主键,并在内部以主键为序组织数据。如果在创建用户表时不显式指定主键,系统会自动为表生成隐藏主键,隐藏主键不可被查询索引(索引表)指使用CREATE INDEX语句创建的索引对象。有时为了便于大家理解,也会把索引对象类比为....
OBCP第四章 SQL调优-索引
路径选择(Access Path Selection)访问路径是指数据库中访问表的方法,即使用哪个索引来访问表。访问路径的分析是单表查询的最重要的问题之一,对于使用主表扫描的访问路径来说,执行时间一般与需要扫描的数据量(范围)成正比。对于有合适索引的查询,使用索引可以大大减小数据的访问量,因此对于使用主表扫描的查询,要分析没有选中索引扫描的原因,是由于不存在可用的索引,还是索引扫描范围过大以至于....
OBCP第四章 SQL调优-分区
分区表概述OceanBase数据库把普通的表的数据按照一定的规则划分到不同的区块内,同一区块的数据物理上存储在一起。这种划分区块的表叫做分区表,其中的每一个区块称作分区。分区技术是非常重要的分布式能力之一,它能解决大表的容量问题和并发访问时性能问题。普通的表只有一个分区,可以看作分区表的特例。每个分区只能存在于一个节点内部,分区表的不同分区可以分散在不同节点上。创建分区的目的是为了在特定的SQL....
OBCP第三章 SQL引擎技术-执行计划缓存
一次完整的语法解析、语义分析、查询改写、查询优化、代码生成的SQL编译流程称为一次“硬解析”,硬解析生成执行计划的过程比较耗时(一般为毫秒级),这对于OLTP语句来说是很难接受的OceanBase通过计划缓存(Plan Cache)来避免SQL硬解析执行计划缓存的淘汰-自动淘汰条件及策略自动淘汰是指当计划缓存占用的内存达到了需要淘汰计划的内存上限(即淘汰计划的高水位线)时,对计划缓存中的计划执行....
OBCP第三章 SQL引擎高级技术-执行计划
SQL 是一种“描述型”语言。与“过程型”语言不同,用户在使用 SQL 时,只描述了“要做什么”,而不是“怎么做”数据库在接收到SQL查询时,必须为其生成一个“执行计划”。OceanBase的执行计划本质上是由物理操作符构成的一棵执行树执行树从形状上可以分为“左深树”、“右深树”和“多枝树”三种(参见下图)。OceanBase的优化器在生成连接顺序时主要考虑左深树的连接形式。执行计划展示通过Ex....
OBCP第三章、SQL引擎高级技术-查询改写
查询改写概念数据库中的查询改写(query rewrite)把一个 SQL 改写成另外一个更加容易优化的SQL。1.基于规则的查询改写总是会把SQL往“好”的方向进行改写,从而增加该SQL的优化空间2.基于规则的查询改写并不能总是把 SQL 往“好”的方向进行改写,所以 需要代价模型来判断3.基于代价的改写之后可能又会重新触发基于规则的改写,所以整体上采用 迭代式的方式进行改写基于规则的查询改写....
OBCP第三章 SQL引擎高级技术-DDL语句处理
DDL流程OceanBase数据库支持传统数据库的DDL语句,DDL类型的SQL语句不会被优化器处理,而是作为command发送到RootServer,由RootServer进行处理,比如典型的建表语句。在OceanBase数据库上的执行流程如下图所示:DDL语句处理OceanBase支持传统数据库的DDL语句,自动完成全局统一的schema变更,无需用户在多节点间做schema一致性检查DDL....
OBCP第三章 SQL引擎高级技术-DML语句处理
DML语句处理数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心DML的主要功能即是访问数据,因此其语法都是以读取与写入数据库为主,除了INSERT以外,其他指令都可能需搭配WHERE指令来过滤数据范围,或是不加WHERE指令来访问全部的数据数据库还支持R....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
数据库
分享数据库前沿,解构实战干货,推动数据库技术变革
+关注