Commit 23f75ccb by Patryk Czarnik

DELETE przed Batch

parent 7141169b
package bazy.gotowe.postgresql; package bazy.gotowe.postgresql;
import java.sql.Connection; import java.sql.*;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class P10_Batch { public class P10_Batch {
...@@ -11,25 +8,32 @@ public class P10_Batch { ...@@ -11,25 +8,32 @@ public class P10_Batch {
int ID = 5000; int ID = 5000;
int ILE = 1000; int ILE = 1000;
final String sql = "INSERT INTO locations(location_id, street_address, postal_code, city, country_id)" String deleteSql = "DELETE FROM locations WHERE location_id BETWEEN ? AND ?";
final String insertSql = "INSERT INTO locations(location_id, street_address, postal_code, city, country_id)"
+ " VALUES(?,?,?,?,?)"; + " VALUES(?,?,?,?,?)";
try(Connection c = DriverManager.getConnection(Ustawienia.URL, Ustawienia.USER, Ustawienia.PASSWD); try(Connection c = DriverManager.getConnection(Ustawienia.URL, Ustawienia.USER, Ustawienia.PASSWD);
PreparedStatement stmt = c.prepareStatement(sql)) { PreparedStatement deleteStmt = c.prepareStatement(deleteSql);
PreparedStatement insertStmt = c.prepareStatement(insertSql)) {
c.setAutoCommit(false); // wyłączamy automatyczne commitowanie - przechodzimy w tryb traksakcji c.setAutoCommit(false); // wyłączamy automatyczne commitowanie - przechodzimy w tryb traksakcji
deleteStmt.setInt(1, ID);
deleteStmt.setInt(2, ID + ILE - 1);
int ileD = deleteStmt.executeUpdate();
System.out.println("Usunięto " + ileD + "rekordów.");
System.out.println("start"); System.out.println("start");
long poczatek = System.currentTimeMillis(); long poczatek = System.currentTimeMillis();
for(int i=0; i<ILE; i++) { for(int i=0; i<ILE; i++) {
stmt.setInt(1, ID + i); insertStmt.setInt(1, ID + i);
stmt.setString(2, "Jasna 23 " + i); insertStmt.setString(2, "Jasna 23 " + i);
stmt.setString(3, "01-234"); insertStmt.setString(3, "01-234");
stmt.setString(4, "Warszawa"); insertStmt.setString(4, "Warszawa");
stmt.setString(5, "UK"); insertStmt.setString(5, "UK");
stmt.addBatch(); insertStmt.addBatch();
if(i % 50 == 0) { if(i % 50 == 0) {
System.out.println(); System.out.println();
...@@ -39,7 +43,7 @@ public class P10_Batch { ...@@ -39,7 +43,7 @@ public class P10_Batch {
} }
System.out.print("\n***"); System.out.print("\n***");
// Wykonanie wszystkich poleceń zapamiętanych w batchu // Wykonanie wszystkich poleceń zapamiętanych w batchu
stmt.executeBatch(); insertStmt.executeBatch();
//c.rollback(); //c.rollback();
c.commit(); c.commit();
......
...@@ -10,26 +10,33 @@ public class P10_Batch_wersja_bez_batch_do_porownania { ...@@ -10,26 +10,33 @@ public class P10_Batch_wersja_bez_batch_do_porownania {
public static void main(String[] args) { public static void main(String[] args) {
int ID = 4000; int ID = 4000;
int ILE = 1000; int ILE = 1000;
final String sql = "INSERT INTO locations(location_id, street_address, postal_code, city, country_id)" String deleteSql = "DELETE FROM locations WHERE location_id BETWEEN ? AND ?";
final String insertSql = "INSERT INTO locations(location_id, street_address, postal_code, city, country_id)"
+ " VALUES(?,?,?,?,?)"; + " VALUES(?,?,?,?,?)";
try(Connection c = DriverManager.getConnection(Ustawienia.URL, Ustawienia.USER, Ustawienia.PASSWD); try(Connection c = DriverManager.getConnection(Ustawienia.URL, Ustawienia.USER, Ustawienia.PASSWD);
PreparedStatement stmt = c.prepareStatement(sql)) { PreparedStatement deleteStmt = c.prepareStatement(deleteSql);
PreparedStatement insertStmt = c.prepareStatement(insertSql)) {
c.setAutoCommit(false); // wyłączamy automatyczne commitowanie - przechodzimy w tryb traksakcji c.setAutoCommit(false); // wyłączamy automatyczne commitowanie - przechodzimy w tryb traksakcji
deleteStmt.setInt(1, ID);
deleteStmt.setInt(2, ID + ILE - 1);
int ileD = deleteStmt.executeUpdate();
System.out.println("Usunięto " + ileD + "rekordów.");
System.out.println("start"); System.out.println("start");
long poczatek = System.currentTimeMillis(); long poczatek = System.currentTimeMillis();
for(int i=0; i<ILE; i++) { for(int i=0; i<ILE; i++) {
stmt.setInt(1, ID + i); insertStmt.setInt(1, ID + i);
stmt.setString(2, "Jasna 14/16a lok. " + i); insertStmt.setString(2, "Jasna 14/16a lok. " + i);
stmt.setString(3, "01-234"); insertStmt.setString(3, "01-234");
stmt.setString(4, "Warszawa"); insertStmt.setString(4, "Warszawa");
stmt.setString(5, "UK"); insertStmt.setString(5, "UK");
stmt.executeUpdate(); insertStmt.executeUpdate();
if(i % 50 == 0) { if(i % 50 == 0) {
System.out.println(); System.out.println();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment