`

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分库分表php类

    一个MySQL分库分表php类。当一个表数据记录过大时就会出现性能瓶颈,而一般对应的解决办法是要么做分区表,要么分表,分区表就不说了,分表又分为垂直分割和水平分割,具体区 别请自行搜索。一般而言,分库分表属于...

    MySQL性能优化及高可用架构设计 教程

    主要内容:MySQL性能介绍,MySQL基准测试,MySQL数据库结构优化, MySQL高可用架构设计, 数据库索引优化, SQL查询优化,数据库的分库分表,数据库监控

    Python+MySQL分表分库实战 - v1.0 - 运维生存时间 -(2016).mobi

    Python后端运维工程师的可靠参考书,重点介绍如何优化mysql数据库性能。

    程序员面试刷题的书哪个好-mysqlsplit:mysql分库分表,分布式事务

    分库分表 基本分库分表: 1:分库分表 2:分库表冗余 3:分区表 分布式事务 1:XA分布式事务 2:TCC分布式事务 3:消息分布式事务 Mycat分片规则 Mycat读写分离 Mycat故障切换 Mycat+Percona+Haproxy+keepalived Zookeeper...

    mysql-7 (1).pdf

    7. 要理解为什么分库分表 8. 要理解如何分库分表 9. 什么时候选择垂直分库、什么时候选择水平分表 10. 要明白分库分表中会存在的问题 11. Mycat(录播) 12. sharding JDBC(直播)课程目标 1. 了解服务器层面的性能...

    MySQL分库分表总结讲解

    当出现这种情况时,我们可以考虑分库分表,即将单个数据库或表进行拆分,拆分成多个库和多个数据表,然后用户访问的时候,根据一定的算法与逻辑,让用户访问不同的库、不同的表,这样数据分散到多个数据表中,减少了...

    MySQL架构演变与性能优化

    基础知识介 绍 Basic knowledge 02 架构演变过 程 Architecture evolution 03 分库分表实 践 Mysql sharding 04 数据执行优 化 Query optimization

    2023MySQL高频面试题

    例如,请列举一些MySQL性能优化的方法?请简述MySQL的主从复制机制是什么?在MySQL中如何实现分库分表?等等。这些问题需要面试者具备一定的实践经验和深入理解,能够熟练地应对MySQL环境的各种问题和挑战。 除了...

    mysql面试题 MySQL面试题 数据库面试题 SQL面试题

    mysql, 面试题, 数据库, 数据管理, 数据库管理, 数据库设计, sql, 数据查询, 数据库优化, 数据库安全, 数据库备份, 数据库恢复, 数据库性能, 数据库索引, 数据库事务, 数据库存储引擎, 数据库连接池, 数据库分库分表...

    MySQL优化笔记-整理版.doc

    “分表分库”(用什么策略分表分库?) “主从分离”(用什么中间件?) 并没有从细化到定量的层面去分析. 如qps提高了%N? 有没有减少文件排序?语句的扫描行数减少了多少? 没有大量的数据供测试,一般在学习环境中,只是...

    MySql HA.docx

    Mysql主从复制,MySQL读写分离(Mycat和ShardingJdbc两种方式),MySQL索引(数据结构和失效原因),MySqL性能优化(慢查询),MySQL分库分表(Mycay和ShardingJdbc),MySqL集群问题

    mysql 单机数据库优化的一些实践

    数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表。另外,一般大企业面试往往会从单机数据库问起,...

    mysql面试题-mysql经典面试题目-数据库的基本概念-SQL语法-事务处理-索引优化-性能调优-mysql-面试题目

    列举一些常见的数据库性能优化方法。 什么是数据库表关联?列举一些常见的表关联类型。 什么是数据库存储过程和触发器?它们的作用和使用场景是什么? 什么是数据库视图?它的作用和使用场景是什么? 什么是...

    MySQL学习笔记

    MySQL性能监控,索引SQL优化,慢查询、分库分表、半同步复制,读写分离

    mysql数据库分表分库的策略

    一、先说一下为什么要分表: 当一张的数据达到几百万时,你...数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作

    MySQL 思维导图.mmap

    Mysql的思维导图, 包含SQL,SQL语法顺序以及解析顺序,查询原理, 以及Mysql的架构分析和执行流程分析 索引,索引失效,查询优化, 存储过程,视图,触发器 ...分库分表。 Mysql完整知识链。

    MySQL.xmind

    学习Mysql整理复习的思维导图,涵盖Web开发程序员需要掌握的大部分关于Mysql的知识,从基础篇,架构篇,索引篇,锁和事务篇,性能分析优化篇,集群分库分表篇等深入理解Mysql数据库的底层原理。

Global site tag (gtag.js) - Google Analytics