---
title: OceanBase 数据库的无主键表介绍-OceanBase数据库使用指南
description: 了解OceanBase数据库在实际应用中关于OceanBase 数据库的无主键表介绍相关的常见问题和使用技巧，帮助您快速解决OceanBase 数据库的无主键表介绍的难题。
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

划线反馈

# OceanBase 数据库的无主键表介绍

更新时间：2026-05-21 01:56

适用版本： V2.1.x、V2.2.x、V3.1.x、V3.2.x 内容类型：TechNote  

本文介绍 OceanBase 数据库无主键表的实现以及使用注意事项。

## 适用版本

OceanBase 数据库 V2.2.7x 及后续版本

## 无主键表

无主键表是指在创建表时没有指定主键的表，此时 OceanBase 数据库会采用一个自增的列作为隐藏主键。隐藏主键的数据类型为 BIGINT，最大值为 2^64^。

无主键表可以通过物理 rowid 的方式快速定位到行。

## 隐藏主键的单调性与连续性

- 对于单分区表，隐藏主键是单调唯一且递增的。
 - 对于多分区表，隐藏主键能够保证唯一，但无法保证在全局范围内单调递增。 这是由于 OceanBase 数据库会为 BIGINT 类型的自增列预分为 1 亿个序列号，保证自增值在分区内递增，但在分区间无法保证单调。例如，为隐藏主键分配的 1 亿序列号耗尽后，OceanBase 数据库会取下一段缓存，但这段缓存的起点不一定是 100000001。 为保证隐藏主键在分区内递增，当一个分区的 Leader 加入当前 OBServer 时，OceanBase 数据库会将该机器上的自增值缓存清空，重新取一段。

此外，由于隐藏主键是基于自增列实现的，因此存在跳变的场景，有关 OceanBase 数据库自增列跳变的场景，请参见 [OceanBase 数据库自增列特性介绍](https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000170)。

## 隐藏主键的幂等性

无主键表的隐藏主键对普通用户的读写都是不可见的，如果无主键表中其他列不存在逻辑上的 UNIQUE 约束，那么无主键表的 `INSERT` 操作是无法做到幂等的。

## 注意事项

使用无主键表时，需要注意以下事项：

1. 当高速加载数据到无主键表时（或者跨城、RootService 宕机或网络性能抖动等 HA 场景时），为了避免同步锁的性能消耗，可以考虑调整 `autoinc_cache_refresh_interval` 配置项的值 ，以实现类似于 `disable value sync` 的效果。

   `autoinc_cache_refresh_interval` 用于设置自增列缓存的刷新间隔，默认为 3600s。该配置项不能小于无主选举的时间间隔（默认为 10s）。 有关该配置项的详细信息，请参见《OceanBase 数据库参考指南》中的 **系统配置项** 章节。
 2. 目前无主键分区表不支持全局索引。
 3. OceanBase 数据库的 Oracle 模式不支持 `ALTER SYSTEM ADD PRIMARY KEY` 操作，因此创建无主键表后，不支持修改为主键表。

上一篇

[如何查询集群中的复制表](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207718)

下一篇

[查找表被哪些其它表引用外键的方法](https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000450142) ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
