tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

数据操作

PDF
聚焦模式
字号
最后更新时间: 2026-02-10 10:59:29

scan

setCaching

功能:限制单次 RPC 服务端返回的行数。默认无限制。较大的值可加快查询速度,较小的值可减少客户端内存消耗。请根据业务需要调整,以平衡查询速度和内存消耗。
方法签名
public Scan setCaching(int caching);
参数
caching:单次 RPC 返回的行数。
示例
Scan scan = new Scan();
scan.setCaching(500); // 每次 RPC 返回最多 500 行

setMaxResultSize

功能:限制单次 RPC 服务端返回数据的最大字节数。默认无限制。使用时请注意,避免一次性返回过多数据导致内存溢出。
方法签名
public Scan setMaxResultSize(long maxResultSize);
参数
maxResultSize:单次 RPC 返回数据的最大字节数。
示例
Scan scan = new Scan();
scan.setMaxResultSize(1024 * 1024); // 每次 RPC 返回最多 1MB 数据

setAllowPartialResults

功能:设置是否允许返回部分行数据。默认 false,即每次至少返回一整行数据。使用时请注意,避免一次性返回过多数据导致内存溢出。
方法签名
public Scan setAllowPartialResults(final boolean allowPartialResults);
参数
allowPartialResults:是否允许返回部分行数据。
示例
Scan scan = new Scan();
scan.setAllowPartialResults(true); // 允许返回部分行数据

withStartRow 和 withStopRow

功能:指定扫描的起始行和结束行,包括是否包含这些行键。
方法签名
public Scan withStartRow(byte[] startRow);
public Scan withStopRow(byte[] stopRow);
参数
startRow:起始行键。
stopRow:结束行键。
示例
Scan scan = new Scan();
byte[] startRow = Bytes.toBytes("row1");
byte[] stopRow = Bytes.toBytes("row5");
scan.withStartRow(startRow);
scan.withStopRow(stopRow);

setLimit

功能:设置扫描的最大结果数,防止一次性返回大量数据导致内存溢出。
方法签名
public Scan setLimit(int limit);
参数
limit:最大结果数。
示例
Scan scan = new Scan();
scan.setLimit(100); // 最多返回 100 行数据

renewLease

功能:延长 ResultScanner 的有效期限。默认有效期为 60 秒,超时后扫描器自动关闭。
方法签名
ResultScanner.renewLease();
示例
ResultScanner scanner = hTable.getScanner(scan);
Thread.sleep(5 * 1000);
scanner.next();
Thread.sleep(20 * 1000);
scanner.renewLease(); // 延长扫描器有效期

get

checkExistenceOnly

功能checkExistenceOnly 用于设置 Get 操作是否只返回数据是否存在的结果(通过 Result 的 getExists() 方法获取),而不是返回完整的结果集。这可以用于快速检查某行或某个单元格是否存在,减少网络传输和内存消耗。
方法签名:
public Get setCheckExistenceOnly(boolean checkExistenceOnly);
参数:
checkExistenceOnly:如果为 true,则 Get 操作只返回是否存在的结果;如果为 false,则返回完整的结果集。
示例:
// 创建 Get 对象
Get get = new Get(Bytes.toBytes("row1"));

// 设置只检查是否存在
get.setCheckExistenceOnly(true);

// 执行 Get 操作
Result result = table.get(get);

// 检查数据是否存在
boolean exists = result.getExists();
System.out.println("数据是否存在: " + exists);

获取整行数据

功能:获取指定行的所有列族和列的数据。
方法签名:
public Result get(Get get);
参数:
get:Get 对象,指定要获取的行键。
示例:
// 获取整行数据
Get get = new Get(Bytes.toBytes("row1"));
Result result = table.get(get);

获取指定列族的所有列

