从0开始回顾MySQL---系列八

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
RDS AI 助手,专业版
简介: 分库分表1、为什么要分库分表?1. 数据库中的数据量不一定是可控的,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地数据操作,例如 增删改查的开销 也会越来越大;另外,若不进行分布式部署,而一台服务器的 资源 (CPU、磁盘、内存、IO 等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。2. 所以,从 性能 和 可用性 角度考虑,会进行数据库拆分处理,具体地说,把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上,即 分库分表。2、分库分表的具体实施策略分库分表有 垂直切分 和 水平切分 两种方式,在

分库分表

1、为什么要分库分表?


  1. 数据库中的数据量不一定是可控的,随着时间和业务的发展,库中的表会越来越多,表中的数据量也会越来越大,相应地数据操作,例如 增删改查的开销 也会越来越大;另外,若不进行分布式部署,而一台服务器的 资源 (CPU、磁盘、内存、IO 等)是有限的,最终数据库所能承载的数据量、数据处理能力都将遭遇瓶颈。
  2. 所以,从 性能可用性 角度考虑,会进行数据库拆分处理,具体地说,把原本存储于一个库的数据分块存储到多个库上,把原本存储于一个表的数据分块存储到多个表上,即 分库分表


2、分库分表的具体实施策略


分库分表有 垂直切分水平切分 两种方式,在复杂的业务场景中,也可能会选择两者结合的方式。

切分方式

定义

优点

缺点

应用场景

垂直切分

数据表 的拆分,把一张列比较多的表拆分为多张表,具体地,根据数据库里面数据表的相关性进行拆分

可以使行数据变小,在查询时减少读取的 Block 数,减少 I/O 次数;简化表结构,更易于维护

主键会出现冗余,需要管理冗余列;会引起 JOIN 操作;加大事务管理的难度

适合 表多 且 各项 业务逻辑 划分清晰、低耦合情景

水平切分

数据表 的拆分,是一种横向按业务维度切分的方式,保持数据表结构不变,通过某种策略存储数据分片

可支持非常大的数据量存储;应用端改造少

分片事务难以解决;会增加逻辑、部署、应用和运维的各种复杂度

水平拆分更适合进行 分库 或者 单表数据量大 且表中的数据本身就有独立性

3、分库分表存在哪些问题


进行分库分表操作后,可能会面临以下几类问题:

  • 事务问题:分库分表后,就成了分布式事务。如果依赖数据库本身的分布式事务管理功能去执行事务,将付出高昂的性能代价; 如果由应用程序去协助控制,形成程序逻辑上的事务,又会造成编程方面的负担。
  • 跨库跨表的 JOIN 问题
    在执行了分库分表之后,难以避免会将原本逻辑关联性很强的数据划分到不同的表、不同的库上,这时,表的关联操作将受到限制,我们无法 JOIN 位于不同分库的表,也无法 JOIN 分表粒度不同的表,结果原本一次查询能够完成的业务,可能需要多次查询才能完成。
  • 额外的数据管理负担和数据运算压力
    额外的数据管理负担,最为常见的是数据的 定位问题 和数据的 增删改查 的重复执行问题,这些都可以通过应用程序来解决,但必然会引起额外的逻辑运算。
  • ID 问题
  • 数据库表被切分后,不能再依赖数据库⾃⾝的主键生成机制,所以需要⼀些手段来保证全局主键唯⼀。

主从复制

1、什么是 MySQL 主从复制?


  • 主从复制使得数据可以从一个数据库服务器复制到其他服务器上,在复制数据时,一个服务器充当主服务器(master),其余的服务器充当从服务器(slave)。  
  • MySQL 支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。

2、MySQL主从同步的优点?


  1. 通过增加从服务器来提高数据库的性能,在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器的数量,从而调整整个数据库的性能。
  2. 提高数据安全,可以在从服务器上备份而不破坏主服务器相应数据。
  3. 在主服务器上生成实时数据,而在从服务器上分析这些数据,从而提高主服务器的性能 ;
  4. 数据备份


3、如何实现MySQL的读写分离?

读写分离的基本原理是将数据库读写操作分散到不同的节点上,下⾯是基本架构图:

读写分离的基本实现是:

  • 数据库服务器搭建主从集群,⼀主⼀从、⼀主多从都可以。
  • 数据库主机负责读写操作,从机只负责读操作。
  • 数据库主机通过复制将数据同步到从机,每台数据库服务器都存储了所有的业务数据。
  • 业务服务器将写操作发给数据库主机,将读操作发给数据库从机。

4、MySQL主从复制流程和原理?


基本原理流程,是3个线程以及之间的关联:

  • :binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中;
  • :io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进自己的relay log中;
  • :sql执行线程——执行relay log中的语句;

复制过程如下

  • 第一步:master在每个事务更新数据完成之前,将该操作记录串行地写入到binlog文件中。
  • 第二步:salve开启一个I/O Thread,该线程在master打开一个普通连接,主要工作是binlog dump  process。如果读取的进度已经跟上了master,就进入睡眠状态并等待master产生新的事件。I/O线程最终的目的是将这些事件写入到中继日志中。
  • 第三步:SQL Thread会读取中继日志,并顺序执行该日志中的SQL事件,从而与主数据库中的数据保持一致。

  • Binary log:主数据库的二进制日志;
  • Relay log:从服务器的中继日志;
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
4月前
|
SQL 供应链 监控
Quick BI使用案例12:如何实现分组内“最新”与“次新”订单时间计算
本文详解订单时效性分析:通过LOD_FIXED与BI_MAX函数,快速计算各区域“最新/次新订单时间”,助力识别交易活跃度、预警客户流失、优化供应链。
|
机器学习/深度学习 传感器 自动驾驶
未来之路:大模型技术在自动驾驶的应用与影响
本文深入分析了大模型技术在自动驾驶领域的应用和影响,万字长文,慢慢观看~ 文中首先概述了大模型技术的发展历程,自动驾驶模型的迭代路径,以及大模型在自动驾驶行业中的作用。 接着,详细介绍了大模型的基本定义、基础功能和关键技术,特别是Transformer注意力机制和预训练-微调范式。 文章还介绍了大模型在任务适配性、模型变革和应用前景方面的潜力。 在自动驾驶技术的部分,详细回顾了从CNN到RNN、GAN,再到BEV和Transformer结合的技术迭代路径,以及占用网络模型的应用。 最后,文章重点讨论了大模型如何在自动驾驶的感知、预测和决策层面提供赋能,突出了其在该领域的重要性和影响力。
2943 56
|
传感器 搜索推荐 数据挖掘
可穿戴设备如何驱动心理健康监测的变革:科技护航心理健康的未来
可穿戴设备如何驱动心理健康监测的变革:科技护航心理健康的未来
364 15
|
SQL 数据可视化 关系型数据库
Quick BI 测评报告
Quick BI是阿里云推出的零代码可视化分析工具,适合个人开发者与小微团队使用。其核心优势在于轻量化启动(免费试用+按量付费)、多源接入(MySQL、MongoDB等)及敏捷分析能力(拖拽式仪表板)。实测显示,它支持智能CSV解析、语法高亮SQL编辑器和25+基础图表类型,具备图表联动交互功能。尽管缺少3D地图和自定义JS插件支持,但凭借低学习成本、OpenAPI扩展性以及移动端报表查看功能,Quick BI在个人项目展示、团队协作和轻量级数据分析中表现出色。不过,复杂计算需依赖SQL,移动端编辑和PDF导出存在局限性。
992 3
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
670 2
|
数据挖掘 iOS开发 MacOS
利用Python计算农历日期
利用Python计算农历日期
962 4
|
存储 Java
Java 链接表(链表)详解与实现
Java 链接表(链表)详解与实现
653 2
|
缓存 前端开发 搜索推荐
提升网站性能的10个实用技巧
在当今数字化时代,网站性能的优化至关重要,它直接影响着用户体验和搜索引擎排名。本文将介绍10个实用的技巧,帮助您提升网站的性能,包括前端、后端和服务器端的优化策略,以及一些常见的性能问题解决方法。
|
SQL 网络协议 关系型数据库
|
安全 物联网 API
学习TrustZone可以参考的资料
学习TrustZone可以参考的资料
477 0

热门文章

最新文章