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性能介绍,MySQL基准测试,MySQL数据库结构优化, MySQL高可用架构设计, 数据库索引优化, SQL查询优化,数据库的分库分表,数据库监控
Python后端运维工程师的可靠参考书,重点介绍如何优化mysql数据库性能。
分库分表 基本分库分表: 1:分库分表 2:分库表冗余 3:分区表 分布式事务 1:XA分布式事务 2:TCC分布式事务 3:消息分布式事务 Mycat分片规则 Mycat读写分离 Mycat故障切换 Mycat+Percona+Haproxy+keepalived Zookeeper...
7. 要理解为什么分库分表 8. 要理解如何分库分表 9. 什么时候选择垂直分库、什么时候选择水平分表 10. 要明白分库分表中会存在的问题 11. Mycat(录播) 12. sharding JDBC(直播)课程目标 1. 了解服务器层面的性能...
当出现这种情况时,我们可以考虑分库分表,即将单个数据库或表进行拆分,拆分成多个库和多个数据表,然后用户访问的时候,根据一定的算法与逻辑,让用户访问不同的库、不同的表,这样数据分散到多个数据表中,减少了...
基础知识介 绍 Basic knowledge 02 架构演变过 程 Architecture evolution 03 分库分表实 践 Mysql sharding 04 数据执行优 化 Query optimization
例如,请列举一些MySQL性能优化的方法?请简述MySQL的主从复制机制是什么?在MySQL中如何实现分库分表?等等。这些问题需要面试者具备一定的实践经验和深入理解,能够熟练地应对MySQL环境的各种问题和挑战。 除了...
mysql, 面试题, 数据库, 数据管理, 数据库管理, 数据库设计, sql, 数据查询, 数据库优化, 数据库安全, 数据库备份, 数据库恢复, 数据库性能, 数据库索引, 数据库事务, 数据库存储引擎, 数据库连接池, 数据库分库分表...
“分表分库”(用什么策略分表分库?) “主从分离”(用什么中间件?) 并没有从细化到定量的层面去分析. 如qps提高了%N? 有没有减少文件排序?语句的扫描行数减少了多少? 没有大量的数据供测试,一般在学习环境中,只是...
Mysql主从复制,MySQL读写分离(Mycat和ShardingJdbc两种方式),MySQL索引(数据结构和失效原因),MySqL性能优化(慢查询),MySQL分库分表(Mycay和ShardingJdbc),MySqL集群问题
数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表。另外,一般大企业面试往往会从单机数据库问起,...
列举一些常见的数据库性能优化方法。 什么是数据库表关联?列举一些常见的表关联类型。 什么是数据库存储过程和触发器?它们的作用和使用场景是什么? 什么是数据库视图?它的作用和使用场景是什么? 什么是...
MySQL性能监控,索引SQL优化,慢查询、分库分表、半同步复制,读写分离
一、先说一下为什么要分表: 当一张的数据达到几百万时,你...数据库中的数据量不一定是可控的,在未进行分库分表的情况下,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地,数据操作
Mysql的思维导图, 包含SQL,SQL语法顺序以及解析顺序,查询原理, 以及Mysql的架构分析和执行流程分析 索引,索引失效,查询优化, 存储过程,视图,触发器 ...分库分表。 Mysql完整知识链。
学习Mysql整理复习的思维导图,涵盖Web开发程序员需要掌握的大部分关于Mysql的知识,从基础篇,架构篇,索引篇,锁和事务篇,性能分析优化篇,集群分库分表篇等深入理解Mysql数据库的底层原理。