功能:获取指定行中某个列族的所有列的数据。
方法签名:
public Get addFamily(byte[] family);
参数:
family:列族名称。
示例:
Get getFamily = new Get(Bytes.toBytes("row1"));
getFamily.addFamily(Bytes.toBytes("cf1"));
Result familyResult = table.get(getFamily);

获取指定列

功能:获取指定行中某个列的数据。
方法签名:
public Get addColumn(byte[] family, byte[] qualifier);
参数:
family:列族名称。
qualifier:列名。
示例:
Get getColumn = new Get(Bytes.toBytes("row1"));
getColumn.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"));
Result columnResult = table.get(getColumn);

获取多个列

功能:获取指定行中多个列的数据。
方法签名:
public Get addColumn(byte[] family, byte[] qualifier);
参数:
family:列族名称。
qualifier:列名。
示例:
Get getMultiple = new Get(Bytes.toBytes("row1"));
getMultiple.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"));
getMultiple.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col2"));
getMultiple.addColumn(Bytes.toBytes("cf2"), Bytes.toBytes("col3"));
Result multipleResult = table.get(getMultiple);

获取指定版本的数据

功能:获取指定列中多个版本的数据。
方法签名:
public Get setMaxVersions(int maxVersions);
参数:
maxVersions:要获取的最大版本数。
示例:
Get getVersion = new Get(Bytes.toBytes("row1"));
getVersion.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"));
getVersion.setMaxVersions(3); // 获取最多3个版本
Result versionResult = table.get(getVersion);

获取指定时间范围的数据

功能:获取指定列中某个时间范围内的数据。
方法签名:
public Get setTimeRange(long minStamp, long maxStamp);
参数:
minStamp:时间范围的最小时间戳。
maxStamp:时间范围的最大时间戳。
示例:
Get getTimeRange = new Get(Bytes.toBytes("row1"));
getTimeRange.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"));
getTimeRange.setTimeRange(System.currentTimeMillis() - 3600000, System.currentTimeMillis());
Result timeRangeResult = table.get(getTimeRange);

mutate

Mutate 操作用于对数据进行修改,主要包括以下四种操作:
1. Put:插入或更新数据。
2. Delete:删除数据。
3. Append:追加数据。
4. Increment:递增数据。

Put操作

功能:插入或更新数据。
方法签名:
public Put addColumn(byte[] family, byte[] qualifier, byte[] value);
public Put addColumn(byte[] family, byte[] qualifier, long timestamp, byte[] value);
参数:
family:列族名称。
qualifier:列名。
value:列值。
timestamp(可选):时间戳。
示例:
// 1. 基础 Put 操作
Put put = new Put(Bytes.toBytes("row1"));
put.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"), Bytes.toBytes("value1"));
put.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col2"), Bytes.toBytes("value2"));
table.put(put);

// 2. 带时间戳的 Put
Put putWithTimestamp = new Put(Bytes.toBytes("row1"));
long timestamp = System.currentTimeMillis();
putWithTimestamp.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"), timestamp, Bytes.toBytes("value1"));
table.put(putWithTimestamp);

Delete 操作

功能:删除数据。
方法签名
public Delete addColumn(byte[] family, byte[] qualifier);
public Delete addColumn(byte[] family, byte[] qualifier, long timestamp);
public Delete addColumns(byte[] family, byte[] qualifier);
public Delete addFamily(byte[] family);
参数
family:列族名称。
qualifier:列名。
timestamp(可选):时间戳。
示例
// 1. 删除整行
Delete deleteRow = new Delete(Bytes.toBytes("row1"));
table.delete(deleteRow);

// 2. 删除指定列族
Delete deleteFamily = new Delete(Bytes.toBytes("row1"));
deleteFamily.addFamily(Bytes.toBytes("cf1"));
table.delete(deleteFamily);

// 3. 删除指定列
Delete deleteColumn = new Delete(Bytes.toBytes("row1"));
deleteColumn.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"));
table.delete(deleteColumn);

