OBCP考点总结三

简介: OBCP考点总结三

21 智能轮转合并

1.关闭手动合并alter system set enable_manual_merge = false;

2.开启轮转合并alter system set enable_merge_by_turn = true;


RS根据一定策略依次调度 zone合并,并进行并发度控制

线上部署最常用的合并调度方案,轮转合并的过程中,RS会保证尽量不影响业务的请求,通过切leader的方式, 将用户读写路由到不在合并的zone中;



22. 非智能轮转合并 (注意rs的功能,以及退化成智能轮转合并)

自动指定顺序的轮转合并

用户直接指定轮转的顺序, RS只负责并发度控制


一种特殊的轮转合并策略,一般不会使用,只有当智能轮转合并不满足业务需求的情况下,才需要为集群定制特殊的合并调度策略

在zone成员发生变更的情况下,自动指定顺序的轮转合并会失效,退化成智能轮转合并


23.手动合并 (按zone)

用户通过sql命令指定zone 开始合并,需要用户自己控制并发度

1.开启手动合并alter system set enable_manual_merge = true;

2.用户自主决定合并顺序和并发度,通过 SQL命令调度zone合并,比如调度z1开始 合并:alter system start merge zone = 'z1';


纯手工操作,一般在业务每日合并出现问题、需要人工介入的情况下使用

一旦开启,一次合并都需要用户主动调度,除非关掉手动合并,开启自动合并


24.

自动非轮转合并

所有zone一起开始合并, 没有并发度控制

1.关闭手动合并alter system set enable_manual_merge = false;

2.关闭轮转合并alter system set enable_merge_by_turn = false;


当业务量比较小的情况下,合并中的zone也能支持业务流量时,则可以开启自动非轮转合并,这样做能够避免 用户跨表join请求变成分布式跨机查询

每日合并会对业务请求产生一定的性能影响,需要业务进行确认



25.

每条语句只有一个执行计划缓存



26. 快速参数化(多选题)

执行计划快速参数化-常量不能参数化的场景

n 所有 ORDER BY 后常量(例如"ORDER BY 1,2;")

n 所有 GROUP BY 后常量(例如"GROUP BY 1,2;")

n LIMIT 后常量(例如"LIMIT 5;")

n 被物化的参数精度数字(例如"NUMBER(10,2);")

n select投影列中常量(例如"select 1 as id from tab;")

n 作为格式串的字符串常量(例如"DATE_FORMAT('2006-06-00', '%d'); "里面的"%d")

n 函数输入参数中,影响函数结果或带有隐含信息并最终影响执行计划的常量(例如"CAST(999.88 as NUMBER(2,1))" 中的"NUMBER(2,1)",或者"SUBSTR('abcd', 1, 2)"中的"1, 2",或者"SELECT UNIX_TIMESTAMP('2015-11-13 10:20:19.012');" 里面的"2015-11-13 10:20:19.012",指定输入时间戳同时,隐含指定了函数处理的精度值为毫秒)


27.

执行计划

|ID|OPERATOR |NAME|EST. ROWS|COST| 每一列的含义,注意cost, 单位不是bytes,是微秒

ID 执行树按照前序遍历的方式得到的编 号(从0开始)

OPERATOR 操作算子的名称

NAME 对应表操作的表名(索引名)

EST. ROWS 估算的该操作算子的输出行数

COST 该操作算子的执行代价(微秒)


28.

 Oceanbase目前只实现了一个基于代价的查询改写(or-expansion)

Or-expansion把一个查询改写成若干个用union组成的子查询,这个改写可能会给每个子查询提供更优的优化空间,但是也会导致多个子查询的执行,

所以这个改写需要基于代价去判断。通常来说,Or-expansion的改写主要有如下三个作用:


允许每个分支使用不同的索引来加速查询

允许每个分支使用不同的连接算法来加速查询,避免使用笛卡尔连接

允许每个分支分别消除排序,更加快速的获取top-k结果


29.

自动淘汰是指当计划缓存占用的内存达到了需要淘汰计划的内存上限(即淘汰计划的高水位线)时,对计划缓存中的计划执行自动淘汰。

触发执行计划淘汰的条件

   每隔一段时间(具体时间间隔由配置项 plan_cache_evict_interval 设置)系统会自动检查不同租户在不同服务器 上的计划缓存,并判断是否需要执行计划淘汰。如果某个计划缓存占用的内存超过该租户设置的淘汰计划的高水位 线,则会触发计划缓存淘汰

执行计划淘汰策略

  当触发计划缓存淘汰后,优先淘汰最久没被使用的执行计划,淘汰一部分执行计划后,当计划缓存使用的内存为该

  租户设置的淘汰计划的低水位线时,停止淘汰


优先淘汰最久没被使用的执行计划,影响淘汰策略的参数和变量如下:

plan_cache_evict_interval(parameter):检查执行计划是否需要淘汰的间隔时间 30秒 (注意)

ob_plan_cache_percentage(variable):计划缓存可使用内存占租户内存的百分比 (最多可使用内存为:租 户内存上限 * ob_plan_cache_percentage/100)

