ByteHouse为您提供自增ID函数generateSnowflakeID
,可实现类似MySQL方言系统下auto_increment
函数的自增ID效果,如果数据源无法提供id,或是需要直写的场景,ByteHouse推荐您使用generateSnowflakeID
函数。本文为您介绍自增函数的实现逻辑和使用方法。
ByteHouse的ClickHouse方言系统下,generateSnowflakeID
函数基于SnowflakeID来提供自增、唯一的ID(不保证连续和紧凑)。
注意
auto_increment
,是从1开始的严格递增的唯一序列,如1, 2, 3等。generateSnowflakeID
生成的序列,能保证递增和唯一,但不保证按序增长。SnowflakeID的结构是一个 64 位的二进制数字(实际使用 63 位,以便适应有符号整数),组成如下:
SnowflakeID 是按时间排序的,因为它是基于生成时的时间。此外,可以从 SnowflakeID 中提取其生成时间,用于获取在特定日期之前或之后创建的 SnowflakeID(及其关联对象)。
命令格式
generateSnowflakeID();
命令说明
按照上文实现逻辑,返回一串十进制序列化后的自增ID数据。
使用示例
查询
SELECT generateSnowflakeID();
建表
ClickHouse方言系统:
set dialect_type='CLICKHOUSE'; CREATE TABLE t1(id Int64 DEFAULT generateSnowflakeID(), val1 String) Engine=CnchMergeTree() Order by id;
MySQL方言系统:
正确示例 | 错误示例 |
---|---|
说明 以上示例与ClickHouse方言系统下的这段示例等效:
|
|
写入
正确示例 | 错误示例 |
---|---|
|
|