《构建高性能Web站点》读书笔记:数据库扩展

在“数据库扩展”一章中,主要讲到了三种扩展方式。它们是:复制和分离;垂直分区;水平分区。

复制与分离:

  “复制与分离”中的复制指的是数据库主从复制。而分离指的是数据库的读写分离。

  主从复制以MySQL为例。MySQL本身即支持主从复制且配置简单,只需做到:

    1.开启主服务器上的二进制日志(log-bin)。

    2.在主服务器和从服务器上分别进行简单的配置和授权。

  主服务器的二进制日志会自动记录所有对数据库产生更新的操作(update/insert/delete),在从服务器同步了这些日志后,日志中记录的操作就会在从服务器上进行重放,从而实现复制。

  这种复制动作是异步进行的,从服务器定时向主服务器请求最新日志。复制过程对主服务器的性能影响非常有限。
  主服务器对于所有更新操作记录二进制日志的动作对服务器性能大概有1%的影响。

  复制是分离的前提。

  读写分离是一种很常用的提高性能的方法。主服务器负责写,从服务器负责读,可有效降低大量读带来的性能消耗。

  书中还简要介绍了MySQL Proxy

垂直分区

  垂直分区的目的是对写操作做出分离。写操作分离的前提是:被分离的数据之间并不存在关系或者不需要进行联合(JOIN)查询。在数据库表设计阶段就要避免JOIN查询,因为JOIN查询会带来性能问题。避免JOIN查询的方法就是允许存在一定的数据冗余,存在反范式的表设计。

水平分区

  水平分区(Sharding)意味着可以将同一数据表中的记录通过特定的算法进行分离,分别保存在不同的数据表中,从而可以部署在不同的数据库服务器上。

  水平分区的思路与数据库分表的思路一致。

思维导图一张:

原文地址:https://www.cnblogs.com/followflows/p/1808616.html