MySQL两千万数据优化&迁移

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL两千万数据优化&迁移相关的知识,希望对你有一定的参考价值。

最近有一张2000W条记录的数据表需要优化和迁移。2000W数据对于MySQL来说很尴尬,因为合理的创建索引速度还是挺快的,再怎么优化速度也得不到多大提升。不过这些数据有大量的冗余字段和错误信息,极不方便做统计和分析。所以我需要创建一张新表,把旧表中的数据一条一条取出来优化后放回新表;

一. 清除冗余数据,优化字段结构

2000W数据中,能作为查询条件的字段我们是预知的。所以将这部分数据单独创建新的字段,对于有规则的数据合理改变字段结构,比如身份证就是varchar(18)。对于不重要的数据我们合并后存在一个结构为text的字段。

对于一些有关联的数据我们需要计算,常见的比如身份证种能获取到准确的性别,出生地、生日、年龄。

二. 数据迁移

我们从数据库中取出一条旧数据,再通过计算处理后得到想要的新数据(腾云科技ty300.com),最后将新数据插入新表。不过在获取新数据时遇到如下问题。

1. 数据量太大,无法一次获取(2000W数据扔到内存挺可怕的);

我们可以通过mysql的limit语法分批获取。比如每次获取50000,SQL语句如下:

select * from table_name limit 15000000,50000;

通过这种方法能解决数据量太大的问题,但是随着limit的第一个参数越来越大,查询速度会慢的吓人(上面这条SQL执行会花35秒)。时间就是生命,于是我们开始优化SQL语句,优化后变成下面这样:

稿源:勤快学QKXue.NET

完整版MySQL两千万数据优化&迁移介绍

以上是关于MySQL两千万数据优化&迁移的主要内容,如果未能解决你的问题,请参考以下文章

记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案

MYSQL千万级别数据量迁移Elasticsearch5.6.1实战

mysql 查询某个字段出现两次的数据

BATJ解决千万级别数据之MySQL 的 SQL 优化大总结

MySQL千万级别数据量优化

mysql百万数据分页查询4秒,求教怎么优化