说明:
本期课程中提到的临时表,特指 OceanBase 中 MySQL 模式下会话(session)级别的临时表。
本期课程不涉及任何 Oracle 模式下的功能,Oracle 模式下的临时表能力更加复杂,与 MySQL 模式下临时表区别较大。
之前课程文档发布之后,会有部分读者老师回复说,希望能多介绍一些偏底层实现原理的东西。
所以这次的 session 级别临时表功能,社区运营同学 @兹拉坦 会课程文档中,去到官网提供的这个实验环境里,通过系统表中记录的与临时表相关的元信息,来和大家一起探索一下 OceanBase 临时表的实现原理。@兹拉坦 不懂技术,纯属自己胡乱摸索和猜测,欢迎各位老师多多批评指正~
背景
OceanBase MySQL 模式下的临时表功能,是 MySQL 兼容的的重要能力,用一句话介绍就是 “可在会话(session)中存放临时结果,具有会话隔离、生命周期短、自动清理等特性”。
举个例子,MySQL 模式下,经常会有用户在 AP 报表业务中,通过存储过程产生大量临时结果集。很多用户都希望能够在存储过程执行完成之后,存放临时结果集的临时表可以被自动删除,释放存储空间(所以暂时先把临时表这个特性,归类到 AP 特性介绍的分类里)。
为了避免总是让用户通过各种奇技淫巧绕过对临时表的依赖,以及为了让业务能够更顺利地向 OceanBase 迁移。所以 4.3.x 会从 4.3.5 BP4 版本开始,让临时表正式对外接客(4.4.x 会从 4.4.2 版本开始)。今天就为大家介绍一下这个会话级别临时表的能力。
边学边练,效果拔群
在 OceanBase 的 MySQL 模式下,临时表与普通表(非临时表)在 DDL / DML 能力、可见性、统计信息管理等方面存在巨大差异。欢迎大家通过这个实验,直观地了解和体验 MySQL 模式下临时表的特点、用法和限制。
-
在线实验地址:《体验 OceanBase MySQL 模式下的临时表》
-
课后小测地址:【DBA 实战营】OceanBase MySQL 模式下的临时表
-
在第三季的活动中,每通过一个课后练习,就会自动获得 10 个社区积分,并获得一次抽奖的资格。抽奖时有机会获得实体礼物或更高额的积分奖励。
-
第三季课后小测,为了避免您等待人工审核,在最后一道问答题中,需要复制黏贴一个您在实验环境中通过
obclient -h127.0.0.1 -P2881 -uroot@mysql_tenant -A -Dtest链接到数据库后,执行select now(), GetKey('你的论坛用户名');后获取的字符串。这个实验里好像还有一个 temp_oceanbase 库,注意要 use test 库,在 test 库下才能执行 GetKey 函数呦~ -
例如您的社区用户名叫作兹拉坦,需要复制黏贴到最后一道问答题中的字符串就是:
02095F4E60B29E8B709DB2773B18FDCB6E1365817C(不要截图,只需要复制黏贴字符串后上传到最后一道题的答题区域中即可)。obclient [test]> select GetKey('兹拉坦'); +--------------------------------------------+ | GetKey('兹拉坦') | +--------------------------------------------+ | 02095F4E60B29E8B709DB2773B18FDCB6E1365817C | +--------------------------------------------+ 1 row in set (0.001 sec)小提示:
- 需要先登录 OceanBase 账号,才能初始化屏幕右边的实验环境进行实验。
- 在实验环境里,干什么都可以。大家不要受限于屏幕左边的实验手册,可以天马行空地做一些你感兴趣的事情,或者验证一些你对 OceanBase 官网文档的疑问、以及自己的猜想等等。
- 欢迎大家平时在学习 OceanBase 的过程中,也都能充分利用在线体验页面为您提供的一些实验环境,来体验 OceanBase 中您感兴趣的新特性。
-
希望大家都能够积极参与上面的在线体验,并通过课后小测。这是 @兹拉坦 能够持续为大家更新《DBA 实战营(第三季)》课程内容的最大动力~













