MySQL优化(一):MySQL分库分表
一、分库分表种类
1、垂直拆分
在考虑数据拆分的时候,一般情况下,应该先考虑垂直拆分。垂直可以理解为分出来的库表结构是互相独立各不相同的、
- 如果有多个业务,每个业务直接关联性不大,那么就可以把每个业务拆分为独立的实例、库或表。
- 如果在一个库里面有多张表,那么可以把每张表拆分到不同的实例上。
- 如果你有一张表,但这个表里的字段很多,每个字段都有不同的含义,例如user表里面有姓名、生日、地址等,那么可以把每个字段独立出来拆分为一张新表。
2、水平拆分
水平拆分是针对一张表来说的。在经过垂直拆分之后,如果数据量依然很大,那么可以通过某种算法进行水平拆分。拆分后具有多张相同表结构的表,每张表存储一部分数据。
二、分库分表原则
1、原则1:能不分就不分
MySQL是关系型数据库,数据库表之间的关系从一定角度映射了业务逻辑。任何分库分表的行为都会提升业务逻辑的复杂度,数据库除了承载数据的存储和访问外,协助业务更好地实现需求和逻辑也是其重要的工作之一。分库分表会带来数据的合并、查询、更新条件的分离,以及事物的分离等多种后果,业务实现的复杂度往往会翻倍或指数级上升。所以在分表分库之前,应先升级硬盘、内存、CPU、网络、版本、读写分离、负载均衡及SQL语句优化。
2、原则2:数据量太大,正常的运维影响业务访问
正常运维主要包括:
- 数据库的备份
- 数据表的修改
- 热点数据
3、原则3:表设计不合理
- 某个表字段不断被update,压力非常大
- 某个表字段存在TEXT或BLOB字段
4、原则4:某些数据表出现了无穷增长的情况
各种评论、消息、日志记录表现为不可控的增长,此时可按用户、时间、用途等进行水平拆分。
MySQL优化(一):MySQL分库分表的更多相关文章
- 【MySQL】数据库(分库分表)中间件对比
		
分区:对业务透明,分区只不过把存放数据的文件分成了许多小块,例如mysql中的一张表对应三个文件.MYD,MYI,frm. 根据一定的规则把数据文件(MYD)和索引文件(MYI)进行了分割,分区后的表 ...
 - Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案
		
一.前言 在前面的文章Mysql系列四:数据库分库分表基础理论中,已经说过分库分表需要应对的技术难题有如下几个: 1. 分布式全局唯一id 2. 分片规则和策略 3. 跨分片技术问题 4. 跨分片事物 ...
 - Mycat数据库中间件对Mysql读写分离和分库分表配置
		
Mycat是一个开源的分布式数据库系统,不同于oracle和mysql,Mycat并没有存储引擎,但是Mycat实现了mysql协议,前段用户可以把它当做一个Proxy.其核心功能是分表分库,即将一个 ...
 - 3.Mysql集群------Mycat分库分表
		
前言: 分库分表,在本节里是水平切分,就是多个数据库里包含的表是一模一样的. 只是把字段散列的分到不同的库中. 实践: 1.修改schema.xml 这里是在同一台服务器上建立了4个数据库db1,db ...
 - MySQL:互联网公司常用分库分表方案汇总!
		
转载别人 一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用 ...
 - MySQL:互联网公司常用分库分表方案汇总!
		
一.数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值.在业务Service来看就是,可用数据库连接少甚至无连接可用.接下来就 ...
 - MySQL系列(八)--数据库分库分表
		
在互联网公司或者一些并发量比较大的项目,虽然有各种项目架构设计.NoSQL.MQ.ES等解决比较高的并发访问,但是对于数据库来说,压力 还是太大,这时候即使数据库架构.表结构.索引等都设计的很好了,但 ...
 - 数据字符集mysql主从数据库,分库分表等笔记
		
文章结束给大家来个程序员笑话:[M] 1.mysql的目录:在rpm或者yum安装时:/var/lib/mysql 在编译安装时默许目录:/usr/local/mysql 2.用rpm包安装的MyS ...
 - MySQL主从复制&读写分离&分库分表
		
MySQL主从复制 MySQL的主从复制只能保证主机对外提供服务,从机是不提供服务的,只是在后台为主机进行备份数据 首先我们说说主从复制的原理,这个是必须要理解的玩意儿: 理解: MySQL之间的数据 ...
 - 【MySQL】如何解决分库分表遇到的自增主键的问题?
		
雪花算法 Redis生成主键
 
随机推荐
- Bootstrap学习笔记(5)--实现Bootstrap导航条可点击和鼠标悬停显示下拉菜单
			
实现Bootstrap导航条可点击和鼠标悬停显示下拉菜单 微笑的鱼 2014-01-03 Bootstrap 5,281 次围观 11条评论 使用Bootstrap导航条组件时,如果你的导航条带有下拉 ...
 - JQuery元素选择
			
1.基本元素选择器 $(“p”) //选取<p>元素 $(“p.info”) //选取所有class=”info”的<p>元素 $(“p#demo”) //选取id=”demo ...
 - IOS  中微信  网页授权报 key[也就是code]失效  解决办法
			
枪魂微信平台ios手机点击返回 网页授权失败,报key失效.已经解决,原因是授权key只能使用一次,再次使用就会失效. 解决办法:第一次从菜单中进行授权时,用session记录key和open_id. ...
 - 【BZOJ】1697: [Usaco2007 Feb]Cow Sorting牛排序(置换群)
			
http://www.lydsy.com/JudgeOnline/problem.php?id=1697 置换群T_T_T_T_T_T_T 很久以前在黑书和白书都看过,,,但是看不懂... 然后找了本 ...
 - ThinkPHP项目笔记之RBAC(权限)下篇
			
接着谈谈:添加用户以及用户管理列表 e.添加用户
 - 【MongoDB】嵌套数组查询方案
			
From:http://stackoverflow.com/questions/12629692/querying-an-array-of-arrays-in-mongodb 数据 db.multiA ...
 - php7 宏杂记
			
php.h zend_api.h ZEND_FN(name) ---> zif_##name PHP_FUNCTION(name) ...
 - Mock利器:PowerMock
			
powerMock不仅支持接口mock,final类.静态类.静态方法.私有方法都支持mock,还是很强大的: 1.gradle引用: myonlycompile('org.powermock:pow ...
 - numpy生成随机数
			
如果你想说,我不想知道里面的逻辑和实现方法,只想要python生成随机数的代码,请移步本文末尾,最简单的demo帮你快速获取实现方法. 先开始背景故事说明: 在数据分析中,数据的获取是第一步,nump ...
 - 【读书笔记】iOS-ARC-环境下怎样查看引用计数的变化
			
一.新建立一个project.用于測试引用计数的变化. 二,找到例如以下路径Build Phases---->Compile Sources---->AppDelegate.m 三,选中A ...