# 系统表

实例初始化后会带有若干**系统库**，存放元数据、兼容层信息与内部运行数据。系统对象默认**只读**；不要在业务中依赖未文档化的内部表结构做写入。

## 系统库一览

| 库名 | 用途（产品向） |
| --- | --- |
| `mo_catalog` | MatrixOne 元数据：库、表、列、索引、用户、角色、授权关系等 |
| `information_schema` | 信息架构视图，兼容常见「查表结构 / 查权限」路径 |
| `mysql` | MySQL 兼容层相关系统表（子集） |
| `system` | 运行与日志类系统数据 |
| `system_metrics` | 指标类系统数据 |

> 部分旧文稿将指标库写作拼写变体；以实例中 `SHOW DATABASES` 实际库名为准，常见为 `system_metrics`。

## `mo_catalog` 常用表（要点）

不必记住每一列，按任务查即可：

| 表（名称） | 你能查到什么 |
| --- | --- |
| `mo_database` | 库列表、创建信息、是否订阅库等 |
| 表/列元数据表 | 表、列定义（具体表名以实例为准，如 `mo_tables` / `mo_columns` 一类） |
| `mo_indexes` | 索引 ID、类型（主键/唯一/次级）、算法与列组成 |
| `mo_table_partitions` | 分区定义；**RANGE/LIST 等可能未支持**，见[使用限制](limitations.md) |
| `mo_user` | 用户名、状态、创建时间、默认角色等 |
| `mo_role` | 角色 |
| `mo_user_grant` | 用户被授予的角色 |
| `mo_role_grant` | 角色继承 |
| `mo_role_privs` | 角色上的权限明细 |
| 用户定义函数相关表 | 自定义函数元数据 |

```sql
-- 示例：查看当前可见的库元数据（需相应权限）
SELECT datname, dat_type, created_time
FROM mo_catalog.mo_database
LIMIT 20;
```

## `information_schema` 与 `mysql`

- 习惯用 `information_schema.tables` / `columns` / `schemata` 等做工具兼容时，优先走这一层。  
- 兼容程度是**子集**：有的 MySQL 系统表或列不存在或恒为空，不要假设 100% 与 MySQL 8.0 相同。

## 使用注意

1. **只读**：对系统库做 DML/DDL 通常被拒绝或导致不可预期行为。  
2. **权限**：普通业务角色可能看不到全部系统表；管理员角色可见范围更大。  
3. **版本差异**：内部表列会随版本演进；自动化脚本应容忍新增列，避免 `SELECT *` 强依赖列序。  
4. **清理**：日志类清理可能提供专用函数（如 `PURGE_LOG`），不要手改底层文件或表。

## 相关页面

- [权限分类](privileges.md)
- [权限 · MatrixOne](../../guides/matrixone/permissions.md)
- [系统变量](system-variables.md)