ob_plan_cache_evict_high_percentage (variable) :计划缓存使用率(百分比)达到多少时,触发计划缓 存的淘汰

ob_plan_cache_evict_low_percentage (variable) :计划缓存使用率(百分比)达到多少时,停止计划缓存 的淘汰


重点: 如果淘汰速度没有新计划生成速度快,计划缓存使用内存达到内存上限绝对值1G时,将不再往计划缓存中添加新计划,直到淘汰后使用的内存小于1G才会添加新计划到计划缓存中


手动淘汰是指强制将计划缓存中计划进行删除。现在支持指定不同租户对应的当前服务器或全部服务器中计划缓存全部 删除,SQL 语句如下:

obclient>ALTER SYSTEM FLUSH PLAN CACHE [tenant_list] [global]

其中 tenant_list 和 global 为可选字段,使用说明如下:


tenant_list 格式为 tenant = 'tenant_name, tenant_name....'。如果没有指定 tenant_list,则清空所有租户的计划 缓存。

反之,则只清空特定租户的计划缓存


如果没有指定 global,则清空本机的计划缓存。反之,则清空该租户所在的所有服务器上的计划缓存


如下场景会导致执行计划失效,需要对执行计划进行刷新:

n SQL 中涉及表的 Schema 变更时(比如添加索引、删除或增加列等),该 SQL 在计划缓存中所对应的执行计划将被 刷新

n SQL 中涉及重新收集表的统计信息时,该 SQL 在计划缓存中所对应的执行计划会被刷新。由于 OceanBase 数据库在 数据合并时会统一进行统计信息的收集,因此在每次进行合并后,计划缓存中所有计划将被刷新

n SQL进行outline计划绑定变更时,该SQL对应的执行计划会被刷新,更新为按绑定的outline生成的执行计划



系统变量控制

    当 ob_enable_plan_cache 设置为 TURE 时,表示 SQL 请求可以使用计划缓存;设置为 FALSE 时,表示 SQL 请 求不使用计划缓存。默认为 TURE。

    此系统变量可被设置为 Session 级别或者 Global 级别

Hint 控制

    使用 Hint 语句 /+USE_PLAN_CACHE(NONE)/ 表示不使用计划缓存 l 使用 Hint 语句 /+USE_PLAN_CACHE(DEFAULT)/ 表示使用计划缓存


1:表示 Local Plan

2:表示 Remote Plan

3:表示 Distribute


30.

 OceanBase 数据库通过 SQL_ID 区分不同的 SQL,而 SQL_ID 是通过 SQL_TEXT 取 MD5 加密得到的

 在实际生产系统中,推荐通过 SQL_ID 进行 Outline 绑定。

 当 SQL_ID 相同时,使用 SQL_TEXT 方式创建的 Outline 会覆盖 SQL_ID 方式创建的 Outline


 plan_cache_plan_stat 中可以存在多条 sql_id


相关文章
|
5月前
|
敏捷开发 测试技术 项目管理
【软件设计师备考 专题 】准备软件设计师资格考试:复习指南和策略
【软件设计师备考 专题 】准备软件设计师资格考试:复习指南和策略
259 0
|
资源调度 索引
OBCP考点总结一
OBCP考点总结一
156 0
|
SQL 负载均衡 容灾
OBCP考点总结四
OBCP考点总结四
98 0
|
SQL Oracle 关系型数据库
OBCP部分考点总结
OBCP部分考点总结
157 0
|
SQL 缓存 数据库
OBCP考点总结二
OBCP考点总结二
124 0
|
29天前
|
网络协议 前端开发 网络安全
「offer来了」2种递进学习思维,24道计网题目,保姆级巩固你的计网知识体系
该文章通过2种递进学习思维和24道计算机网络题目,系统地巩固了计算机网络的基础知识,包括OSI模型、TCP/IP协议、三次握手与四次挥手的过程及背后的原理,并探讨了DDoS攻击与防御措施等内容。
「offer来了」2种递进学习思维,24道计网题目,保姆级巩固你的计网知识体系
|
2月前
|
算法 安全
软件设计师 高频考点 及 考试大纲总结
软件设计师 高频考点 及 考试大纲总结
软件设计师 高频考点 及 考试大纲总结
|
5月前
|
存储 算法 搜索推荐
【中级软件设计师】—数据结构与算法基础考点总结篇(八)
【中级软件设计师】—数据结构与算法基础考点总结篇(八)
【中级软件设计师】—数据结构与算法基础考点总结篇(八)
|
机器学习/深度学习 人工智能 自然语言处理
阿里云的认证值不值得考?考试内容难不难?
阿里云作为目前国内排名第一的云计算厂商,证书受认可度是非常高的,获取证书后不仅可以获得在阿里任职的机会,还可以优先被阿里的合作伙伴企业录取。考试内容,每个方向都不同,考生可以根据自己需要的来选择。
|
云计算
考阿里云需要准备什么?是在线上考吗?
作为一个新兴的职业,云计算在未来的生活中将占有很大的比重,同时为了提高企业的竞争力,很多企业纷纷转型,将自己的业务放到了线上。
考阿里云需要准备什么?是在线上考吗?