MYSQL性能优化--不停机分表,修改mysql表结构
来源:互联网 发布:人工智能带来的问题 编辑:程序博客网 时间:2024/04/30 14:57
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;
很明显,一个主表(也就是很重要的表,例如用户表)无限制的增长势必严重影响性能,分库与分表是一个很不错的解决途径,也就是性能优化途径,现在的案例是我们有一个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期间表是被锁死的,所以选择在线少的时候操作。
0 0
- MYSQL性能优化--不停机分表,修改mysql表结构
- 数据库性能优化-不停机分表
- MySQL修改表结构及SQL性能优化
- MySQL 修改表结构性能问题
- MySQL 数据库性能优化之表结构
- MySQL 数据库性能优化之表结构
- MYSQL分表优化
- mysql 性能优化索引、缓存、分表、分布式实现方式。
- MySQL 数据库性能优化——表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL数据库性能优化之表结构优化
- MySQL数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL数据库性能优化之表结构优化
- MySQL 数据库性能优化之(二)表结构优化
- MySQL 数据库性能优化之表结构优化
- MySQL 数据库性能优化之表结构优化
- 【uniq】报告重复的行(在linux中系统认为只有相邻并且一摸一样的行才认为是从复的行)
- C++第三次作业
- java 中的 reference
- 关于SQLite,java.lang.IllegalStateException: attempt to re-open an already-closed object
- Unity C# 序列化 保存物体信息
- MYSQL性能优化--不停机分表,修改mysql表结构
- CMakeListx.txt 编辑语法学习
- java开发常用工具类
- Fragment中使用listview
- 【图论知识点】【学习笔记】ICM-ICPC程序设计系列-图论及应用——第一章、图【未更新完毕】
- 读书笔记,不定期更新,复习一下基础概念
- 使用libevent编写高并发HTTP server
- sql 优化
- Android动画——Tween动画之Translate