扛得住的MySQL数据库架构

扛得住的MySQL数据库架构,第1张

数据库优化是系统工程,性能的提升靠整体。本课程将面面俱到的讲解提升数据库性能的各种因素,让你在最短的时间从小白到资深,将数据库整体架构了然于胸

第1章 实例和故事 试看7 节 | 50分钟

决定电商11大促成败的各个关键因素。

收起列表

视频:1-1 什么决定了电商双11大促的成败 (04:04)试看

视频:1-2 在双11大促中的数据库服务器 (06:03)

视频:1-3 在大促中什么影响了数据库性能 (07:55)

视频:1-4 大表带来的问题 (14:13)

视频:1-5 大事务带来的问题 (17:27)

作业:1-6 【讨论题】在日常工作中如何应对高并发大数据量对数据库性能挑战

作业:1-7 【讨论题】在MySQL中事务的作用是什么?

第2章 什么影响了MySQL性能 试看30 节 | 210分钟

详细介绍影响性能各个因素,包括硬件、 *** 作系统等等。

收起列表

视频:2-1 影响性能的几个方面 (04:08)试看

视频:2-2 CPU资源和可用内存大小 (10:54)

视频:2-3 磁盘的配置和选择 (04:44)

视频:2-4 使用RAID增加传统机器硬盘的性能 (11:30)

视频:2-5 使用固态存储SSD或PCIe卡 (08:35)

视频:2-6 使用网络存储SAN和NAS (07:16)

视频:2-7 总结:服务器硬件对性能的影响 (03:27)

视频:2-8 *** 作系统对性能的影响-MySQL适合的 *** 作系统 (03:50)

视频:2-9 CentOS系统参数优化 (11:43)

视频:2-10 文件系统对性能的影响 (03:29)

视频:2-11 MySQL体系结构 (05:29)

视频:2-12 MySQL常用存储引擎之MyISAM (13:23)

视频:2-13 MySQL常用存储引擎之Innodb (10:44)

视频:2-14 Innodb存储引擎的特性(1) (15:24)

视频:2-15 Innodb存储引擎的特性(2) (08:44)

视频:2-16 MySQL常用存储引擎之CSV (09:19)

视频:2-17 MySQL常用存储引擎之Archive (06:08)

视频:2-18 MySQL常用存储引擎之Memory (10:40)

视频:2-19 MySQL常用存储引擎之Federated (11:21)

视频:2-20 如何选择存储引擎 (04:33)

视频:2-21 MySQL服务器参数介绍 (08:04)

视频:2-22 内存配置相关参数 (09:24)

视频:2-23 IO相关配置参数 (10:01)

视频:2-24 安全相关配置参数 (06:13)

视频:2-25 其它常用配置参数 (03:41)

视频:2-26 数据库设计对性能的影响 (04:36)

视频:2-27 总结 (01:32)

作业:2-28 【讨论题】你会如何配置公司的数据库服务器硬件?

作业:2-29 【讨论题】你认为对数据库性能影响最大的因素是什么

作业:2-30 【讨论题】做为电商的DBA,建议开发选哪种MySQL存储引擎

第3章 MySQL基准测试8 节 | 65分钟

了解基准测试,MySQL基准测试工具介绍及实例演示。

收起列表

视频:3-1 什么是基准测试 (02:20)

视频:3-2 如何进行基准测试 (09:00)

视频:3-3 基准测试演示实例 (11:18)

视频:3-4 Mysql基准测试工具之mysqlslap (13:30)

视频:3-5 Mysql基准测试工具之sysbench (11:07)

视频:3-6 sysbench基准测试演示实例 (17:11)

作业:3-7 【讨论题】MySQL基准测试是否可以体现出业务系统的真实性能

作业:3-8 【实 *** 题】参数不同取值对性能的影响

第4章 MySQL数据库结构优化14 节 | 85分钟

详细介绍数据库结构设计、范式和反范式设计、物理设计等等。

收起列表

视频:4-1 数据库结构优化介绍 (06:52)

视频:4-2 数据库结构设计 (14:49)

视频:4-3 需求分析及逻辑设计 (11:00)

视频:4-4 需求分析及逻辑设计-反范式化设计 (06:44)

视频:4-5 范式化设计和反范式化设计优缺点 (04:06)

视频:4-6 物理设计介绍 (05:17)

视频:4-7 物理设计-数据类型的选择 (18:59)

视频:4-8 物理设计-如何存储日期类型 (13:37)

视频:4-9 物理设计-总结 (02:37)

