首批通过分布式安全可靠测评,为关键业务系统打造
普通租户
更新时间:2026-06-16 12:55:03
普通租户与通常所见的数据库管理系统相对应,可以被看作是一个数据库实例。它由系统租户根据业务需要所创建出来。
普通租户具备一个实例所应该具有的所有特性,主要包括:
可以创建自己的用户
可以创建数据库(database)、表(table)等所有客体对象
有自己独立的系统表和系统视图
有自己独立的系统变量
数据库实例所具备的其他特性
所有用户数据的元信息都存储在普通租户下,所以每个租户都有自己的名字空间,并且彼此隔离不可访问。系统租户管理所有普通租户,系统租户与普通租户之间的层级关系如下图所示。

租户级系统表
虽然普通租户与系统租户是独立且隔离的,但普通租户无法完成自举。普通租户系统表的元数据信息是引用了系统租户的元数据信息;普通租户系统表的位置信息存储在系统租户的 __all_root_table 表中。
普通租户系统表的对象元数据信息和位置信息的分布如下图所示。

根据上图可知:
副本位置信息的发现
租户下用户表的位置信息存储在本租户的
__all_tenant_meta_table表中。所有租户的系统表的位置信息都存储在系统租户下的__all_root_table表中。__all_root_table表的位置信息存储在__all_core_table表中。__all_core_table表的位置信息常驻在 RS 的内存中。当需要发现一个用户表分区的副本位置时,需要找到
__all_tenant_meta_table表,而找到__all_tenant_meta_table表需要找到__all_root_table表,再根据__all_root_table表找到__all_core_table表的位置,最后追溯到 RS 的位置。对象元数据信息
租户下用户表的对象元数据信息存储在本租户下的对象元数据相关的表中。普通租户下系统表的对象元数据信息是引用了系统租户的系统表。
例如,租户下的
__all_table_v2表存储了本集群下所有的用户表的信息,租户下的__all_table_v2表的对象元数据信息是直接引用了系统租户的__all_table_v2表,而系统租户的__all_table_v2表的对象元数据信息是存储在__all_core_table表中,__all_core_table的表结构为硬编码。
创建用户
在普通租户下创建的用户,只能登录到本租户,对其他租户不可见。
对于 MySQL 兼容模式的租户,可以从 mysql.user 视图中查询用户信息。
对于 Oracle 兼容模式的租户,可以从 ALL_USERS视图中查询用户信息。
创建用户表
在普通租户下可以创建表,创建后对其他租户不可见。
对于 MySQL 兼容模式的租户,可以从 information_schema.tables 视图中查询本租户所有用户表的信息。
对于 Oracle 兼容模式的租户,可以从 ALL_TABLES 视图中查询本租户所有用户表的信息。
修改系统变量
普通租户只能在本租户下修改本租户的系统变量。
对于 MySQL 兼容模式的租户,可以从 information_schema.global_variables 和 information_schema.session_variables 视图中查询系统变量信息。也可以通过 SHOW VARIABLES 语句查询。
对于 Oracle 兼容模式的租户,可以通过 SHOW VARIABLES 语句来查询本租户所有系统变量的信息。
位置信息
每个普通租户都分别包含一张 __all_tenant_meta_table 表,记录租户下用户表的物理位置元信息。