如何选择做网站,用c 做毕业设计的音乐网站,宁波seo优化服务,网站建设敬请期待图片素材个人简介#xff1a;Java领域新星创作者#xff1b;阿里云技术博主、星级博主、专家博主#xff1b;正在Java学习的路上摸爬滚打#xff0c;记录学习的过程~ 个人主页#xff1a;.29.的博客 学习社区#xff1a;进去逛一逛~ 目录 ②⑩① 【MySQL】什么是分库分表#xf… 个人简介Java领域新星创作者阿里云技术博主、星级博主、专家博主正在Java学习的路上摸爬滚打记录学习的过程~ 个人主页.29.的博客 学习社区进去逛一逛~ 目录 ②⑩① 【MySQL】什么是分库分表拆分策略有什么1. 性能瓶颈2. 拆分策略⚪ 垂直拆分⚪ 水平拆分 3. 实现技术4. MyCat中间件 ②⑩① 【MySQL】什么是分库分表拆分策略有什么 1. 性能瓶颈
单数据库存在问题
随着互联网及移动互联网的发展应用系统的数据量也是成指数式增长若采用单数据库进行数据存储存在以下性能瓶颈
1.IO瓶颈热点数据太多数据库缓存不足产生大量磁盘IO效率较低。请求数据太多带宽不够网络IO瓶颈。2.CPU瓶颈排序、分组、连接查询、聚合统计等SQL会耗费大量的CPU资源请求数太多CPU出现瓶颈。
分库分表的中心思想都是将数据分散存储使得单一数据库/表的数据量变小来缓解单一数据库的性能问题从而达到提升数据库性能的目的。 2. 拆分策略
分库分表 的 拆分方式
垂直拆分 垂直分库垂直分表 水平拆分 水平分库水平分表 ⚪ 垂直拆分
垂直分库
以表为依据根据业务将不同表拆分到不同库中去。 特点 ①每个库的表结构都不一样。②每个库的数据不一样。③所有库的并集是全量数据。 垂直分表
以字段为依据根据字段属性将不同字段拆分到不同表中。 特点 ①每个表的结构都不一样。②每个表的数据也不一样一般通过一列(主键/外键)关联。③所有表的并集是全量数据。 ⚪ 水平拆分
水平分库
以字段为依据按照一定策略将一个库的数据拆分到多个库中。 特点 ①每个库的表结构都一样。②每个库的数据都不一样。③所有库的并集是全量数据。 水平分表
以字段为依据按照一定策略将一个表中的数据拆分到多个表中去。 特点 ①每个表的表结构都一样。②每个表的数据都不一样。③所有表的并集是全量数据。 3. 实现技术
shardingJDBC
shardingJDBC技术 基于AOP原理在应用程序中对本地执行的SQL进行拦截解析、改写、路由处理。需要自行编码配实现只支持java语言性能较高。 MyCat
MyCat 是数据库分库分表中间件不用调整代码即可实现分库分表支持多种语言性能不及shardingJDBC技术。 4. MyCat中间件
MyCat
MyCat是一个开源的、活跃的、分布式的数据库中间件 可以像使用MySQL一样来使用MyCat,对于开发人员来说根本感觉不到MyCat的存在。MyCat中间件主要用于在大型数据库应用中实现数据库的分片和读写分离。它支持MySQL和MariaDB并提供了水平分片、垂直分片、分布式事务等功能。以下是MyCat中间件的一些主要特点和功能
分片和分布式架构 水平分片 MyCat支持水平分片将数据水平划分为多个片段每个片段可以存在于不同的物理节点上。垂直分片 可以通过垂直分片将不同的表划分到不同的物理节点上以提高查询性能和灵活性。 读写分离 MyCat支持读写分离可以配置多个只读节点将读请求分发到这些节点上从而提高整体查询性能。 分布式事务 MyCat支持分布式事务通过X/Open XA协议实现确保在跨多个数据库节点的事务中保持一致性。 SQL解析和路由 MyCat能够解析SQL语句并将其路由到相应的分片节点以确保数据操作被正确地分发到对应的数据库。 连接池管理 MyCat提供了连接池管理功能有效地管理数据库连接降低系统的连接开销。 支持多租户 MyCat支持多租户架构使得不同的租户可以共享相同的物理资源同时保持数据的隔离性。 动态扩展和缩减 MyCat支持动态扩展和缩减节点便于根据业务需求进行系统的水平伸缩。 监控和管理 提供了丰富的监控和管理工具可以监测集群的状态、性能指标等有助于及时发现和解决问题。 开源社区支持 MyCat是一个开源项目拥有活跃的社区用户可以获得开源社区的支持和贡献。
MyCat中间件为大型数据库应用提供了灵活性、可扩展性和高性能使得应用程序能够更好地应对大规模数据存储和访问的挑战。 MyCat的优势
MyCat优势 ①性能可靠稳定。②强大的技术团队。③体系完善。④社区活跃。 MyCat 核心概念