【StoneDB研发日志】列式存储 delete方案调研

MySQL删除数据的方式

以MySQL 5.7为例,数据库删除数据的方式一共有以下三种:

  1. delete
  2. truncate
  3. drop

以上三种方式都可以删除数据,但是使用场景是不同的。 对于整个表进行删除的执行速度来说: drop > truncate >> delete

MySQL删除数据的方式-delete

delete是属于数据库的DML操作语言,一般是根据条件逐行进行删除。 使用delete删除数据时,数据库只能删除数据不能删除表的结构,并且会触发数据库的事务机制。 delete执行时,会先将所删除数据缓存到rollback segment中,事务commit之后生效; 在InnoDB中,使用delete其实并不会真正的把数据删除,是一种逻辑删,数据库底层实际上只是给删除的数据做了一个已删除的标记,因此,删除数据后的表占空间大小和删除前是一样的.

MySQL删除数据的方式-drop

drop属于数据库DDL定义语言,同 truncate ,执行后立即生效,无法找回。 drop table table_name立刻释放磁盘空间 ,drop 语句将删除表的结构、被依赖的约束(constraint)、触发器(trigger)、索引(index); 依赖于该表的存储过程/函数将保留,但是变为 invalid 状态。

删除数据的方式-TianMu 引擎的支持情况

目前StoneDB的TianMu引擎是支持 truncate 语句 和 drop 语句的,但是delete语句目前还不支持。

TianMu引擎需要不需要delete?

TianMu引擎设计的初衷

TianMu是一个列式存储引擎,列式存储的出现主要是为了方便快捷查询和高效存储大量同类型的数据而设计的,主要使用场景就是OLAP场景。下面是OLAP场景的部分关键特征: ①绝大多数是读请求 ②数据以相当大的批次(> 1000行)更新,而不是单行更新;或者根本没有更新。 ③已添加到数据库的数据不能修改。 ④对于读取,从数据库中提取相当多的行,但只提取列的一小部分。 ⑤列中的数据相对较小:数字和短字符串(例如,每个URL 60个字节) ⑥处理单个查询时需要高吞吐量(每台服务器每秒可达数十亿行) ⑦事务不是必须的 ⑧对数据一致性要求低

目前行业现状

支持列存储的数据库类型 是否支持delete 备注
MariaDB ColumnStore 支持
SQL Server 支持
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值