一句话说明数据库分库分表分区及实用场景

     像这种情况,一般小项目开发时用到的较少,所以实操经历真的很有限,只有像阿里、腾讯、华为等大厂有大业务量的项目上才会多用到这种,首先说实用场景,一般数据库表的数据量超过500万条,索引的效率会大幅下降,和全表查询比已经没啥优势可言,这个时候要继续保证查询效率,那就得分表了,分表有两种,一种是横向分表,就是把查询频率高的字段和查询频率低的字段拆分成多个表,用主键或外键进行关联,另一种是纵向分表,就是创建几张一模一样的表,但是表名做区分,比如主表是tablea分表可以是tablea01、tablea02…,表分区的话,就是表里的数据很多的时候,可以按照某种方式将一个表分成几个段比如(partition),比如字段值范围分区、hash分区、list分区等,表分区后查询表数据时不需要特殊处理,但是分表的,查询时,需要根据查询的id和表数据的count,number等去判断查询哪一张表,可以在sqlmap里去做判断;如果数据量特别多,并发情况特别多的情况,光靠分表分区不能再提高效率解决问题,就需要分库了,分库也分为两种,一种是横向分库(异构库),就是分成多个数据库,每个数据库的表不同,所有的数据库表组合成业务的所有数据,这种查询的时候,因为知道哪个表在哪个库,通过sql语句直接可以实现查询,一种是纵向分库,就是多个数据库的表相同,这种查询的时候可以通过dblink把各个库的相同的表的count统计出来,然后根据查询sql的id大小判断去哪个库去查数据,这种可以通过硬编码判断id属于哪一段然后用对应数据库的connection查询数据库,也可以用一些其他插件工具,能够统计各个数据库相同表的count和number做出判断,总之,分库或分表后查询时始终都要经过手动判断业务id所属的库位置或表位置才能正确的去查询,而以前,我一直不这么认为的…

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值