dblink查询_分库数据如何查询统计

分库后的计算不能直接使用SQL;异构库 SQL 函数不尽相同;JAVA 硬编码实施难度大;即使借助透明网关访问远程数据库,分库性能优化也是头疼问题。

一般常规办法:

方法1:java硬编码

简单的跨库count运算,Java部分代码大概要写成这样:

public Connection getConnection(String drivername,String url, String username, String password) {

try {

Class.forName(drivername);

conn = DriverManager.getConnection(url, username, password);

} catch (Exception e) {

System.out.println("DBUtils.getConnection_FAILED!");

e.printStackTrace();

}

return conn;

}

Connection conn1 = DBUtils.getConnection(URL1, USER1, PASSWORD1);

Connection conn2 = DBUtils.getConnection(URL2, USER2, PASSWORD2);

String sql = "select count(*) c from sales";

PreparedStatement ptmt1 = conn1.prepareStatement(sql);

PreparedStatement ptmt2 = conn1.prepareStatement(sql);

ResultSet rs1 = ptmt1.executeQuery();

ResultSet rs2 = ptmt2.executeQuery();

return rs1.getInt("c") + rs2.getInt("c");

方法2:透明网关

例如oracle的dblink

8ee7d01a1e615a04bece356c875c7bd9.png

带有DBLINK的SQL,优化起来很复杂。可以通过分析执行计划,利用collocated inline view,driving_site hint 等手段,来优化这些带有DBLINK的SQL。但这即使对于一名经验丰富的DBA来说,也是件很头疼、很费劲的事。

这种情况下,如果有集算器就简单很多,看下面这个例子:

n个库的count运算。该运算需要在各分库中分别进行 count,对各分库的结果,在汇总阶段要用sum求和,集算器(SPL)仅4行就可以搞定了。

AB1=n.(connect("mysql"+string(~)))//获取n个分库的连接2=SQL="select count(*) c from sales"//需要在分库中执行的SQL3=A1.(~.cursor(SQL))//在n个分库中执行 SQL4=A3.conjx().total(sum(c))//将各分库算出的count值进行汇总

即使分库数据库为异构的情况,集算器也可以通过SQL翻译功能方便地进行SQL转化,为不同数据库提供可执行的SQL。

利用集算器还可根据数据特征,轻松写出具有针对性的高性能代码,无需大量硬编码,即可实现高效的算法 。诸如排序、top、分组、去重、连接等各类分库运算,都可以轻松实现,感兴趣可以参考:分库后的查询统计

集算器还很容易嵌入到Java应用程序中,Java如何调用SPL脚本有使用和获得它的方法。

关于集算器安装使用、获得免费授权和相关技术资料,可以参见如何使用集算器。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457821.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

类的继承案例解析&#xff0c;python相关知识延伸 作者&#xff1a;白宁超 2016年10月10日22:36:57 摘要&#xff1a;继<快速上手学python>一文之后&#xff0c;笔者又将python官方文档认真学习下。官方给出的pythondoc入门资料包含了基本要点。本文是对文档常用核心要点…

领域驱动设计:软件核心复杂性应对之道_人人都可以领域驱动设计(一)

最近几年&#xff0c;领域驱动设计&#xff08;Domain-Driven Design&#xff0c;DDD&#xff09;这个术语越来越多地出现在软件工程师的视野里。对DDD不熟悉的人可能会觉得它是软件领域里的一个新的概念&#xff0c;但是实际上&#xff0c;Eric Evans在十几年前就已经提出了这…

linux 进程通信 消息队列

详解linux进程间通信-消息队列 前言&#xff1a;前面讨论了信号、管道的进程间通信方式&#xff0c;接下来将讨论消息队列。 一、系统V IPC 三种系统V IPC&#xff1a;消息队列、信号量以及共享内存&#xff08;共享存储器&#xff09;之间有很多相似之处。 每个内核中的 I P …

wx.checkjsapi是写在config里面吗_用Python写一个程序,解密游戏内抽奖的秘密

前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。作者&#xff1a; 极客挖掘机PS&#xff1a;如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http://t.cn/A6Zvjdun分析需求我们先整理下思…

Dev C++安装第三方库boost

Dev_C安装第三方库boost 安装步骤 准备工作下载boost库&#xff0c;下载地址https://sourceforge.net/projects/boost/1. 设置GCC的环境变量PATH 设置环境变量path,在其中加上DEV-C编译器的路径&#xff08;gcc.exe所在路径&#xff09;&#xff0c;如C:\Program Files (x86)…

bash的一些小技巧

1、从输入读入变量 eg:read -ep "input yes or no: " flag 用e选项表示编辑&#xff0c;可以使用backspace删除 2、数组 a、索引数组 declare -a arr(var1 var2 var3) 用空格分割&#xff0c;如果直接访问变量$arr&#xff0c; 则获取的是数组的第一个元素&#xff0…

golang switch_为什么程序员都不喜欢使用 switch ,而是大量的 if……else if ?

点击上方“我要学编程”&#xff0c;选择“置顶/星标公众号”福利干货&#xff0c;第一时间送达&#xff01;来自 | C语言Plus请用5秒钟的时间查看下面的代码是否存在bug。OK&#xff0c;熟练的程序猿应该已经发现Bug所在了&#xff0c;在第13行下面我没有添加关键字break; 这就…

