---
title: "OBKV-Table 操作类型 - OceanBase 数据库 V4.3.3 | OceanBase 文档中心"
description: OBKV-Table 操作类型 OBKV-Table 支持 login、execute、batch_execute 和 query（查询扫描）四种不同的操作类型。 操作类型的实现背后是分别使用四个不同的 Processor 类进行管理。每一种类型通过继承和派生衍生出对应的 process 处理函数，分别处理不同的 R…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库KV 型 - V 4.3.3

# OBKV-Table 操作类型

更新时间：2024-12-19 16:51:33

[编辑](https://github.com/oceanbase/oceanbase-kv/edit/V4.3.3/zh-CN/100.obkv-table/100.introduction-to-obkv-table/150.obkv-table-operations-supported.md)  

OBKV-Table 支持 login、execute、batch_execute 和 query（查询扫描）四种不同的操作类型。

操作类型的实现背后是分别使用四个不同的 Processor 类进行管理。每一种类型通过继承和派生衍生出对应的 process 处理函数，分别处理不同的 RPC 消息请求。

![OBKV-Table](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/700.reference/600.api/500.tableapi/100.introduction-to-tableapi/tableapi-operation0-types.png)

- 登录请求：ObTableLoginRequest，需要提供和 SQL 一样的 OceanBase 租户用户名和密码用于认证，认证成功才可以使用其他 OBKV-Table。
 - OBKV-Table 单次处理请求：ObTableOperationRequest，例如 insert、update、replace、get、increment、append 等。
 - OBKV-Table 批处理请求：ObTableBatchOperationRequest，单处理的集合。
 - OBKV-Table 流式查询请求：ObTableQueryRequest，例如针对某 primary key 范围的 scan range。

各操作类型实现类图如下：

![operation-type](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/observer-enterprise/V4.2.1/700.reference/600.api/500.tableapi/100.introduction-to-tableapi/Operation-type-implementation.png)

## 单处理（execute）

单处理在 OBServer 服务端的处理结果将以返回值 errno & 影响行数 affected_rows 的方式返回给客户端，表示操作的最终结果。

#### 说明

下文中的 Insert、Get 等字样为操作行为，并非实际的函数或接口。

### Insert

该操作的作用是插入一行记录。

该操作的返回结果分为以下几种：

- 插入成功，返回 errno 为 OB_SUCCESS，affected_rows 为 1。
 - 插入失败，返回 affected_rows 为 0。
 - 因为主键冲突（即这行已经存在）插入失败，返回 errno 为 OB_ERR_PRIMARY_KEY_DUPLICATE。
 - 其他常见错误码：
     - OB_TIMEOUT：执行超时。
     - OB_TRY_LOCK_ROW_CONFLICT：等待行锁超时。

### Get

该操作的作用是取回一行记录。

如果目标行存在，返回目标行记录，否则，返回为空。

### Delete

该操作的作用是删除一行记录。

- 目标行记录被成功删除，返回 errno 为 OB_SUCCESS，affected_rows 为 1。
 - 目标行不存在，返回 errno 为 OB_SUCCESS，affected_rows 为 0。

### Update

该操作的作用是更新一行记录。

- 目标行记录被成功更新，返回 errno 为 OB_SUCCESS，affected_rows 为 1。
 - 目标行不存在，返回 errno 为 OB_SUCCESS，affected_rows 为 0。

### Insert_or_update

该操作的作用是插入或修改一行记录。

- 目标行不存在，则插入记录，成功后返回 errno 为 OB_SUCCESS，affected_rows 为 1。
 - 目标行已经存在（即主键冲突），则更新该行记录，成功后返回 errno 为 OB_SUCCESS，affected_rows 为 1。
 - 插入存在唯一索引冲突，则也执行更新操作。

### Replace

该操作的作用是替换一行记录。

- 目标行不存在，则插入记录，成功后返回 errno 为 OB_SUCCESS，affected_rows 为 1。
 - 目标行已经存在（即主键冲突），则删除原记录，然后再插入需替换的记录，成功后返回 errno 为 OB_SUCCESS，affected_rows 大于 1。
 - 若存在唯一索引冲突，则删除所有引起冲突的行，然后再插入需替换的记录，成功后返回 errno 为 OB_SUCCESS，affected_rows 大于1（包含被删除的行）。

#### 注意

replace 操作和 insert_or_update 操作很容易混淆，您可参考文档 [replace 和 insert_or_update 的区别](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001544698) 对这两种操作进行区分。

### Increment

该操作的作用是把指定列的值原子地增加某个增量值（可以为负数）。

该操作为 OceanBase 1.4.75 开始新增特性，支持操作整型列类型，含 tinyint、smallint、mediumint、int、bigint 及对应的无符号列类型，其他列类型报错。 该操作的返回结果分为以下几种：

- 如果计算结果溢出列类型的值域，则报错。
 - 如果目标行不存在，则插入，把增量值设置为初值（即等价于原值为 0）。
 - 如果目标行存在，但是指定列的值为 NULL，把增量值设置为初值（即等价于原值为 0）。

### Append

该操作的作用是把指定列的值原子的追加某个串。

该操作为 OceanBase 1.4.75 开始新增特性，支持 varchar/varbinary 类型，其他列类型报错。 该操作的返回结果分为以下几种：

- 如果计算结果溢出列的长度，则报错。
 - 如果目标行不存在，则插入，把增量值设置为初值（即等价于原值为空串）。
 - 如果目标行存在，但是指定列的值为 NULL，把增量值设置为初值（即等价于原值为空串）。

## 批操作（batch operation）

批操作为单操作的合集，因此若想了解批处理的具体表现，您可以参考本文的 **单处理（execute）** 章节。

特别的，为了加速批操作流程，在针对只读批操作集合的处理上，OBServer 节点做了只读事务的优化，因此相比于读写批操作，只读批操作集合在性能上的表现会更好。

## 查询操作（query）

OBKV-Table 支持根据主键或主键的前缀进行范围扫描，也可以不指定主键，根据索引或索引前缀范围进行扫描查询。

Query 操作类型可以指定多段范围进行扫描。现阶段，在一次 Query 的 RPC 消息交互过程中，最大能从服务端返回 64M 的结果数据集合（可调整）。

关于 Query 各种条件的设置方式，可以参考 [客户端简介与使用说明](https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001544695)。

 上一篇 下一篇 ![有帮助](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) 咨询热线
