这里的CollapsingMergeTree表引擎的话主要特色是体现在数据的新增和删除上。在这种表引擎里面,如果要实现删除操作的话,则也是以新增的方式进行,只是在新增的时候添加一个标志位的形式。在CollapsingMergeTree表引擎里面,标志位如果是1的话,则代表当前数据有效,标志位如果是-1的话,则代表数据无效,这就像现在的newsql一样,都是以追加的方式来删除数据。下面我们来演示一下:
#创建一张名称为users的表,然后设定del_flag为标志位。一定要注意,这里标志位的类型必须要是Int8类型 CREATE TABLE if not exists test.users( uid UInt8, name String, del_flag Int8 ) ENGINE = CollapsingMergeTree(del_flag) primary key uid ORDER BY uid; #插入数据 insert into test.users values(1,'张三',1); insert into test.users values(2,'李四',1); #查询数据 select * from test.users
这里的查询结果是:
#再插入id为1,标志位为-1的数据 select * from test.users; #查询数据 select * from test.users;
此时查询的数据还没有合并,我们手动合并下
#手动合并数据块 optimize table test.users; #查询数据 select * from test.users;
此时我们就看到主键uid为1的数据被删除了。
以上就是CollapsingMergeTree表引擎的用法。
还没有评论,来说两句吧...