网站建设中提示页面,无锡自助网站,电商网站设计理念,网站seo技术能不能赚钱简介
对于任何系统而言#xff0c;都会设计到数据库随着时间增长而累积越来越多的数据#xff0c;系统也因为越来越多的需求变迁导致原有的设计不再满足现状#xff0c;为了解决这些问题#xff0c;分库分表就会走进视野#xff0c;带着几个问题走入分库分表。
什么是分…简介
对于任何系统而言都会设计到数据库随着时间增长而累积越来越多的数据系统也因为越来越多的需求变迁导致原有的设计不再满足现状为了解决这些问题分库分表就会走进视野带着几个问题走入分库分表。
什么是分库分表为什么要分库分表怎样分库分表分库分表后如何处理事务问题
什么是分库分表
分库分表是一种技术方案为了解决单机数据块随着时间增长数据量越来越大引起的数据库性能逐渐下滑。
在上述定义中分库分表主要是为了解决数据库性能下降产生的一种技术方案。 引起数据库性能下降的原因有很多但不一定都需要通过分库分表来解决。分库分表主要是为了解决单机数据量过大。为什么分库分表
根据上述介绍当数据量过大时单机数据库无法进一步优化只能通过分库分表方案来分散数据。 如果是其他原因是可以通过优化手段来解决的比如索引失效可以通过合理索引的创建来提升数据库性能。只有数据量不断增大时所有手段都已经用了也无法进一步优化这时只能通过分库分表来解决。
如何分库分表
分库和分表是两个维度的方案库由表组成表的粒度比库更小它们都涉及到拆分。 表是一个由行和列构成的二维结构因此拆分时可以分为列拆分和行拆分它们也叫做垂直拆分和水平拆分。
1. 垂直分库分表
垂直拆分的原理和单体系统拆分为微服务同理
1. 按业务垂直拆分。将业务按照一定的粒度划分然后将相同业务范围的数据拆分到一起形成内聚。
2. 按字段使用频率拆分将高频字段和低频字段拆分。
3. 按字段读写频率拆分
4. 等等一、垂直分库 垂直分库是按较大粒度进行业务拆分将原有的单体库拆分多个业务板块的数据库。
二、垂直分表
垂直分表则是将原有的单表按列拆分为多个表。其拆分原则也是按业务拆分将原有的大表拆分为几个小表。 2. 水平分库分表
数据库的数据由行组成水平分库分表则是按数据量拆分。将原有的大库或大表拆分为多个子库或子表。 如何让数据存入不同的子表
1. 分散存储 让数据循环存入子表A、B、C
2. 范围存储 分段类似0-1000万存A表1000万-2000万存B表。分库分表后如何处理事务问题
无论水平拆分还是垂直拆分都会涉及到分布式事务问题。
分布式事务目前的解决方案主要是阿里巴巴开源的Seata分布式事务中间件。