MySQL表空间碎片整理

MySQL源码分析
yzs87

MySQL可以使用alter table tn engine=innodb语句进行表空间碎片整理。而页内记录并不是物理有序的,并且删除记录后,被删除的记录放到页内free链表,可能会产生很多空洞。alter table命令会重建表,这样的话,猜测可能扫描老表页内说有数据,一个一个的插入到新表中。是不是这个过程呢?跟踪了下堆栈:

(gdb) bt
#0  btr_cur_optimistic_insert (flags=23, cursor=0xa34a4074, offsets=0xa34a40b4, heap=0xa34a40dc, entry=0xa6b72c8, 
    rec=0xa34a40b8, big_rec=0xa34a40bc, n_ext=0, thr=0x0, mtr=0xa34a3c04)
    at /home/mysql26/mysql-5.6.26/storage/innobase/btr/btr0cur.cc:1241
#1  0x087c006c in row_merge_insert_index_tuples (trx_id=9503, index=0xa6b7ca8, old_table=0xa4df530, fd=35, 
    block=0x9d232000 "\002") at /home/mysql26/mysql-5.6.26/storage/innobase/row/row0merge.cc:2519
#2  0x087c3c5e in row_merge_build_indexes (trx=0xa63a358, old_table=0xa4df530, new_table=0xa625f20, online=true, 
    indexes=0xa640d20, key_numbers=0xa640d28,
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值