MYSQL性能优化分享(分库分表)

MYSQL性能优化之分库分表与不停机修改mysql表结构,需要的朋友可以参考下

1、分库分表

很明显,一个主表(也就是很重要的表,例如用户表)无限制的增长势必严重影响性能,分 库与分表是一个很不错的解决途径,也就是性能优化途径,现在的案例是我们有一个1000多万条记录的用户表members,查询起来非常之慢,同事的做法 是将其散列到100个表中,分别从members0到members99,然后根据mid分发记录到这些表中,牛逼的代码大概是这样子:

复制代码 代码如下:

<?php for($i=0;$i< 100; $i++ ){ //echo "CREATE TABLE db2.members{$i} LIKE db1.members<br>"; echo "INSERT INTO members{$i} SELECT * FROM members WHERE mid%100={$i}<br>"; } ?>

2、不停机修改mysql表结构

同样还是members表,前期设计的表结构不尽合理,随着数据库不断运行,其冗余数据也是增长巨大,同事使用了下面的方法来处理:

先创建一个临时表:

/*创建临时表*/

CREATE TABLE members_tmp LIKE members

然后修改members_tmp的表结构为新结构,接着使用上面那个for循环来导出数据,因为1000万的数据一次性导出是不对的,mid是主键,一个区间一个区间的导,基本是一次导出5万条吧,这里略去了

接着重命名将新表替换上去:

/*这是个颇为经典的语句哈*/

RENAME TABLE members TO members_bak,members_tmp TO members;

就是这样,基本可以做到无损失,无需停机更新表结构,但实际上RENAME期间表是被锁死的,所以选择在线少的时候操作是一个技巧。经过这个操作,使得原先8G多的表,一下子变成了2G多

另外还讲到了mysql中float字段类型的时候出现的诡异现象,就是在pma中看到的数字根本不能作为条件来查询.感谢zj同学的新鲜分享。

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2015-07-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据和云

腾讯游戏DBA利刃 - SQL审核工具介绍

作者介绍 ? 韩全安(willhan) 华中科技大学,硕士,现代数据库方向。2013年毕业,就职于腾讯到今,工作项目:TMySQL、SQL审核、InnoDB列压...

9896
来自专栏软件工程师成长笔记

9月17-MySQL性能优化

983
来自专栏Java架构解析

mysql关于ibdata文件的理解

1、默认情况下ibdata存放InnoDB表(InnoDB数据字典)元数据、undo logs、the change buffer, and the doubl...

1530
来自专栏杨建荣的学习笔记

mysqlimport导入报错的排查(r10笔记第58天)

今天有个同事问我一个mysqlimport导入的问题,看起来还是蛮奇怪的。同事在客户端导入一个文件。文件大小是2.8G,然后报错mysqlimport: Er...

3247
来自专栏大数据和云计算技术

hive拉链工具实战

这个丁延明同学写的一个实战工具,坚持用代码解决问题,推荐! 有相关业务的同学可以一起讨论,下面是正文。 ---- 1、背景 大家好 最近由于公司业务需要写了一篇...

3197
来自专栏极客慕白的成长之路

数据库系统概述必背知识点整理

1262
来自专栏程序猿

MySQL数据库优化小谈,简短。

更新文章的速度跟不上大家的热情了......,青岛的一场大雪,取暖基本靠抖了。 ? 好勒,现在写正经的。对于优化,这片文章我只说大致思路...

3447
来自专栏ImportSource

构建物化视图的两种方式

构建物化视图的两种方式 章节:nosql distilled 第三章第四节 物化视图 There are two rough strategies to b...

34115
来自专栏Python、Flask、Django

ElasticSearch 入门基本CRUD

1493
来自专栏北京马哥教育

思路决定出路 | 101个MySQL调试和优化技巧

MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化 MySQL安装的技巧...

2648

扫码关注云+社区