Hello Dmitry, Try using data streamer to add data in cache using parallel threads. It will give huge performance boost. Also make sure you understand walSetting=BACKGROUND implications before relaying on it.
Thanks, Gaurav On Wed, Oct 4, 2017 at 3:43 PM, Dmitry Pryakhin <[email protected] > wrote: > Hi Alexey, > > As Ilya suggested, setting walMode = BACKGROUND has brought performance > into > the area of expected values. My code that populates Postgre is below. > Thanks > a log for your reply. > > public class PopulatePostgre { > private static final char[] LETTERS = {'a', 'b', 'c', 'd', 'e', > 'f', 'g', > 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'x', > 'y', 'z'}; > private static final int L_SIZE = LETTERS.length; > > public static void main(String argv[]) throws Exception { > int idx0 = 0, idx1 = 0, idx2 = 0; > StringBuilder bf = new StringBuilder(); > > Class.forName("org.postgresql.Driver"); > try (Connection con = > DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", > "postgres", "postgres")) { > con.setAutoCommit(false); > try (Statement st = con.createStatement()) { > st.execute("create table test(kkey > varchar(10) primary key, val > varchar(200))"); > con.commit(); > } > > try (PreparedStatement pst = > con.prepareStatement("insert into test(kkey, > val) values(?, ?)")) { > long start = System.currentTimeMillis(); > for (int i = 0; i < 10000; i++) { > bf.setLength(0); > bf.append(LETTERS[idx0]). > append(LETTERS[idx1]).append(LETTERS[idx2]); > > if (++idx2 == L_SIZE) { > idx2 = 0; > if (++idx1 == L_SIZE) { > idx1 = 0; > if (++idx0 == > L_SIZE) { > idx0 = 0; > } > } > } > > pst.setString(1, > String.valueOf(i)); > pst.setString(2, bf.toString()); > pst.executeUpdate(); > con.commit(); > } > long end = System.currentTimeMillis(); > System.out.println("=== Execution time is > " + (end - start) + " ms."); > } > } > } > } > > > > > -- > Sent from: http://apache-ignite-users.70518.x6.nabble.com/ >
