第三期实战营测试题判断咨询:OceanBase MySQL 模式下,可以通过 CREATE GLOBAL TEMPORARY TABLE 创建全局临时表,全局临时表的列定义可以对所有 Session 可见。但全局临时表中的数据是 Session 私有的,当前 Session 只能看到和修改自己的数据。

判断题

OceanBase MySQL 模式下,可以通过 CREATE GLOBAL TEMPORARY TABLE 创建全局临时表,全局临时表的列定义可以对所有 Session 可见。但全局临时表中的数据是 Session 私有的,当前 Session 只能看到和修改自己的数据。

A

正确

B

错误

正确答案是:

B

这道题是不是超纲了,并没有讲全局临时表

4 个赞

新版本中的?

2 个赞

MySQL模式应该是没有global临时表

2 个赞

好像是这么回事

2 个赞

不清楚,第三期DBA实战营–体验 Oceanbase 数据库临时表的常见用法里的题测

2 个赞

MySQL 官方版本(MySQL Community / Enterprise)
没有“全局临时表” 这个概念,只有两种 会话级 临时表:

  1. temporary table

sql

复制

CREATE TEMPORARY TABLE tmp1 (id int);
  • 仅对当前连接可见,连接断开即自动销毁。

  • 不同连接可以各自建同名 tmp1,互不干扰。

  • 元数据仅存在于当前会话内存,其他会话查不到。

  1. internal temporary table
    优化器在执行复杂 SQL(排序、去重、派生表等)时自动创建的临时表,对用户完全透明,更谈不上“全局”。

Oracle 里常见的 GLOBAL TEMPORARY TABLE(定义全局、数据会话私有)在 MySQL 中没有对应实现
因此,如果你想让“所有会话共享表结构,但数据仍会话级隔离”,MySQL 只能自己模拟:

  • 把表建成普通表(非 TEMPORARY),再加一列 session_id VARCHAR(128) DEFAULT CONNECTION_ID(),然后在业务层 WHERE session_id = CONNECTION_ID() 来隔离数据;

  • 定期清理过期会话的数据。

小结
MySQL 只有 会话级临时表,不存在 全局临时表

1 个赞

是没有,刚问KIMI了

2 个赞

666

2 个赞

:grinning: :smiley:

2 个赞

8f32de4d47f648dcc0b2675840e815b9_smiley_v=12