今天咱们来学习MYSQL的分库分表sql
分库分表是为了解决因为数据量过大而致使数据库性能下降的问题,将原来独立的数据库拆分红若干数据库组成,将数据大表拆分红若干数据表组成,使得单一数据库、单一数据表的数据量变小,从而达到提高数据性能的目的。 数据库
案例:将商品信息表和商品描述表放在商品库,店铺表放在店铺库。bash
案例:将商品表分红两个字段类型同样的商品表,分到两个不一样的服务器数据库中。服务器
垂直分库:把不一样表分到不一样的数据库中(商品表和店铺表)网络
水平分库:把不一样数据分到不一样数据库中(商品表分红两个类型同样的表分到不一样数据库中)框架
案例:将商品信息表按照访问频率分为两个表,商品信息和商品描述表 分布式
案例: 将同一个库中的商品表的数据分红两个商品表中,能够在一个或多个库中函数
垂直分表和水平分表的区别:性能
垂直分表: 将一个表按照字段访问的频次分到多个表中,能够是一个或多个数据库(分的是字段) 水平分表: 将一个表按照数据分到多个表中,能够是一个或多个数据库(分的是数据)学习
数据库代理方式访问:
非代理方式访问:SQL语句直接访问数据库服务器,比代理方式访问快。
一、解析路由(找对应数据源、表):根据业务功能、SQL解析等方式,找到要访问的数据源和表
二、执行相应表的功能(根据sql实现具体功能)
三、对查询结果集进行合并,二次处理。(合并查询结果集,执行子查询)
四、是否有事务(处理不一样方式的事务)
推荐使用DAO层实现方式
分库分表能有效的缓解单机和单库带来的性能瓶颈和压力,突破网络IO、硬件资源、链接属的瓶颈,同时也带来了一些问题
一、事务一致性问题
分库分表把数据分布到不一样的数据库服务器,不可避免带来分布式事务问题
二、跨节点关联查询
原本能够经过join链接查询的sql语句,如今得两次查询
第一次:查到关联数据的id。
第二次:根据id找到对应的数据。
三、跨节点分页、排序函数
合二为一
全局主键解决主键重复问题
例如:地区表(商品表和店铺表的依赖公共表)
在每一个数据库服务中都创建公共表,全部对公共表的更新操做都同时发送到全部分库执行。
小伙伴们,对于MYSQL数据库的分库分表理论就介绍到这里了,下期咱们用sharding-JDBC框架来实现吧!!!
get到的小伙伴记得点赞👍+关注哦!小红♥走起来!!!😘😘😘
复制代码