SequoiaDB 简介
快速入门
安装部署
数据库实例
分布式引擎
SAC 管控中心
SequoiaPerf 性能分析工具
参考手册
常见问题及解答(FAQ)
版本信息
truncate - 删除集合内所有数据
db.collectionspace.collection.truncate([options])
SdbCollection
该函数用于删除集合内所有数据(包括普通文档和 LOB 数据),但不会影响其元数据。与 remove 需要按照条件筛选目标不同,truncate 会直接释放数据页,在清空集合(尤其是大数据量下)数据时效率比 remove 更加高效。
Note:
如有自增字段,truncate 后字段序列值将会重置。
options( object,选填 )
通过 options 可以设置其他选填参数:
SkipRecycleBin( boolean ):是否禁用回收站机制,默认是 false,表示根据字段 Enable 的值决定是否启用回收站机制
该参数取值为 true,表示删除集合时将不生成对应的回收站项目。
格式:SkipRecycleBin: true
函数执行成功时,无返回值。
函数执行失败时,将抛异常并输出错误信息。
truncate()
函数常见异常如下:
错误码 | 错误类型 | 可能发生的原因 | 解决办法 |
---|---|---|---|
-23 | SDB_DMS_NOTEXIST | 集合不存在 | 检查集合是否存在 |
-386 | SDB_RECYCLE_FULL | 回收站已满 | 检查回收站是否已满,并通过 dropItem() 或 dropAll() 手动清理回收站 |
当异常抛出时,可以通过 getLastErrMsg() 获取错误信息或通过 getLastError() 获取错误码。更多错误处理可以参考常见错误处理指南。
v2.0 及以上版本
集合 sample.employee 中插入了普通数据和 LOB 数据,通过快照查看其数据页使用情况
> db.snapshot(SDB_SNAP_COLLECTIONS) { "Name": "sample.employee", "Details": [ { "GroupName": "datagroup", "Group": [ { "ID": 0, "LogicalID": 0, "Sequence": 1, "Indexes": 1, "Status": "Normal", "TotalRecords": 10000, "TotalDataPages": 33, "TotalIndexPages": 7, "TotalLobPages": 36, "TotalDataFreeSpace": 41500, "TotalIndexFreeSpace": 103090 } ] } ] }
上例中可以看到其中数据页为 33,索引页为 7,LOB 页为 36,下面执行 truncate 操作
> db.sample.employee.truncate()
再次通过快照查看数据页使用情况,可以查看除索引页为 2(存储了索引的元数据信息)外,其余数据页已经全部被释放了
> db.snapshot(SDB_SNAP_COLLECTIONS) { "Name": "sample.employee", "Details": [ { "GroupName": "datagroup", "Group": [ { "ID": 0, "LogicalID": 0, "Sequence": 1, "Indexes": 1, "Status": "Normal", "TotalRecords": 0, "TotalDataPages": 0, "TotalIndexPages": 2, "TotalLobPages": 0, "TotalDataFreeSpace": 0, "TotalIndexFreeSpace": 65515 } ] } ] }