标签:cpu 时间片 硬链接 比较 中移动 扫描 buffer pre drop dir
MySQL中删除比较大的表时,如果直接用drop table
的方式进行删除,有可能会对整个实例产生影响甚至使得实例夯住。因此可以通过硬链接的方式对表进行删除,使得对生产环境的影响降到最低。
define buf_lru_drop_search_size 1024
的话,则释放 buffer pool mutex 和 flush list mutex ,强制通过 pthread_yield 进行一次 os context switch ,释放 cpu 时间片;简单来看,整个过程可以简化为:
在整个删除表的过程中,持有了 buffer pool mutex 和 flush list mutex ,如果整个 buffer pool 比较大,或者表有较多的脏页,那么持有锁的时间会比较长,导致其他事务在用到这个 buffer pool 的时候被阻塞,现象上来看就是这个实例被夯住。
?1. 主库和从库上对表建立硬链接
ln table_1.ibd table_1.ibd.hdlk
ln table_1.frm table_1.frm.hdlk
?2. 在主库进行 drop table
drop table table_1;
?3. 在 os 层删除物理文件
rm table_1.ibd.hdlk
rm table_1.frm.hdlk
?4. 如果表达到 500G 或者上 TB,则可以用 truncate 命令进行截断删除
truncate -s 2G table_1.ibd.hdlk
标签:cpu 时间片 硬链接 比较 中移动 扫描 buffer pre drop dir
原文地址:https://www.cnblogs.com/haohaozhang/p/12236174.html