4.1.17.8.高性能
2026/5/16 14:52:08 网站建设 项目流程

1.主从复制

在主服务器上,所有修改数据的语句(如 INSERT、UPDATE、DELETE)会被记录到二进制日志中。

主服务器上的一个线程(二进制日志转储线程)负责读取二进制日志的内容并发送给从服务器。

从服务器接收到二进制日志数据后,会将这些数据写入自己的中继日志(Relay Log)。中继日志是从服务器上的一个本地存储。

从服务器上有一个 SQL 线程会读取中继日志,并在本地数据库上执行,从而将更改应用到从数据库中,完成同步。

2.分库分表

2.1.分库

①垂直分库:按照业务模块将不同的表拆分到不同的库中,例如,用户表、订单表、商品表等分到不同的库中。

②水平分库:按照一定的策略将一个表中的数据拆分到多个库中,例如,按照用户 id 的 hash 值将用户表拆分到不同的库中。

2.2.分表

2.2.1.分表的方式分类

垂直拆分可以减轻查询业务的基本数据,不需要附带一些数据量大的字段的查询压力。

当表的数据量过大时,仍然要考虑水平分表,将一个表的数据分散到多个表中,以减轻单表的查询压力

2.2.3.分表策略

为了实现水平分表,需要设计合适的路由策略来确定数据应该存储在哪个表中,具体哪个表,由分片键(Sharding Key)来决定,分片键的选择应满足以下条件:

1)高区分度:分片键的值应尽量均匀分布,以避免数据倾斜。

2)查询频率高:选择经常在查询条件中使用的字段作为分片键,有助于提高查询效率。

3)写入频率高:选择经常被写入的字段,可以均匀分布写入负载。

那常见的路由策略有三种,分别是范围路由、Hash 路由和配置路由。

2.2.3.1.范围路由

什么是范围路由?

范围路由是根据某个字段的值范围进行分表。这种方式适用于分片键具有顺序性或连续性的场景。

范围路由的优点是实现简单,可以随着数据的增加平滑地扩充新的表。适用于按时间或按顺序增长的字段(如时间戳、订单号等)。缺点是可能出现数据倾斜问题,导致某些表的数据量明显大于其他表。

2.2.3.2.Hash路由(?)

哈希路由是通过对分片键进行哈希计算,然后取模来确定数据存储的表。哈希值决定了数据分布,通常能较好地平衡数据量。

哈希路由的优点是数据可以均匀分布,避免了数据倾斜,但范围查询时可能会涉及多个表,性能较差。

2.2.3.3.配置路由

配置路由是通过配置表来确定数据存储的表,适用于分片键不规律的场景。

配置路由的优点是可以根据实际情况灵活配置。缺点是需要额外的配置表,维护成本较高。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询