deleteRecord

#删除一条语句

逻辑sql语句

delete from  t SELECT whre a= 100;

逻辑上记录

删除记录

隔离性

删除的记录在 REPEATABLE READ 隔离级别下是继续可以看到的
但是在 read Commit隔离级别下,是不可以看到的。

数据库锁

只要是对表记录的修改,会自动一个添加一个事务,即使不显示的声明,mysql 也会给你加上一个事务
所以insert 语句自动加锁, 如果这个时候有人执行了 select for update 操作,或者修改操作导致
范围加锁则会导致 update 语句插入等待,默认10s内获取不到锁则抛出异常。

物理

double write

数据缓存先进入double weite,再写入相应的数据页

ibddata1

删除相应的所有索引,主键素银、唯一索引、辅助索引,由于是B+树结构,删除索引的操作还是
比较重的,特别是涉及到合并索引、拆分索引节点的话。

t.bid

在双向链表中,找到具体的数据,然后deleteFlag标记为1,等待专门的进程去最终删除数据,并且把
节点挂到freeList上面,进行复用。所以大量删除也有可能是造成内存碎片化的一个原因。

redolog

重做日志包含,删除的数据记录、插入的索引

undolog

对应的反向操作 ,插入语句

insert into t SELECT 100,100,100,100;

重做日志

binlog

就是insert 语句,这里就不再列出了,太长了,大家可以使用
mysqlbinlog -vv binlog.000004 语句去观察,但是需要注意的是 binglog
有三种不同的记录方式,statement、row、mixed,其内容是不一样的。

总结

删除很简单,但是有的时候回变成新能杀手。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值