si项目,现在连接6台mysql数据库,路由分库算法是根据id的hash值%6,根据值不同分别存入6台数据库。现在不知道如何做分页查询列表,请问有谁知道吗
mysql 分表分页查询解决思路
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 分表分页查询解决思路相关的知识,希望对你有一定的参考价值。
参考技术A 当业务上按照月份分表,但是前端h5需要分页展示,小伙伴们不知有没有遇到这个这个需求最后怎么完成的。我这里想了一个解决思路,可能还不完善,希望能抛转引玉。
1、入参pageNo 为页号码,如果为1那么就是第一页。pageSize 可以是入参也可定死,这里定死10条。Limit 是数据偏移标记,根据入参pageNo 计算出来的,Limit=(pageNo-1)*pageSize。假设A表有41条数据符合,B表有51条数据符合,如下图。
有几种种情况 1.如果limit<A表41条 那么需要从A表中取数据,(1)如果Limit+pageSize<Count直接获取数据即可(2)如果Limit+pageSize>Count,那么需要从A 表取部分数据从B表取一部分数据。
1.如果limit>A表41条 那么需要从B表取数据,如果B数据依然不足,那么重复以上的步骤。如下图
mysql分库 分页查询
Mysql海量数据分表分库如何列表分页?
1.现在使用ElasticSearch了。基于Lucene的解决方案
2.必须将mysql里的数据写入到类似hbase这样的分布式数据库,查询快。但分页、查询的话,可以在hbase前加一层solr,用于建立数据索引
以上是关于mysql 分表分页查询解决思路的主要内容,如果未能解决你的问题,请参考以下文章
1、直接使用跨库的多表联合查询。不建议。
2、向6台数据库server均发送一个查询请求,然后对所有查询结果进行汇总,再处理分页逻辑。
3、建立一个总数据库,只负责维护主键和必要的索引,以供分页查询。
4、使用redis维护一个主键序列,分页操作就是截取该序列的一部分,其结果就是主键id集合。拿到id后便可以映射到多台mysql服务器上查询数据了。但毕竟数据被分布式存储了,取到完整结果集必须要多次、多台的数据库访问,这个肯定是避免不了。
注:“多台”数据库访问的问题无解,但同台“多次”数据库访问的问题可以通过程序优化。
复杂查询情况下,只去前20页的内容。。也就是默认取200条,然后200*10做好排序,然后去前200条,分20页给用户显示出来。
对于基于日期,序号的有序数组的分页,可以记录当前分页最后一个的被分页的值,作为stub,然后往后组装。
单纯就索引来说的话,可以试试一些专门做全文索引的服务软件。
不过这个只是我的想法,功能上应该可以,没实际中这样跑过,不知道稳定性怎么样
向每个库发送同样的数据,汇总,排序,分页
为毛不用mycat
你需要一个中间件
试试 Amoeba for MySQL 看看行不行