RabbitMQ 安装与简单使用

在企业应用系统领域&#xff0c;会面对不同系统之间的通信、集成与整合&#xff0c;尤其当面临异构系统时&#xff0c;这种分布式的调用与通信变得越发重要。其次&#xff0c;系统中一般会有很多对实时性要求不高的但是执行起来比较较耗时的地方&#xff0c;比如发送短信&#…

windows svn

windows svn 1.1Svn和VisualSvn介绍 VisualSvn Server2.5.6&#xff08;版本控制服务器&#xff09;免费开源软件 是基于Windows平台上的Subversion服务器&#xff0c;它是免费的 官方下载&#xff1a; http://www.visualsvn.com/files/VisualSVN-Server-2.5.6.msi TortoiseSvn…

docker-compose下载慢_编写Docker Compose时要注意的五大常见错误

在构建容器化的应用时&#xff0c;开发人员往往需要某种方法来引导启动目标容器&#xff0c;以对其进行代码级别的测试。尽管业界有许多方法可以实现该目的&#xff0c;但Docker Compose是目前最受欢迎的一种方法。它能够让如下两个方面变得容易实现&#xff1a;指定在开发过程…

frame越过另一个frame_拥抱swoole(三)之用php实现一个混合服务器

混合服务器&#xff0c;就是可以同时支持http&#xff0c;websocket&#xff0c;tcp等的服务器&#xff0c;用swoole就是这么简单&#xff0c;分分钟&#xff0c;就可以愉快地搞物联网开发了&#xff0c;啥都支持&#xff0c;我采用官方的例子&#xff0c;创建一个混合服务器&a…

Hibernate学习系列————注解一对多单向实例

2019独角兽企业重金招聘Python工程师标准>>> 开发环境&#xff1a;MysqlEclipse 一对多单向的列子原理&#xff1a;一个班级&#xff0c;多个学生&#xff0c;学生端为多的一端&#xff0c;他们拥有一个外键指向相同的班级。 项目结构 需要的jar包 hibernate.cfg.xm…

sudo apt-get nmap 报错锁占用

在Ubuntu中用apt-get命令安装软件是出现如下错误&#xff1a; 网上搜了一下原因&#xff0c;说是有另外一个程序在运行&#xff0c;导致锁不可用&#xff0c;原因可能是赏析运行更新或安装没有正常完成。这是因为上次更新或者安装没有正常完成。 网上的两种解决方法&#xff1…

python逐行读取txt写入excel_用python从符合一定格式的txt文档中逐行读取数据并按一定规则写入excel(openpyxl支持Excel 2007 .xlsx格式)...

前几天接到一个任务&#xff0c;从gerrit上通过ssh命令获取一些commit相关的数据到文本文档中&#xff0c;随后将这些数据存入Excel中。数据格式如下图所示观察上图可知&#xff0c;存在文本文档中的数据符合一定的格式&#xff0c;通过python读取、正则表达式处理并写入Excel文…

Extjs 之 initComponent 和 constructor的区别(转)

在创建自定义类时&#xff0c;先构造&#xff08;constructor)后初始化&#xff08;initComponent&#xff09;。如&#xff1a;&#xff08;在旧的Extjs 版本中使用 Ext.extend 实现扩展&#xff09; Ext.define(Btn,{ extend:Ext.button.Button, init…

hive遍历_从Hive中的stored as file_foramt看hive调优

一、行式数据库和列式数据库的对比1、存储比较行式数据库存储在hdfs上式按行进行存储的&#xff0c;一个block存储一或多行数据。而列式数据库在hdfs上则是按照列进行存储&#xff0c;一个block可能有一列或多列数据。2、压缩比较对于行式数据库&#xff0c;必然按行压缩&#…

帮助孩子学会感恩_页数204_出版日期2015.03_完整版PDF电子书下载

帮助孩子学会感恩_页数204_出版日期2015.03_完整版PDF电子书下载 带索引书签目录高清版_13813212 下载链接http://pan.baidu.com/s/1geEmUeZ 【作 者】&#xff08;英&#xff09;蒂姆惠特尼&#xff08;TimWhitney&#xff09;著【丛书名】陪孩子成长系列丛书【形态项】 204 …

xwpftablecell设置字体样式_HTML的文字样式

font 属性可以用来作为 font-style, font-variant, font-weight, font-size, line-height 和 font-family 属性的简写&#xff0c;或将元素的字体设置为系统字体。字体修改font-family 属性&#xff1a;设置HTML页面中的字体font-size 属性&#xff1a;设置字体大小font-weight…

15-CSS基础-浮动流

浮动 网页的布局方式 什么是网页的布局方式? 网页的布局方式其实就是指浏览器是如何对网页中的元素进行排版的 标准流(文档流/普通流)排版方式 其实浏览器默认的排版方式就是标准流的排版方式在CSS中将元素分为三类, 分别是块级元素/行内元素/行内块级元素在标准流中有两种排版…

git-- 使用

git 使用时两个人冲突: Resolve conflicts