|
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 性能优化的最佳20多条经验分享
- MySQL配置文件my.cnf参数优化和中文详解
- MySQL Order by 语句用法与优化详解
- MySQL优化必须调整的10项配置
- 浅谈MySQL中优化sql语句查询常用的30种方法
- MySQL 百万级分页优化(Mysql千万级快速分页)
- MySQL性能优化之max_connections配置参数浅析
- MySQL查询优化之explain的深入解析
- 优化Mysql数据库的8个方法
- sql语句优化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的语句
- mysql下优化表和修复表命令使用说明(REPAIR TABLE和OPTIMIZE TABLE)
- 浅析Mysql Join语法以及性能优化
- MYSQL 优化常用方法
- mysql优化连接数防止访问量过高的方法
- SQLServer 优化SQL语句 in 和not in的替代方案
- SQL SERVER性能优化综述(很好的总结,不要错过哦)
- mysql优化配置参数
- SQL语句优化之JOIN和LEFT JOIN 和 RIGHT JOIN语句的优化
(编辑:安卓应用网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|