【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】
【遇到的问题:问题现象及影响】
【资源配置】
SHOW CREATE TABLE 表名;
得到表的创建语句,看下表名前有没有TEMPORARY
CREATE TEMPORARY TABLE users (
id BIGINT,
name VARCHAR(100),
city VARCHAR(50),
PRIMARY KEY(id)
);
有没有系统视图可以查看是否为临时表
可以根据如下系统表查询
SELECT
table_name, table_type
FROM information_schema.tables
WHERE table_schema = 'your-dbname';
临时表和普通表的table_type都是BASE TABLE
table_type = 'TEMPORARY’的是临时表,其余都是普通表
应该是没有系统表可以看到的。
https://docs.pingcap.com/zh/tidb/stable/dev-guide-use-temporary-tables#查看临时表信息
本地的临时表本身只存到内存中,全局的临时表我看table_type跟普通表一致。
或许可以通过建表的时候增加tmp关键字来辅助判断。
哦哦看了下还真是,看来我之前用这个统计的是有问题的
内部业务基本没有使用临时表
要判断一个表是临时表还是普通基表,可以通过以下几种方法:
-
使用SQL查询语句查看表类型:
- 在MySQL中,可以通过查询
information_schema.tables
表来查看表的类型。具体的SQL语句如下:
在上述查询中,SELECT TABLE_NAME, TABLE_TYPE FROM information_schema.tables WHERE table_schema = 'your_database_name';
TABLE_SCHEMA
指定了要查询的数据库名称。TABLE_TYPE
字段显示表的类型,通常为BASE TABLE
(普通表)或VIEW
(视图)。对于临时表,TABLE_TYPE
会显示为TEMPORARY
。
- 在MySQL中,可以通过查询
-
查看表的属性:
- 在某些数据库管理系统中,比如Oracle,可以通过查询系统视图
ALL_OBJECTS
来判断表是否为临时表。具体的SQL语句如下:
这里会查询出所有标记为临时(SELECT * FROM ALL_OBJECTS WHERE object_name LIKE '%TEM_1' AND temporary = 'Y';
temporary = 'Y'
)的表。
- 在某些数据库管理系统中,比如Oracle,可以通过查询系统视图
-
使用数据库管理工具:
- 也可以使用数据库管理工具,如SQL Server Management Studio (SSMS)、MySQL Workbench或pgAdmin等,它们通常在表的属性窗口中显示表的类型信息。
应该能通过DDL语句来判断