【数媒在线课堂】数据切分:在线课堂

关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限在线课堂。当单表的数据量达到 1000W 或 100G 以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。

数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合在线课堂。数据切分就是将数据分散存储到多个数据库中,使得单一数据库中的数据量变小,通过扩充主机的数量缓解单一数据库的性能问题,从而达到提升数据库操作性能的目的。

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

1、垂直(纵向)切分

垂直切分常见有垂直分库和垂直分表两种在线课堂

垂直分库就是根据业务耦合性,将关联度低的不同表存储在不同的数据库在线课堂。做法与大系统拆分为多个小系统类似,按业务分类进行独立划分。与 "微服务治理" 的做法相似,每个微服务使用单独的一个数据库。如图:

垂直分表是基于数据库中的 "列" 进行,某个表字段较多,可以新建一张扩展表,将不经常用或字段长度较大的字段拆分出去到扩展表中在线课堂。在字段很多的情况下(例如一个大表有 100 多个字段),通过 "大表拆小表",更便于开发与维护,也能避免跨页问题,MySQL 底层是通过数据页存储的,一条记录占用空间过大会导致跨页,造成额外的性能开销。另外数据库以行为单位将数据加载到内存中,这样表中字段长度较短且访问频率较高,内存能加载更多的数据,命中率更高,减少了磁盘 IO,从而提升了数据库性能。

垂直切分的优点:

解决业务系统层面的耦合在线课堂,业务清晰

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

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

缺点:

部分表无法 join在线课堂,只能通过接口聚合方式解决,提升了开发的复杂度

分布式事务处理复杂

依然存在单表数据量过大的问题(需要水平切分)

本站内容来自用户投稿,如果侵犯了您的权利,请与我们联系删除。联系邮箱:835971066@qq.com

本文链接:http://gmstar.cn/post/126.html