package my.test.store; import my.test.TestBase; import org.h2.engine.ConnectionInfo; import org.h2.engine.Constants; import org.h2.engine.Database; import org.h2.store.PageStore; import org.h2.store.fs.FileUtils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import java.util.Properties; //找断点条件indexName.equalsIgnoreCase("idx_name"); getName().equalsIgnoreCase("idx_name"); //index.getName().equalsIgnoreCase("idx_name"); //tableFilter.getTable().getName().equalsIgnoreCase("PageStoreTest"); public class PageStoreTest extends TestBase { public static void main(String[] args) throws Exception { new PageStoreTest().start(); } @Override public void init() throws Exception { //prop.setProperty("TRACE_LEVEL_FILE", "10"); //prop.setProperty("TRACE_LEVEL_SYSTEM_OUT", "20"); //prop.setProperty("ACCESS_MODE_DATA", "r"); //PAGE_SIZE参数必须在64到32768(32K)之间,即64<=PAGE_SIZE<=32768,并且是2的n次幂(n>=0) //prop.setProperty("PAGE_SIZE", "32769"); //prop.setProperty("PAGE_SIZE", "1024"); //prop.setProperty("FILE_LOCK", "FS"); } @Override public void startInternal() throws Exception { //stmt.executeUpdate("SET DB_CLOSE_DELAY -1"); stmt.executeUpdate("DROP TABLE IF EXISTS PageStoreTest"); stmt.executeUpdate("CREATE TABLE IF NOT EXISTS PageStoreTest(id int not null, name varchar(500) not null, address varchar(500))"); stmt.executeUpdate("CREATE INDEX IF NOT EXISTS idx_name ON PageStoreTest(name asc)"); //stmt.executeUpdate("CREATE index IF NOT EXISTS idx_name ON PageStoreTest(name desc)"); sql = "select * from SYS"; sql = "select id, type, sql from SYS"; sql = "select sql from SYS"; executeQuery(); //stmt.executeUpdate("DROP ALL OBJECTS DELETE FILES"); } /** * @param args */ public static void main0(String[] args) { String databaseName = "mydb"; //FileUtils.delete("E:/H2/eclipse-workspace-client/mydb.h2.db"); FileUtils.delete("E:/H2/eclipse-workspace-server/mydb.h2.db"); Database db = new Database(new ConnectionInfo(databaseName), null); PageStore ps = new PageStore(db, databaseName + Constants.SUFFIX_PAGE_FILE, "rw", 16384); //ps.setPageSize(16384); ps.setPageSize(1024); ps.setLogMode(2); ps.setLockFile(true); //ps.open(); System.out.println("ddd"); } //重点测试find public static void main1(String[] args) throws Exception { Properties prop = new Properties(); prop.setProperty("user", "sa"); prop.setProperty("password", ""); //prop.setProperty("MODE", "DB2"); //支持SYSDUMMY1 int len = 256; StringBuilder s = new StringBuilder(len); for (int i = 1; i <= len; i++) { s.append("a"); } // prop.setProperty("TRACE_LEVEL_FILE", "10"); // prop.setProperty("TRACE_LEVEL_SYSTEM_OUT", "20"); // prop.setProperty("PAGE_SIZE", "1024"); // prop.setProperty("FILE_LOCK", "FS"); prop.setProperty("ACCESS_MODE_DATA", "rw"); prop.setProperty("CACHE_SIZE", "4096"); prop.setProperty("PAGE_SIZE", "128"); prop.setProperty("LOG", "0"); //0: LOG_MODE_OFF, 2: LOG_MODE_SYNC prop.setProperty("CACHE_TYPE", "TQ"); //只有两种: LRU、TQ或者加“SOFT_”前缀 prop.setProperty("FILE_LOCK", "FS"); //有5种: NO、FILE、SOCKET、SERIALIZED、FS //prop.setProperty("MVCC", "true"); String url = "jdbc:h2:tcp://localhost:9092/mydb6"; Connection conn = DriverManager.getConnection(url, prop); conn.setAutoCommit(false); Statement stmt = conn.createStatement(); ResultSet rs = null; //stmt.executeUpdate("DROP TABLE IF EXISTS PageStoreTest"); stmt.executeUpdate("CREATE TABLE IF NOT EXISTS PageStoreTest(id int not null, name varchar(500) not null, address varchar(500))"); stmt.executeUpdate("CREATE INDEX IF NOT EXISTS idx_name ON PageStoreTest(name asc)"); //stmt.executeUpdate("CREATE index IF NOT EXISTS idx_name ON PageStoreTest(name desc)"); // long ii = 1000000001L; // for (int i = 1; i <= 200; i++) { // //stmt.executeUpdate("insert into PageStoreTest(id, name) values(" + i + ", '" + s + "abcdef1234')"); // //stmt.executeUpdate("insert into PageStoreTest(id, name, address) values(" + i * 10 + ", 'abcdef1234', 'zzz')"); // //stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(" + i + ", '" + ii + "', 'zzz')"); // ii++; // } // //stmt.executeUpdate("insert into PageStoreTest(id, name) values(" + 101 + ", '" + s + "abcdef1234')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(10, '1000000001', 'a')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(20, '1000000002', 'b')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(30, '1000000003', 'c')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(40, '1000000004', 'd')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(50, '1000000005', 'e')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(60, '1000000006', 'f')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(70, '1000000007', 'g')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(80, '1000000008', 'h')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(90, '1000000009', 'i')"); // // //stmt.executeUpdate("insert into PageStoreTest(id, name, address) SORTED values(30, '1000000003', 'c')"); // //stmt.executeUpdate("delete from PageStoreTest where id=40"); // stmt.executeUpdate("delete from PageStoreTest where id=30"); //conn.commit(); // stmt.executeUpdate("delete from PageStoreTest where id=2"); // stmt.executeUpdate("delete from PageStoreTest where id>300"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) values(" + 300 + ", '" + 300 + "abcdef1234', 'zzz')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) values(" + 301 + ", '" + 302 + "abcdef1234', 'zzz')"); // stmt.executeUpdate("insert into PageStoreTest(id, name, address) values(" + 2 + ", '" + 2 + "abcdef1234', 'zzz')"); // // stmt.executeUpdate("update PageStoreTest set name='1234567890' where id>10"); String sql = null; sql = "select name,id from PageStoreTest where name>='1000000004'"; sql = "select name,id from PageStoreTest where name between '1000000004' and '1000000006'"; rs = stmt.executeQuery(sql); while (rs.next()) { System.out.println(rs.getString(1)); } //stmt.executeUpdate("TRUNCATE TABLE PageStoreTest"); //stmt.executeUpdate("drop index IF EXISTS idx_name"); conn.commit(); //conn.rollback(); rs.close(); stmt.close(); conn.close(); } }