分库后如何高效的做分页

现在连接6台mysql数据库,路由分库算法是根据id的hash值%6,根据值不同分别存入6台数据库。现在不知道如何做分页查询列表?

先决原则:

数据分库时尽量选择索引字段,最好此字段还是唯一的。

数据分库时建表时结合业务,选择where后查询比较频繁的字段。

解决方案泛泛之谈:

1、直接使用跨库的多表联合查询。

不建议。

2、向6台数据库server均发送一个查询请求,然后对所有查询结果进行汇总,再处理分页逻辑。

时间换空间。取20条有序数据,6台服务器各取20条,汇总排序返回。

3、建立一个总数据库,只负责维护主键和必要的索引,以供分页查询。

耦合业务,需要统计哪些sql需要维护哪些表的哪些字段。

可能会有冗余数据产生,需要同步冗余数据开销。

4、找一些靠谱的中间件,对内部实现封装,对外部实现透明。

譬如阿里的中间件,mycat等,不过挺难找到的。

时间: 2024-08-11 03:25:58

分库后如何高效的做分页的相关文章

如此高效通用的分页存储过程是带有sql注入漏洞的

原文:如此高效通用的分页存储过程是带有sql注入漏洞的 在google中搜索“分页存储过程”会出来好多结果,是大家常用的分页存储过程,今天我却要说它是有漏洞的,而且漏洞无法通过修改存储过程进行补救,如果你觉得我错了,请读下去也许你会改变看法. 通常大家都会认为存储过程可以避免sql注入的漏洞,这适用于一般的存储过程,而对于通用分页存储过程是不适合的,请看下面的代码和分析! 一般的通用的分页存储过程代码如下: 通用分页存储过程CREATE PROCEDURE pagination@tblName 

关于使用coreseek并为其做分页的介绍(转)

coreseek 做分页时找数据总量还真不好找.以为他会给一个方法(函数)什么的去获取,结果却不是.首先需要了解:num_matches: 当前返回的结果数,<= limit设置值.max_matches: 最多返回的结果数,默认为1000,用户最多只能看到1000条搜索结果.这个是在nf中设置的.total_found: 结果总数.索引中所有满足查询条件的文档总数.这个是在你查询的返回结果中的数组中有的.当然前提是你必须在query前设置:$this->sc->SetArrayResu

一个高效的数据分页的存储过程 可以轻松应付百万数据

一个高效的数据分页的存储过程 可以轻松应付百万数据 CREATE PROCEDURE pageTest --用于翻页的测试--需要把排序字段放在第一列 (@FirstID nvarchar(20)=null, --当前页面里的第一条记录的排序字段的值@LastID nvarchar(20)=null, --当前页面里的最后一条记录的排序字段的值@isNext bit=null, --true 1 :下一页:false 0:上一页@allCount int output, --返回总记录数@pag

上次课向同学们展示软件后,接受老师和同学们的意见后,我们小组做的总结!!!

韩江鹏: 在这次展示后,我们看到了别人的精彩处,也知道了自己的不足.尤其在软件测试方面,它还是不成熟了,经不起考验.除此之外,界面的优化和用户的体验也成为急切需要改变的东西.只剩2周了,我们要背水一战. 郭伟: 前段时间我们在做项目的时候有些松懈,导致我们的程序做出来达不到预期效果,跟其他组相比,我们有很大差距,在接下来两周的宝贵时间里我们会积极做项目,把我们的程序进一步改进,把功能更好的实现,我们会严格要求每一位组员,共同努力完成这个项目. 肖聪杰: 因为没有做完,分工和之前的冲突.需要重新分

用PHP+MySQL来做分页的演示

用php做分页弄懂逻辑关系其实不难,不过我在听课的时候估计是被老师讲的那些变量里的英文单词给听懵了,因为有几个变量的名字都很像,只是换了两三个英文字母而已,有的就少几个这样的,听到一半已经不知道老师讲的这个变量代表的是什么了,写这个也只是为了复习一下,温故而知新嘛. 英文翻译:page:页   per:由,依靠 //引用数据库 下面附赠一个连接数据库的包装函数使用sql语句时用my_query()这个函数:include ./MySQLDB.php: //先设置当前选中的页码数 $pageNum

python 将中文转拼音后填充到url做参数并写入excel

闲着没事写了个小工具,将中文转拼音后填充到url做参数并写如excel 一.先看下演示,是个什么东西 二.代码 代码用到一个中文转拼音的库,库是网上下的,稍微做了下修改,已经找不原来下载的地址了,然后需要装个pywin32库,用来写excel表格的,下面看代码. #!/usr/bin/env python # coding=utf-8# Author: ca0gu0 from lib.chinese2pinyin import search from time import sleep impo

php高效获取数据分页

mysql.php 获取数据库中的记录,完全个人经验总结,仅供参考! <?php /** *PHP+MYSQL数据库基本功能 *http://blog.csdn.net/yown */ ############################################ #获取序列ID ############################################ function getSequence() { $sql = "update sequence set id=

Manjaro安装后你需要这样做----未编辑完

Manjaro linux 安装后你需要这样做 1. 配置软件源 1.1 配置官方软件源 cnblogs_lemos sudo pacman-mirrors -i -c China -m rank //更新选择软件源 1.2 配置archlinuxcn中文源和开发工具源 修改 /etc/pacman.conf -> 末尾添加 [archlinuxcn] # SigLevel = Optional TrustedOnly SigLevel = Never Server = https://mirr

高效的SQLSERVER分页方案

Sqlserver数据库分页查询一直是Sqlserver的短板,假设有表ARTICLE,字段ID.YEAR,数据53210条(客户真实数据,量不大),分页查询每页30条,查询第1500页(即第45001-45030条数据),字段ID聚集索引,YEAR无索引,Sqlserver版本:2008R2 第一种方案:SELECT TOP 30 * FROM ARTICLE WHERE ID NOT IN(SELECT TOP 45000 ID FROM ARTICLE ORDER BY YEAR DESC