分类: MySQL
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毫秒,尽量在业务量很低的时间段进行。


相关博文:

发表新评论