项目代码第10讲【数据库运维知识——如何优化数据库查询效率?】:各种日志查看;主从复制;分库分表(MyCat);读写分离;区别数据分区、分表、分库
01. 运维-课程介绍_哔哩哔哩_bilibili
一、各种日志查看
二、主从复制
三、分库分表(MyCat)
四、读写分离
五、区别数据分区、分表、分库
1、数据库分区
上图中的ibd文件,是分区表的数据文件,可以分布在不同的物理设备上(存放在不同硬盘上,见1>2》),从而高效地利用多个硬件设备
作用:如下图,在查询的时候缩小了磁盘的扫描范围
1>分区表的优势
1》逻辑上是一个事务,无需额外干涉:
跨多表操作时和单表操作是一样的。底层的数据一致性是由数据库自己保证的。
2》分区表的数据就是:上上(上)图的ibd文件,可以把数据存储分布在不同的硬盘上——>可并行的硬盘IO资源
这点也有劣势,如下2>
2>分区表的劣势
1》可并行的硬盘IO资源(见1>2》)设备计算资源与内存资源无法突破单体极限:作为计算节点,CPU和内存资源都是在单机上完成的
分区表的数据操作(如查询、更新等)尽管可以在逻辑上分开处理,但最终这些操作还是需要在单一计算节点上执行。
这意味着CPU和内存资源受限于该节点的硬件限制。
如果某个操作不能有效地被分散到多个节点或者分区中去,并且需要大量的计算资源或内存,那么这个操作的性能将会受到所在单机的硬件能力的限制。
2》【在设计前很难知道需要分区,所以这里也是一个限制】查询必须包含分区键,且分区键必须是主键的一部分,分区键必须是整数列或解析为整数的表达式。
举例:
《1》创建下述opr表,主键只有opr_no,没有包含分区键opr_data
代码报错,要求分区键必须是主键的一部分
《2》解决《1》:添加分区键opr_data为主键的一部分
3>实际架构设计原则:不要过分依赖数据库或某个组件自带的特性,要完成一个相对通性的设计——从而引出数据分表
2、数据分表
1>范围分表
2>Hash分表
可以解决数据不均衡的问题,但是当新增一个结点的时候,n就会从3变成4,就会进行全局数据的迁移工作。这个风险就太大了。
所以针对Hash分表的时候一开始就会给足资源,或者进行局部数据的迁移和调整。