innodb purge--二级索引

本文详细介绍了InnoDB存储引擎中二级索引的清理(purge)过程,包括乐观删除和悲观删除策略。当空间不足时,悲观删除可能失败,允许最多尝试100次。purge操作不会改变索引结构,通过主键值查找聚集索引记录,结合记录的删除标记及历史记录状态来决定二级索引记录是否可删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、流程:

row_purge_remove_sec_if_poss
    if (row_purge_remove_sec_if_poss_leaf(node, index, entry)) {
        return;
    }
retry:
    success = row_purge_remove_sec_if_poss_tree(node, index, entry);
    if (!success && n_tries < BTR_CUR_RETRY_DELETE_N_TIMES) {
	n_tries++;
	os_thread_sleep(BTR_CUR_RETRY_SLEEP_TIME);
	goto retry;
    }

二级索引purge时,同样先乐观删除,乐观删除失败再进行悲观删除。由于缺少空间导致悲观删除失败,再进行删除的次数是100次。

2、purge不会造成树结构改变

row_purge_remove_sec_if_poss_leaf
    //搜索二级索引树中是否有undo log构造的二级索引记录
    search_result = row_search_index_entry(index, entry, mode, &pcur, &mtr);
    switch (search_result) {
    case ROW_FOUND:
        if (row_purge_poss_sec(node, index, entry)) {//判断二级索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzs87

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值