记一次MySql的数据拆分

栏目: 数据库 · 发布时间: 6年前

内容简介:早上上班的时候,查询数据突然发现比较慢,于是去查看数据库,结果发现表数据已经达到了千万级别,于是就准备拆分一下数据表.由于数据表 table_one 数据非常庞大,并且线上业务也在不定时的往表里写入数据,所以这里不会考虑数据迁移.这里采用的方式为数据分类: 历史冷数据 和 近期热数据 .

前言

早上上班的时候,查询数据突然发现比较慢,于是去查看数据库,结果发现表数据已经达到了千万级别,于是就准备拆分一下数据表.

思路

由于数据表 table_one 数据非常庞大,并且线上业务也在不定时的往表里写入数据,所以这里不会考虑数据迁移.

这里采用的方式为数据分类: 历史冷数据 和 近期热数据 .

通过一定的业务条件将 table_one 中的数据进行分类 ,最终形成的分类比例为 10(历史) : 1(近期) ,或者历史冷数据更大.

步骤

  1. 改表名: 修改原数据表名 table_one 改为 table_old ,即使 table_one 中的数据非常庞大,但是改表也是毫秒级的.
  2. 创建新表: 重新创建一张新表 table_one , 如果线上业务有数据处理,它也会进入到新表中.这里的 AUTO_INCREMENT 设置为 10005000 预留了 5000 容错数据 .
  3. 批量新增: 根据数据分类的条件 (这里是 type = 1) ,将 近期热数据 写入到 table_one 中 .这里值得注意的是,查询新增的数据不能大于 MySQL 的最大内存值.(数据大约为 500万条),否则会出现 Out of memory .
  4. 检测 table_old 中符合条件的最大ID,是否在 table_one 中
  5. 如果没有数据,则根据 table_old 和 table_one 中的 id 差集 ,新增没有的数据

实现

-- 1.改表名
ALTER TABLE `table_one` RENAME TO `table_old`;

-- 2.创建新表 table_one , AUTO_INCREMENT 扩大一定的范围
CREATE TABLE `table_one` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL DEFAULT '' COMMENT '名称',
`type` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '类型',
PRIMARY KEY (`id`),
KEY `type` (`type`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10005000 DEFAULT CHARSET=utf8 COMMENT='原始表';

-- 3.批量新增
INSERT INTO `talbe_one` (`id`,`name`,`type`)
SELECT * FROM `table_old` WHERE type = 1 ;

-- 4.检测 table_old 中符合条件的最大ID,是否在 table_one 中
SELECT * FROM `table_one` WHERE id = (
SELECT MAX(id)  FROM `table_old` WHERE type = 1
)

-- 5.如果没有数据,则根据 table_old 和 table_one 中的 id 差集 ,新增没有的数据

Tips : 数据拆分的方式有很多,具体还是要看自己的业务数据和业务场景 !


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

运营其实很简单:互联网运营进阶之道

运营其实很简单:互联网运营进阶之道

郑文博 / 人民邮电出版社 / 2018-2 / 49.80元

为了帮助从事运营或即将从事运营的广大读者更好、更快地了解运营、学习运营、入职运营,本书详细阐述运营对于用户、企业的帮助,同时以单个理论点 单个实战案例的方式详细分析了社群运营、活动运营、新媒体运营、内容运营、渠道运营、精细化运营、场景化运营、用户化运营、商业化运营等模块及运营工作、渠道整合、社群知识、渠道优化、SOP流程等细节,力求让读者在求职路上快速上手,在迷茫途中快速定位。 《运营其实很简单 ......一起来看看 《运营其实很简单:互联网运营进阶之道》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

SHA 加密
SHA 加密

SHA 加密工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具