Im Verzeichnis DbVieleCommitsTest erzeugen: DbVieleCommits.java
import java.sql.*;
import java.text.SimpleDateFormat;
public class DbVieleCommits
{
public static void main( String[] args ) throws ClassNotFoundException, SQLException
{
int anzahl = 30000000;
String dbTbl = "MassenTest";
String dbDrv = "oracle.jdbc.OracleDriver";
String dbUrl = "jdbc:oracle:thin:@localhost:1521:XE";
String dbUsr = "TestUser";
String dbPwd = "TestUser";
dropAndCreateDbTable( dbTbl, dbDrv, dbUrl, dbUsr, dbPwd );
fillDbTable( anzahl, dbTbl, dbDrv, dbUrl, dbUsr, dbPwd );
}
static void dropAndCreateDbTable( String dbTbl, String dbDrv, String dbUrl, String dbUsr, String dbPwd )
throws ClassNotFoundException, SQLException
{
Connection cn = null;
Statement st = null;
try {
Class.forName( dbDrv );
cn = DriverManager.getConnection( dbUrl, dbUsr, dbPwd );
st = cn.createStatement();
try {
st.execute( "DROP TABLE " + dbTbl );
} catch( SQLSyntaxErrorException ex ) {
if( !ex.getMessage().contains( "ORA-00942" ) && !ex.getMessage().contains( "Unknown table 'massentest'" ) ) {
throw ex;
}
}
st.close();
st = cn.createStatement();
st.execute( "CREATE TABLE " + dbTbl + " ( id INT PRIMARY KEY, lastUpdate TIMESTAMP, meinText VARCHAR(100) )" );
} finally {
try { if( st != null ) { st.close(); } } catch( Exception ex ) {/* nothing to do */}
try { if( cn != null ) { cn.close(); } } catch( Exception ex ) {/* nothing to do */}
}
}
static void fillDbTable( int anzahl, String dbTbl, String dbDrv, String dbUrl, String dbUsr, String dbPwd )
throws ClassNotFoundException, SQLException
{
SimpleDateFormat df = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
Connection cn = null;
PreparedStatement st = null;
try {
Class.forName( dbDrv );
cn = DriverManager.getConnection( dbUrl, dbUsr, dbPwd );
st = cn.prepareStatement( "INSERT INTO " + dbTbl + " VALUES ( ?, ?, ? )" );
long anzahlZuletzt = 0;
long time = System.currentTimeMillis();
long nanoTimeZuletzt = System.nanoTime();
for( int i = 0; i < anzahl; i++ ) {
if( System.currentTimeMillis() >= time ) {
System.out.println( df.format( new java.util.Date() ) + ": " + i + " Commits, " + ((i - anzahlZuletzt + 5) / 10) + " Commits/Sekunde." );
time += 10000;
anzahlZuletzt = i;
}
long nanoTime = System.nanoTime();
st.setLong( 1, i );
st.setTimestamp( 2, new Timestamp( (new java.util.Date()).getTime() ) );
st.setString( 3, i + ", " + nanoTime + ", " + ((nanoTime - nanoTimeZuletzt + 500) / 1000) + " Microsekunden" );
st.execute();
nanoTimeZuletzt = nanoTime;
}
} finally {
try { if( st != null ) { st.close(); } } catch( Exception ex ) {/* nothing to do */}
try { if( cn != null ) { cn.close(); } } catch( Exception ex ) {/* nothing to do */}
}
}
}