图文:4-10 说明MyISAM和Innodb存储引擎的5点不同

作业:4-11 【讨论题】判断表结构是否符合第三范式要求?如不满足要如何修改

作业:4-12 【实 *** 题】请设计一个电商订单系统的数据库结构

作业:4-13 【讨论题】以下那个字段适合作为Innodb表的主建使用

作业:4-14 【讨论题】请为下表中的字段选择合适的数据类型

第5章 MySQL高可用架构设计 试看24 节 | 249分钟

详细介绍二进制日志及其对复制的影响、GTID的复制、MMM、MHA等等。

收起列表

视频:5-1 mysql复制功能介绍 (04:58)

视频:5-2 mysql二进制日志 (22:05)

视频:5-3 mysql二进制日志格式对复制的影响 (09:37)

视频:5-4 mysql复制工作方式 (03:08)

视频:5-5 基于日志点的复制 (20:06)

视频:5-6 基于GTID的复制 (22:32)

视频:5-7 MySQL复制拓扑 (13:58)

视频:5-8 MySQL复制性能优化 (09:23)

视频:5-9 MySQL复制常见问题处理 (08:31)

视频:5-10 什么是高可用架构 (14:09)

视频:5-11 MMM架构介绍 (08:09)

视频:5-12 MMM架构实例演示(上) (09:16)试看

视频:5-13 MMM架构实例演示(下) (18:55)

视频:5-14 MMM架构的优缺点 (08:01)

视频:5-15 MHA架构介绍 (10:02)

视频:5-16 MHA架构实例演示(1) (13:11)

视频:5-17 MHA架构实例演示(2) (16:54)

视频:5-18 MHA架构优缺点 (05:14)

视频:5-19 读写分离和负载均衡介绍 (11:42)

视频:5-20 MaxScale实例演示 (18:25)

作业:5-21 【讨论题】MySQL主从复制为什么会有延迟,延迟又是如何产生

作业:5-22 【实 *** 题】请为某互联网项目设计99.99%MySQL架构

作业:5-23 【讨论题】如何给一个已经存在的主从复制集群新增一个从节点

作业:5-24 【讨论题】给你三台数据库服务器,你如何设计它的高可用架构

第6章 数据库索引优化8 节 | 65分钟

介绍BTree索引和Hash索引,详细介绍索引的优化策略等等。

收起列表

视频:6-1 Btree索引和Hash索引 (20:09)

视频:6-2 安装演示数据库 (01:19)

视频:6-3 索引优化策略(上) (17:33)

视频:6-4 索引优化策略(中) (13:02)

视频:6-5 索引优化策略(下) (12:30)

作业:6-6 【讨论题】一列上建立了索引,查询时就一定会用到这个索引吗

作业:6-7 【讨论题】在定义联合索引时为什么需要注意联合索引中的顺序

作业:6-8 【实 *** 题】SQL建立索引,你会考虑那些因素

第7章 SQL查询优化9 节 | 62分钟

详细介绍慢查询日志及示例演示,MySQL查询优化器介绍及特定SQL的查询优化等。

收起列表

视频:7-1 获取有性能问题SQL的三种方法 (05:14)

视频:7-2 慢查询日志介绍 (08:57)

视频:7-3 慢查询日志实例 (08:27)

视频:7-4 实时获取性能问题SQL (02:21)

视频:7-5 SQL的解析预处理及生成执行计划 (16:02)

视频:7-6 如何确定查询处理各个阶段所消耗的时间 (09:35)

视频:7-7 特定SQL的查询优化 (10:34)

作业:7-8 【讨论题】如何跟据需要对一个大表中的数据进行删除或更新

作业:7-9 【讨论题】如何获取需要优化的SQL查询

第8章 数据库的分库分表5 节 | 48分钟

详细介绍数据库分库分表的实现原理及演示案例等。

收起列表

视频:8-1 数据库分库分表的几种方式 (04:34)

视频:8-2 数据库分片前的准备 (13:53)

视频:8-3 数据库分片演示(上) (11:40)

视频:8-4 数据库分片演示(下) (17:02)

作业:8-5 【讨论题】对于大表来说我们一定要进行分库分表吗

第9章 数据库监控7 节 | 29分钟

介绍数据库可用性监控、性能监控、MySQL主从复制监控等

收起列表

视频:9-1 数据库监控介绍 (04:46)

视频:9-2 数据库可用性监控 (07:20)

视频:9-3 数据库性能监控 (09:39)

视频:9-4 MySQL主从复制监控 (06:16)

