2019独角兽企业重金招聘Python工程师标准>>>

环境:

数据量100万

Ignite2.5

Windows10 8g

  1. 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

  1. 网格方式连接

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与网格的连接方式的查询性能对比相关推荐

  1. java jdbc数据库五种连接方式

    jdbc数据库连接方式(迭代) 方式五为最终版本 方式一 @Testpublic void testConnection() throws SQLException { // 1.获取Driver的实 ...

  2. Java文件读取方式和效率性能对比

    场景描述 文件大小 8.67G的json文件,一共670万行. 服务器内存:2g.(只能读取一定缓冲数据,然后处理后继续读取,不能一次性加载到内存) 读取文件的内容出来,并未做业务处理. 读取方式和性 ...

  3. JDBC 获取数据库的连接方式

    要连接数据库需要 数据库的url MySQL的用户名和密码 创建驱动(当用反射加载的时候会自动创建驱动) 获得链接 在这里介绍几种连接数据库的方式 第一种 private static void me ...

  4. 各种数据库的jdbc驱动下载及连接方式

    各种数据库驱动 数据库名称 下载地址 说明 Mysql http://www.mysql.com/products/connector/j/ Shipped. But need to download ...

  5. 使用无锁的方式和有锁的方式的程序性能对比

    这里分别使用有锁和无锁两种方式,对一个数值进行增加,一直增加到100000,然后输出使用时间的长短. 1 import java.util.concurrent.ExecutorService; 2 ...

  6. SQL行转列方式优化查询性能实践

    文章目录 问题 优化过程 SQL分析 问题 案例:项目中发现如下类似SQL,该查询语句非常低下,嵌套子查询 SELECT info.* from A info where EXISTS (SELECT ...

  7. Android4种网络连接方式的比较

    比较的指标: 1.cpu 2.流量 3.电量 4.内存占用 5.联网时间 功能点: 1.重试机制 2.提供的扩展功能 3.易用性 4.是否https 5.是否支持reflect api,OkHttp有 ...

  8. 【嵌入式开发】ARM 内存操作 ( DRAM SRAM 类型 简介 | Logical Bank | 内存地址空间介绍 | 内存芯片连接方式 | 内存初始化 | 汇编代码示例 )

    文章目录 一. 内存 简介 1. 两大内存分类 ( 1 ) DRAM 简介 ( 定期刷新 | 速度慢 | 成本低 ) ( 2 ) SRAM 简介 ( 不需刷新 | 存取速度快 | 功耗大 | 成本高 ...

  9. 转:ORACLE的JDBC连接方式:OCI和THIN

    oracle的jdbc连接方式:oci和thin oci和thin是Oracle提供的两套Java访问Oracle数据库方式. thin是一种瘦客户端的连接方式,即采用这种连接方式不需要安装oracl ...

最新文章

  1. BZOJ 2257: [Jsoi2009]瓶子和燃料【数论:裴蜀定理】
  2. PyQt5 技术篇-设置输入框的placeholder方法,Qt Designer设置Line Edit、Text Edit编辑框的placeholder
  3. Python入门100题 | 第071题
  4. React开发(109):引用错误 报错
  5. blender 3d打印_如何在Blender中开始3D打印
  6. xp计算机用户密码设置,XP怎么设置开机密码_XP系统设置开机密码教程-192路由网...
  7. mysql选择哪个隔离级别更好_深入理解Mysql的四种隔离级别
  8. 面向对象基础实战——飞机大战
  9. Apple Push Notification service
  10. 白盒测试-判定条件覆盖
  11. xp mysql 5.6安装版下载地址_xp系统安装版下载,xp系统安装版下载地址
  12. 【正一专栏】西甲天王山之战梅西一剑封喉!
  13. VS 显示方法引用的设置方法
  14. 纸壳CMS列表Grid的配置
  15. 计算机类专科学校排名,2017计算机专科学校排名一览表
  16. 腾讯云游戏云服务器具有哪些优点
  17. 三层架构与四大天王之——改
  18. Spring注入Bean的七种方式
  19. vue未登录跳转至登录页面
  20. 《Android 4高级编程(第3版)》(完整书签).pdf

热门文章

  1. docke跨主机通信之gre隧道
  2. spark1.1.0学习路线
  3. ASP.NET-FineUI开发实践-14
  4. foo、bar、baz三兄弟
  5. Spring Boot Spring MVC 异常处理的N种方法
  6. 一键清理 Nexus 中无用的 Docker 镜像
  7. 【Win 10 应用开发】将墨迹保存到图像的两种方法
  8. Python之Selenium的爬虫用法
  9. Error:(23, 25) 错误: 程序包R不存在
  10. AngularJS中的指令全面解析(必看)