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

 更新时间:2012年02月27日 22:17:37   作者:  
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同学的新鲜分享。

相关文章

  • 详谈mysql order by in 的字符顺序(推荐)

    详谈mysql order by in 的字符顺序(推荐)

    下面小编就为大家带来一篇详谈mysql order by in 的字符顺序(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • 登录MySQL数据库最快几步(图文步骤详解)

    登录MySQL数据库最快几步(图文步骤详解)

    当 MySQL 服务开启后,就可以通过客户端来登录 MySQL 数据库了。在 Windows 操作系统下可以使用 DOS 命令登录数据库,本节将介绍使用命令方式登录 MySQL 数据库的方法
    2023-10-10
  • mysql 重要日志文件汇总

    mysql 重要日志文件汇总

    这篇文章主要介绍了mysql 重要日志文件的汇总,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2020-11-11
  • MySQL 4种常用的主从复制架构

    MySQL 4种常用的主从复制架构

    这篇文章主要介绍了MySQL 4种常用的主从复制架构,帮助大家更好的理解和学习MySQL,感兴趣的朋友可以了解下
    2020-08-08
  • MySQL日期及时间字段的查询

    MySQL日期及时间字段的查询

    这篇文章主要介绍了MySQL日期及时间字段的查询,一分享日期及时间字段的规范化查询方法为主展开详细内容,需要的小伙伴可以参考一下
    2022-05-05
  • mysql 5.7.14 安装配置代码分享

    mysql 5.7.14 安装配置代码分享

    这篇文章主要为大家分享了CentOS 6.6下mysql 5.7.13winx64安装配置方法图文教程,感兴趣的朋友可以参考一下
    2016-09-09
  • MySQL中关于datetime、date、time、str之间的转化与比较

    MySQL中关于datetime、date、time、str之间的转化与比较

    这篇文章主要介绍了MySQL中关于datetime、date、time、str之间的转化与比较,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • MySQL子查询的空值问题解决

    MySQL子查询的空值问题解决

    本文主要介绍了MySQL子查询的空值问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • mysql5.6安装配置方法图文教程

    mysql5.6安装配置方法图文教程

    这篇文章主要为大家分享了mysql5.6安装配置方法图文教程,感兴趣的朋友可以参考一下
    2016-06-06
  • SQL实现数据过滤流程详解

    SQL实现数据过滤流程详解

    这篇文章主要介绍了SQL实现数据过滤流程,当我们在SQL中查询数据时,肯定是有一些数据是我们不需要的,所以我们此时就要对数据进行过滤,以筛选出我们仅需要的数据
    2023-01-01

最新评论