は、しかし、私は私のプログラムは、私の実装であるは、JDBCおよびマルチスレッド
SELECT * FROM TABLE WHERE ID = 123'
のような単純なSELECTステートメントを実行するのに約5分かかりますので、私は何か間違ったことをやっていると思います私は1つの接続オブジェクトを使用しています。私の実行方法
public void run() {
runQuery(conn, query);
}
によってRunQueryメソッドmainメソッドで最後に
public void runQuery(Connection conn, String queryString){
Statement statement;
try {
statement = conn.createStatement();
ResultSet rs = statement.executeQuery(queryString);
while (rs.next()) {}
} catch (SQLException e) {
e.printStackTrace();
}
}
で
、私は以下のスニペットを使用してスレッドを開始。
MyThread bmthread = new MyThread(conn, query);
ArrayList<Thread> allThreads = new ArrayList<>();
double start = System.currentTimeMillis();
int numberOfThreads = 1;
for(int i=0; i<=numberOfThreads; i++){
Thread th = new Thread(bmthread);
th.setName("Thread "+i);
System.out.println("Starting Worker "+th.getName());
th.start();
allThreads.add(th);
}
for(Thread t : allThreads){
try {
t.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
double end = System.currentTimeMillis();
double total = end - start;
System.out.println("Time taken to run threads "+ total);
アップデート:スレッドごとに別々の接続を使用しています。
ArrayList<Connection> sqlConn = new ArrayList<>();
for(int i =0; i<10; i++){
sqlConn.add(_ut.initiateConnection(windowsAuthURL, driver));
}
loop:
MyThread bmthread = new MyThread(sqlConn.get(i), query);
もう少し情報を追加できますか?どのデータベースを使用していますか?どのように接続を構築していますか?すべてのスレッドの内容がなくても1回のクエリでどれくらい時間がかかりますか? – adamM
私はSQL Server 2008を使用しています。スレッドのものがなければ、コードはミリ秒単位で実行されます。実際は1秒未満です。 – fanbondi