MYSQL性能优化之分库分表与不停机修改mysql表结构
来源:互联网 发布:淘宝卖家中心入口 编辑:程序博客网 时间:2024/05/17 06:49
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(phpmyadmin)中看到的
数字根本不能作为条件来查询。
*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(phpmyadmin)中看到的
数字根本不能作为条件来查询。
0 0
- MYSQL性能优化之分库分表与不停机修改mysql表结构
- 不停机修改mysql表结构
- MySQL 数据库性能优化之表结构
- MySQL 数据库性能优化之表结构
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL数据库性能优化之表结构优化
- MySQL数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL数据库性能优化之表结构优化
- MySQL 数据库性能优化之(二)表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之二(表结构优化)
- HashSet中是如何判断元素是否重复的
- ubuntu搭载tftp服务器
- 根据作用域来确定恰当的变量引用
- 结构(struct)指针详解
- cocos2dx 疑难解答
- MYSQL性能优化之分库分表与不停机修改mysql表结构
- 关于项目管理
- win2003 + wamp Access denied for user 'root'@'localhost'
- Tomcat6.0 web工程用IP登录,省去端口号和项目名称
- java正则表达式语法
- UVA 11210 - Chinese Mahjong(暴力枚举)
- poj3090 Visible Lattice Points 欧拉函数的应用
- 开啦!
- 玩转Google开源C++单元测试框架Google Test系列(gtest)之六 - 运行参数