1 5 package org.h2.test.db; 6 7 import java.sql.Connection ; 8 import java.sql.PreparedStatement ; 9 import java.sql.ResultSet ; 10 import java.sql.Statement ; 11 import java.util.Random ; 12 13 import org.h2.test.TestBase; 14 15 public class TestMemoryUsage extends TestBase { 16 17 private Connection conn; 18 19 private void reconnect() throws Exception { 20 if(conn != null) { 21 conn.close(); 22 } 23 conn = getConnection("memoryUsage"); 26 } 27 28 public void test() throws Exception { 29 deleteDb("memoryUsage"); 30 reconnect(); 31 insertUpdateSelectDelete(); 32 reconnect(); 33 insertUpdateSelectDelete(); 34 conn.close(); 35 } 36 37 void insertUpdateSelectDelete() throws Exception { 38 Statement stat = conn.createStatement(); 39 long time; 40 int len = getSize(1, 2000); 41 42 time = System.currentTimeMillis(); 44 stat.execute("DROP TABLE IF EXISTS TEST"); 45 trace("drop=" + (System.currentTimeMillis()-time)); 46 stat.execute("CREATE CACHED TABLE TEST(ID INT PRIMARY KEY, NAME VARCHAR(255))"); 47 PreparedStatement prep = conn.prepareStatement("INSERT INTO TEST VALUES(?, 'Hello World')"); 48 printTimeMemory("start", 0); 49 time = System.currentTimeMillis(); 50 for(int i=0; i<len; i++) { 51 prep.setInt(1, i); 52 prep.execute(); 53 if(i % 50000 == 0) { 54 trace(" " + (100*i/len) + "%"); 55 } 56 } 57 printTimeMemory("insert", System.currentTimeMillis()-time); 58 59 time = System.currentTimeMillis(); 61 prep = conn.prepareStatement("UPDATE TEST SET NAME='Hallo Welt' WHERE ID = ?"); 62 for(int i=0; i<len; i++) { 63 prep.setInt(1, i); 64 prep.execute(); 65 if(i % 50000 == 0) { 66 trace(" " + (100*i/len) + "%"); 67 } 68 } 69 printTimeMemory("update", System.currentTimeMillis()-time); 70 71 time = System.currentTimeMillis(); 73 prep = conn.prepareStatement("SELECT * FROM TEST WHERE ID = ?"); 74 for(int i=0; i<len; i++) { 75 prep.setInt(1, i); 76 ResultSet rs = prep.executeQuery(); 77 rs.next(); 78 if(rs.next()) { 79 error("one row expected, got more"); 80 } 81 if(i % 50000 == 0) { 82 trace(" " + (100*i/len) + "%"); 83 } 84 } 85 printTimeMemory("select", System.currentTimeMillis()-time); 86 87 Random random = new Random (1); 89 time = System.currentTimeMillis(); 90 prep = conn.prepareStatement("SELECT * FROM TEST WHERE ID = ?"); 91 for(int i=0; i<len; i++) { 92 prep.setInt(1, random.nextInt(len)); 93 ResultSet rs = prep.executeQuery(); 94 rs.next(); 95 if(rs.next()) { 96 error("one row expected, got more"); 97 } 98 if(i % 50000 == 0) { 99 trace(" " + (100*i/len) + "%"); 100 } 101 } 102 printTimeMemory("select randomized", System.currentTimeMillis()-time); 103 104 time = System.currentTimeMillis(); 106 prep = conn.prepareStatement("DELETE FROM TEST WHERE ID = ?"); 107 for(int i=0; i<len; i++) { 108 prep.setInt(1, random.nextInt(len)); 109 prep.executeUpdate(); 110 if(i % 50000 == 0) { 111 trace(" " + (100*i/len) + "%"); 112 } 113 } 114 printTimeMemory("delete", System.currentTimeMillis()-time); 115 } 116 117 118 } 119 | Popular Tags |