Ignite的jdbc与网格的连接方式的查询性能对比
2019独角兽企业重金招聘Python工程师标准>>>
环境:
数据量100万
Ignite2.5
Windows10 8g
- jdbc方式连接
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;
public class IgniteQury {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
// TODO Auto-generated method stub
//连接远程单节点ignite
Class.forName("org.apache.ignite.IgniteJdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:ignite:thin://ip:10800");
PreparedStatement ps = conn.prepareStatement("select s.*,i.* from staff s join internetcafe i on s.ID=i.STAFFID"
+" union all "
+"select s.*,p.TrackID,p.STAFFID,concat(concat(p.TAKEOFFNAME,','),p.FALLDOWNNAME) FLIGHTADD,p.FLIGHTDATE from staff s left join plane p on s.ID=p.STAFFID");
// +" union all "
// +"select s.*,t.TrackID,t.STAFFID,concat(concat(t.OUTSETNAME,','),t.TERMINAL) TRIVALADD,t.travelDate from staff s join train t on s.ID=t.STAFFID");
long t1 = System.currentTimeMillis();
ResultSet res=ps.executeQuery();
long t2 = System.currentTimeMillis();
long t3=t2-t1;
float s=(float)t3/1000;
System.out.println("执行时间:"+s+"秒");
}
}
使用jdbc连接,用java程序取数据,合并两个查询子集,查询时间50几秒,合并三个查询子集,拉跨ignite
- 网格方式连接
import java.util.Arrays;
import java.util.List;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.Ignition;
import org.apache.ignite.cache.query.QueryCursor;
import org.apache.ignite.cache.query.SqlFieldsQuery;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi;
import org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder;
public class IgniteCollocationQuery {
public static void main(String[] args) {
// TODO Auto-generated method stub
TcpDiscoverySpi spi = new TcpDiscoverySpi();
TcpDiscoveryVmIpFinder ipFinder = new TcpDiscoveryVmIpFinder();
ipFinder.setAddresses(Arrays.asList("ip:47500..47509"));
// spi.setJoinTimeout(4000);
spi.setIpFinder(ipFinder);
IgniteConfiguration cfg = new IgniteConfiguration();
cfg.setDiscoverySpi(spi);
cfg.setClientMode(true);
Ignition.setClientMode(true);
Ignite ignite = Ignition.start(cfg);
// IgniteCache() cache = ignite.cache("SQL_PUBLIC_STAFF");
CacheConfiguration ccfg = new CacheConfiguration();
ccfg.setName("SQL_PUBLIC_STAFF");
IgniteCache cache = ignite.getOrCreateCache(ccfg);
// SqlFieldsQuery query = new SqlFieldsQuery("select * from staff");
SqlFieldsQuery query = new SqlFieldsQuery("select s.*,i.* from staff s join internetcafe i on s.ID=i.STAFFID"
+" union all "
+"select s.*,p.TrackID,p.STAFFID,concat(concat(p.TAKEOFFNAME,','),p.FALLDOWNNAME) FLIGHTADD,p.FLIGHTDATE from staff s left join plane p on s.ID=p.STAFFID"
+" union all "
+"select s.*,t.TrackID,t.STAFFID,concat(concat(t.OUTSETNAME,','),t.TERMINAL) TRIVALADD,t.travelDate from staff s join train t on s.ID=t.STAFFID");
//设置collocation可用
query.setDistributedJoins(true);
long t1 = System.currentTimeMillis();
QueryCursor<List<?>> cursor=cache.query(query);
long t2 = System.currentTimeMillis();
long t3=t2-t1;
float s=(float)t3/1000;
System.out.println("执行时间:"+s+"秒");
}
}
使用网格连接,合并三个查询子集,1.9秒,设置query.setDistributedJoins(true)性能提升10倍,0.19秒
转载于:https://my.oschina.net/zhouwang93/blog/1833043
Ignite的jdbc与网格的连接方式的查询性能对比相关推荐
- java jdbc数据库五种连接方式
jdbc数据库连接方式(迭代) 方式五为最终版本 方式一 @Testpublic void testConnection() throws SQLException { // 1.获取Driver的实 ...
- Java文件读取方式和效率性能对比
场景描述 文件大小 8.67G的json文件,一共670万行. 服务器内存:2g.(只能读取一定缓冲数据,然后处理后继续读取,不能一次性加载到内存) 读取文件的内容出来,并未做业务处理. 读取方式和性 ...
- JDBC 获取数据库的连接方式
要连接数据库需要 数据库的url MySQL的用户名和密码 创建驱动(当用反射加载的时候会自动创建驱动) 获得链接 在这里介绍几种连接数据库的方式 第一种 private static void me ...
- 各种数据库的jdbc驱动下载及连接方式
各种数据库驱动 数据库名称 下载地址 说明 Mysql http://www.mysql.com/products/connector/j/ Shipped. But need to download ...
- 使用无锁的方式和有锁的方式的程序性能对比
这里分别使用有锁和无锁两种方式,对一个数值进行增加,一直增加到100000,然后输出使用时间的长短. 1 import java.util.concurrent.ExecutorService; 2 ...
- SQL行转列方式优化查询性能实践
文章目录 问题 优化过程 SQL分析 问题 案例:项目中发现如下类似SQL,该查询语句非常低下,嵌套子查询 SELECT info.* from A info where EXISTS (SELECT ...
- Android4种网络连接方式的比较
比较的指标: 1.cpu 2.流量 3.电量 4.内存占用 5.联网时间 功能点: 1.重试机制 2.提供的扩展功能 3.易用性 4.是否https 5.是否支持reflect api,OkHttp有 ...
- 【嵌入式开发】ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )
文章目录 一. 内存 简介 1. 两大内存分类 ( 1 ) DRAM 简介 ( 定期刷新 | 速度慢 | 成本低 ) ( 2 ) SRAM 简介 ( 不需刷新 | 存取速度快 | 功耗大 | 成本高 ...
- 转:ORACLE的JDBC连接方式:OCI和THIN
oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracl ...
最新文章
- BZOJ 2257: [Jsoi2009]瓶子和燃料【数论:裴蜀定理】
- PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
- Python入门100题 | 第071题
- React开发(109):引用错误 报错
- blender 3d打印_如何在Blender中开始3D打印
- xp计算机用户密码设置,XP怎么设置开机密码_XP系统设置开机密码教程-192路由网...
- mysql选择哪个隔离级别更好_深入理解Mysql的四种隔离级别
- 面向对象基础实战——飞机大战
- Apple Push Notification service
- 白盒测试-判定条件覆盖
- xp mysql 5.6安装版下载地址_xp系统安装版下载,xp系统安装版下载地址
- 【正一专栏】西甲天王山之战梅西一剑封喉!
- VS 显示方法引用的设置方法
- 纸壳CMS列表Grid的配置
- 计算机类专科学校排名,2017计算机专科学校排名一览表
- 腾讯云游戏云服务器具有哪些优点
- 三层架构与四大天王之——改
- Spring注入Bean的七种方式
- vue未登录跳转至登录页面
- 《Android 4高级编程(第3版)》(完整书签).pdf