水平分库分表的关键问题及解决思路(转)

水平分库分表的关键问题及解决思路

分片技术的由来

关系型数据库本身比较容易成为系统性能瓶颈,单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。

单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。

单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。

单机存储容量、连接数、处理能力等都很有限,数据库本身的“有状态性”导致了它并不像Web和应用服务器那么容易扩展。

分布式全局唯一ID

在很多中小项目中,我们往往直接使用数据库自增特性来生成主键ID,这样确实比较简单。而在分库分表的环境中,数据分布在不同的分片上,不能再借助数据库自增长特性直接生成,否则会造成不同分片上的数据表主键会重复。简单介绍下使用和了解过的几种ID生成算法。

常见分片规则和策略

分片字段该如何选择

在开始分片之前,我们首先要确定分片字段(也可称为“片键”)。很多常见的例子和场景中是采用ID或者时间字段进行拆分。这也并不绝对的,我的建议是结合实际业务,通过对系统中执行的sql语句进行统计分析,选择出需要分片的那个表中最频繁被使用,或者最重要的字段来作为分片字段。

很多常见的例子和场景中是采用ID或者时间字段进行拆分。

很多常见的例子和场景中是采用ID或者时间字段进行拆分。

很多常见的例子和场景中是采用ID或者时间字段进行拆分。

选择出需要分片的那个表中最频繁被使用,或者最重要的字段来作为分片字段。

选择出需要分片的那个表中最频繁被使用,或者最重要的字段来作为分片字段。

选择出需要分片的那个表中最频繁被使用,或者最重要的字段来作为分片字段。

原文地址:https://www.cnblogs.com/panxuejun/p/8918906.html