作业:9-5 【讨论题】QPS是否可以真实的反映出数据库的负载情况

作业:9-6 【讨论题】如何正确评估数据库的当前负载状况

作业:9-7 【实 *** 题】开发一个简单监控脚本,监控mySQL数据库阻塞情况

以每24小时作为一份时间(而非自然日),根据用户的配置有两种工作模式:带状模式中,用户仅定义开始日期时,从开始日期(含)开始,每份时间1个分片地无限增加下去;环状模式中,用户定义了开始日期和结束日期时,以结束日期(含)和开始日期(含)之间的时间份数作为分片总数(分片数量固定),以类似取模的方式路由到这些分片里。

1. DBLE 启动时,读取用户在 rule.xml 配置的 sBeginDate 来确定起始时间

2. 读取用户在 rule.xml 配置的 sPartionDay 来确定每个 MySQL 分片承载多少天内的数据

3. 读取用户在 rule.xml 配置的 dateFormat 来确定分片索引的日期格式

4. 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的时间类型

5. 然后求分片索引值与起始时间的差,除以 MySQL 分片承载的天数,确定所属分片

1. DBLE 启动时,读取用户在 rule.xml 配置的起始时间 sBeginDate、终止时间 sEndDate 和每个 MySQL 分片承载多少天数据 sPartionDay

2. 根据用户设置,建立起以 sBeginDate 开始,每 sPartionDay 天一个分片,直到 sEndDate 为止的一个环,把分片串联串联起来

3. 读取用户在 rule.xml 配置的 defaultNode

4. 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的日期类型

5. 然后求分片索引值与起始日期的差:如果分片索引值不早于 sBeginDate(哪怕晚于 sEndDate),就以 MySQL 分片承载的天数为模数,对分片索引值求模得到所属分片;如果分片索引值早于 sBeginDate,就会被放到 defaultNode 分片上

与MyCat的类似分片算法对比

中间件

DBLE

MyCat

分片算法种类 date 分区算法 按日期(天)分片

两种中间件的取模范围分片算法使用上无差别

开发注意点

【分片索引】1. 必须是字符串,而且 java.text.SimpleDateFormat 能基于用户指定的 dateFormat 来转换成 java.util.Date

【分片索引】2. 提供带状模式和环状模式两种模式

【分片索引】3. 带状模式以 sBeginDate(含)起,以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,理论上分片数量可以无限增长,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)

【分片索引】4. 环状模式以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,以 sBeginDate(含)到 sEndDate(含)的时间长度除以单个分片长度得到恒定的分片数量,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)

【分片索引】5. 无论哪种模式,分片索引字段的格式化字符串 dateFormat 由用户指定

【分片索引】6. 无论哪种模式,划分不是以日历时间为准,无法对应自然月和自然年,且会受闰秒问题影响

运维注意点

【扩容】1. 带状模式中,随着 sBeginDate 之后的数据出现,分片数量的增加无需再平衡

【扩容】2. 带状模式没有自动增添分片的能力,需要运维手工提前增加分片;如果路由策略计算出的分片并不存在时,会导致失败

【扩容】3. 环状模式中,如果新旧 [sBeginDate,sEndDate] 之间有重叠,需要进行部分数据迁移;如果新旧 [sBeginDate,sEndDate] 之间没有重叠,需要数据再平衡

配置注意点

【配置项】1. 在 rule.xml 中,可配置项为 <propertyname="sBeginDate">、 <propertyname="sPartionDay">、 <propertyname="dateFormat">、 <propertyname="sEndDate">和 <propertyname="defaultNode">

【配置项】2.在 rule.xml 中配置 <propertyname="dateFormat">,符合 java.text.SimpleDateFormat 规范的字符串,用于告知 DBLE 如何解析sBeginDate和sEndDate

【配置项】3.在 rule.xml 中配置 <propertyname="sBeginDate">,必须是符合 dateFormat 的日期字符串

【配置项】4.在 rule.xml 中配置 <propertyname="sEndDate">,必须是符合 dateFormat 的日期字符串;配置了该项使用的是环状模式,若没有配置该项则使用的是带状模式

【配置项】5.在 rule.xml 中配置 <propertyname="sPartionDay">,非负整数,该分片策略以 86400000 毫秒(24 小时整)作为一份,而 sPartionDay 告诉 DBLE 把每多少份放在同一个分片

【配置项】6.在 rule.xml 中配置 <propertyname="defaultNode">标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8651990.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-19
下一篇 2023-04-19

发表评论

登录后才能评论

评论列表(0条)

保存