首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员:数据库分库分表,何时分?怎样分?

随着互联网技术的成熟,我们的个人信息都存储在数据库之中,那么对于程序员的我们,对于数据库的优化又是怎样做到的呢?

一、数据切分

根据切分类型,可以分为两种方式:垂直(纵向)切分和水平(横向)切分

接下来给大家慢慢介绍:

1、垂直(纵向)切分

常见有垂直分库和垂直分表两种。

垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库。

垂直分表是基于数据库中的“列”进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表去。

垂直切分的优点:

解决业务系统层面的耦合,业务清晰

与微服务的治理类似,也能对不同业务的数据进行分级管理、维护、监控、扩展等。

高并发场景下,垂直切分一定程度的提升IO、数据库连接数、单机硬件资源的瓶颈。

当然了,任何事物的出现都有两面性,不足之处就是:

部分表无法json,只能通过接口聚合方式解决,提升了开发的复杂度。

分布式事务处理复杂

依然存在单表数据量过大的问题

2、水平(横向)切分

根据表内数据内在的逻辑关系,将同一个表按不同的条件分散到多个数据库或多个表中,每个表中只包含一部分数据,从而使得单个表的数据量变小,达到分布的效果。

水平切分的优点:

不存在单库数据量过大、高并发的性能瓶颈,提升系统稳定性和负载能力

应用端改造较小,不需要拆分业务模块

缺点:

跨分片的事务一致性难以保证

跨库的join关联查询性能较差

数据多次扩展难度和维护量极大

综上,是我个人对于数据库性能的一些见解,欢迎大家在评论区留下自己的见解。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190106A0RUTS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券