MySQL按日期分表过程记录
线上数据库历史订单记录表比较大,300多W条记录,频繁查询容易占用系统资源,按日期分表过程如下:
原表TB_BIS_POS_ORDER记录数304W
mysql> select count(1) from TB_BIS_POS_ORDER;
+----------+
| count(1) |
+----------+
| 3047600 |
+----------+
创建临时新表并复制表结构:
create table TB_BIS_POS_ORDER_new like TB_BIS_POS_ORDER;
重命名原表、改新表改名
mysql> rename table TB_BIS_POS_ORDER to TB_BIS_POS_ORDER_20170802;
Query OK, 0 rows affected (0.07 sec)
mysql> rename table TB_BIS_POS_ORDER_new to TB_BIS_POS_ORDER;
Query OK, 0 rows affected (0.02 sec)
按业务需求导入数据
mysql> INSERT INTO TB_BIS_POS_ORDER() SELECT * FROM TB_BIS_POS_ORDER_oldbak WHERE CREATE_DATE > '2017-07-15';
Query OK, 305073 rows affected (51.43 sec)
Records: 305073 Duplicates: 0 Warnings: 0
注意点:rename表的时候业务会中断0.0x毫秒,尽量在业务量很低的时间段进行。
Tag标签:「mysql 分表」更新时间:「2021-11-03 20:27:08」阅读次数:「691」