// 4. 删除指定版本
Delete deleteVersion = new Delete(Bytes.toBytes("row1"));
deleteVersion.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"), timestamp);
table.delete(deleteVersion);

// 5. 删除列的所有版本
Delete deleteAllVersions = new Delete(Bytes.toBytes("row1"));
deleteAllVersions.addColumns(Bytes.toBytes("cf1"), Bytes.toBytes("col1"));
table.delete(deleteAllVersions);

Append 操作

功能:在现有数据的基础上追加数据。
方法签名
public Append add(byte[] family, byte[] qualifier, byte[] value);
参数
family:列族名称。
qualifier:列名。
value:要追加的值。
示例
// 1. 基础 Append 操作
Append append = new Append(Bytes.toBytes("row1"));
append.add(Bytes.toBytes("cf1"), Bytes.toBytes("col1"), Bytes.toBytes("_appended"));
Result appendResult = table.append(append);

// 2. 多个列的 Append
Append appendMultiple = new Append(Bytes.toBytes("row1"));
appendMultiple.add(Bytes.toBytes("cf1"), Bytes.toBytes("col1"), Bytes.toBytes("_suffix1"));
appendMultiple.add(Bytes.toBytes("cf1"), Bytes.toBytes("col2"), Bytes.toBytes("_suffix2"));
Result appendMultipleResult = table.append(appendMultiple);

Increment 操作

功能:对数值类型的列进行递增操作。
方法签名
public Increment addColumn(byte[] family, byte[] qualifier, long amount);
参数
family:列族名称。
qualifier:列名。
amount:递增的数值。
示例:
// 1. 基础 Increment 操作
Increment increment = new Increment(Bytes.toBytes("row1"));
increment.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("counter"), 1L);
Result incrementResult = table.increment(increment);

批量操作

批量操作用于批量处理数据,支持对多个行进行 Put、Get、Delete 等操作,或者混合多种操作。批量操作可以减少网络开销,提高数据处理的效率。

批量 Put 操作

功能:批量插入或更新数据。
方法签名:
public void put(List<Put> puts);
参数:
puts:包含多个 Put 对象的列表。
示例
List<Put> puts = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Put put = new Put(Bytes.toBytes("row" + i));
put.addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"), Bytes.toBytes("value" + i));
puts.add(put);
}
table.put(puts);


批量 Get 操作

功能:批量获取数据。
方法签名:
public Result[] get(List<Get> gets);
参数:
gets:包含多个 Get 对象的列表。
示例:
List<Get> gets = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Get get = new Get(Bytes.toBytes("row" + i));
gets.add(get);
}
Result[] results = table.get(gets);


批量 Delete 操作

功能:批量删除数据。
方法签名:
public void delete(List<Delete> deletes);
参数:
deletes:包含多个 Delete 对象的列表。
示例:
List<Delete> deletes = new ArrayList<>();
for (int i = 0; i < 100; i++) {
Delete delete = new Delete(Bytes.toBytes("row" + i));
deletes.add(delete);
}
table.delete(deletes);

混合批量操作

功能:支持在一个批量操作中混合 Put、Get、Delete、Increment 等多种操作。
方法签名:
public Object[] batch(List<? extends Row> actions, Object[] results);
参数:
actions:包含多个 Row 对象(如 Put、Get、Delete、Increment)的列表。
results:用于存储操作结果的数组。
示例
List<Row> actions = new ArrayList<>();
actions.add(new Put(Bytes.toBytes("row1")).addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("col1"), Bytes.toBytes("value1")));
actions.add(new Get(Bytes.toBytes("row2")));
actions.add(new Delete(Bytes.toBytes("row3")));
actions.add(new Increment(Bytes.toBytes("row4")).addColumn(Bytes.toBytes("cf1"), Bytes.toBytes("counter"), 1L));

Object[] results = new Object[actions.size()];
table.batch(actions, results);


帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