MySQL表归档(冷备)方案
2022-03-20 本文已影响0人
HachiLin
相信好多公司都会抓系统的慢sql,慢sql会导致数据库的压力大,拖慢接口的查 询速率。
解决慢sql主要有三种方式:
1)优化sql 2)优化代码 3)大表进行归档
其中,1)和2)是要根据自己系统和sql进行针对性优化,取决于你的业务场景。今天我想讲的是方法3),对于一个大表而言,如果只是用到新增数据,历史数据就可以考虑进行归档。归档方案如下
1.SQL脚本
ALTER TABLE XXX RENAME TO XXX_20220314;
CREATE TABLE IF NOT EXISTS XXX like XXX_20220314;
ALTER TABLE `db`.`XXX`
ADD INDEX `idx_XX`(`col1`, `col2`, ...) USING BTREE; // 新增原先表索引
2.回滚方案
ALTER TABLE XXX RENAME TO XXX_rollback;
ALTER TABLE XXX_20220314 RENAME TO XXX;
INSERT INTO XXX SELECT * FROM XXX_rollback; // 插入新增数据