您的位置 首页 > 数码极客

水平分表后如何查询 水平分表后如何查询数据!

之前我们说过垂直分表,今天来说下水平分表,有的时候就算通过垂直分表还会存在慢sql的问题,因为经过垂直拆分后单表的数据量并没有减少,那如何解决这个问题,水平分表是目前解决单表数据量过大的常用方式。


水平分表:将一张表水平拆分成多张表结构一样的表,就像我们有张订单表1000万数据量,拆分后订单_1表、订单_2表....订单_9表,拆分成10张表后,单表的数据量减少到100W,解决了问题。


举个例子:原表order拆分为相同表结构表名不同的四张表


分片键:用于分片的字段,一般表中主键,比如订单表可以根据订单号或者客户号作为分片键。


分片方式:分片几种方式,我们常用的就是红框中的两种


第一种,比如按照表中的创建时间分片DATE_FORMAT(create_time,'%Y')='2020'的数据在table_2020,DATE_FORMAT(create_time,'%Y')='2021'的数据在table_2021等等。

第二种,按照一定的算法表达式,比如order_id%5算法分成5张表,笔者公司就是通过这种方式。


水平分表后,就会出现很多问题分表后的非分表字段查询、分表后的排序、分表后的分页查询等。


非分表字段查询:通过建立映射关系表方式解决,建一张分表键和非分表键的关系表,先通过非分表键找到分表键,然后确定表再进行查询。


分表后的排序、分表后分页:select * from table order by create_time desc limit 100,这条sql在没分表前直接就可以查询,分表后一般是这样解决分表查询每张分表order by limit 100的数据,然后通过程序聚合结果,最终得到limit 100的结果。


我们也可以通过中间件Sharding JDBC来实现分库分表,后续会专门介绍Shading JDBC的接入、实现、原理。

更多请关注公众号:别明天就今天吧

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“水平分表后如何查询,水平分表后如何查询数据,如何把8L水平分,水平分表如何查询数据”边界阅读