hana数据库 字段长度_【数据库方案】分享一次分库分表(含分区)的实践经验(1)...

本文介绍了数据库分库分表的实践经验,包括垂直切分和水平切分。垂直切分根据字段进行,减少IO争抢和锁表几率,大字段因IO效率低被重点提及。水平切分通过特定字段实现数据分布,提高数据库操作效率。何时进行分库分表是讨论的关键。
摘要由CSDN通过智能技术生成

马上国庆就要结束了,再不写就要鸽了。。。


    分库分表:对数据表进行切分。分库指一张表对数据落到了多个数据库上,分表一般来说指一张表落到同个数据库多张数据表上。

提到分库分表还要区分垂直和水平切分的概念。
  • 垂直切分:将一个表按照字段分成多表,每个表只存储其中一部分字段。

    一般按业务场景拆分,或者按使用频率拆分。

    好处:

    为了避免IO争抢、减少锁表的几率。不同业务字段读写互不影响,频率高效率高业务字段表不会被低效率低频的业务字段拖垮。

为什么大字段IO效率低: 

由于数据量本身大,需要更长的读取时间;

跨页,页是数据库存储单位,很多查找及定位操作都是以页为单位,单页内的数据行越多数据库整体性能越好,而大字段占用空间大,单页内存储行数少,因此IO效率较低。 

数据库以行为单位将数据加载到内存中,这样表中字段长度较短且访问频率较高,内存能加载更多的数据,命中率更高,减少了磁盘IO,从而提升了数据库性能。

   
  • 水平切分:将一个表按照某一个或多个字段分成多表,每个表只存储这个表的一部分数据。

    例如使用用户号切分,将尾号按00-49,50-99切分,或者hash切分等多种方法。

    水平切分一般需要满足不同分库/分表的数据分布均匀。

    好处:

    将单一大表划分为多个小表,有利于提高数据库操作效率。

    什么时候需要分库分表?

    当生产环境数据不断累计会形成巨大的数据量,且随着时间推移和产品推广会日益明显,因此交易型数据一般来说都需要对数据表进行切分,达到提高效率的目的。    因此分库分表的原因简单总结为:1、数据量太大了,产品推广的进度远超预期或者一开始就预计到会产生巨大到历史数据。即使查询命中了索引耗时达到系统不可忍受的程度(不同系统忍耐程度不同,对OLTP系统来说联机响应时间很宝贵,可根据自己系统对响应时间忍受度来评估)。    具体参考:可以根据一个月交易量,一年交易量来预估,当一张表超过千万级行记录,或者表大小达到1G(Oracle可能可以更多)
2、数据包含了当前和历史交易。历史表永远都累计,大多数交易都围绕这当前数据进行,一般来说历史数据在超过3-6个月后读写会直线下降,几乎为0。但作为系统仍需要为用户提供查询服务。
分区(下期再补)分库分表分区的实现复杂度:垂直分表 < 垂直分库 < 分区 < 水平分表 < 水平分库
怎么做分区分表?(下期再补)以下数据库架构图,下次再做整个架构的分析讲解。。。

d364099f0a84d5bc0a8c97dea950206a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值