Ignite的jdbc与网格的连接方式的查询性能对比

简介: Ignite的jdbc与网格的连接方式的查询性能对比

Ignite的jdbc与网格的连接方式的查询性能对比
环境:
数据量100万
Ignite2.5
Windows10 8g

  1. jdbc方式连接
  2. 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. 网格方式连接
  2. 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("192.168.76.95: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秒

相关文章
|
1月前
|
安全 Java 数据库连接
gbase8a JDBC常用特性-Kerberos认证方式连接
JDBC常用特性-Kerberos认证方式连接
|
1月前
|
Java 数据库连接 网络安全
JDBC常用特性-SSH隧道连接
JDBC常用特性-SSH隧道连接
|
5月前
|
Java 数据库连接
JDBC连接复习
JDBC连接复习
57 1
|
5月前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
Java开发者必知:JDBC连接数据库的“三大法宝”
59 7
|
5月前
|
SQL Java 数据库连接
JDBC连接SQL Server2008 完成增加、删除、查询、修改等基本信息基本格式及示例代码
这篇文章提供了使用JDBC连接SQL Server 2008数据库进行增加、删除、查询和修改操作的基本步骤和示例代码。
|
5月前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
5月前
|
Java 关系型数据库 MySQL
使用JDBC连接ADB
【8月更文挑战第6天】
183 0
|
6月前
|
Java 关系型数据库 MySQL
使用MySQL JDBC连接数据库
使用MySQL JDBC连接数据库
|
6月前
|
SQL Java 关系型数据库
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
Java面试题:描述JDBC的工作原理,包括连接数据库、执行SQL语句等步骤。
88 0
|
6月前
|
Java 关系型数据库 MySQL
使用MySQL JDBC连接数据库
使用MySQL JDBC连接数据库