Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mysqltest;
- import java.sql.Statement;
- import java.sql.SQLException;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.Connection;
- public class ThreadForMysql implements Runnable
- {
- //Allgemeine Parameter
- private Thread t;
- private String threadName;
- private int counter;
- static int n;
- static int threadCounter;
- Connection conn;
- //PreparedStatements
- final PreparedStatement stmt_b;
- final PreparedStatement stmt_a;
- final PreparedStatement stmt_t;
- //Datenbankverbindungsparameter
- String user="root";
- String pass="";
- String host="jdbc:mysql://localhost:3306/n-tps?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false"
- + "&serverTimezone=UTC"
- + "&rewriteBatchedStatements=true";
- //n-Wert für die Anzahl der erstellten Datensätze und die Anzahl an verwendbaren Threads
- static {
- ThreadForMysql.n =10;
- ThreadForMysql.threadCounter = 8;
- }
- //Threads
- ThreadForMysql(final String name, final int counter) throws SQLException {
- this.threadName = name;
- this.counter = counter;
- this.conn = DriverManager.getConnection(host,user,pass);
- this.conn.setAutoCommit(false);
- this.stmt_b = this.conn.prepareStatement("INSERT INTO branches (branchid,branchname,balance,address) VALUES"
- + "(?,'aaaaaaaaaaaaaaaaaaaa',0,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')");
- this.stmt_a = this.conn.prepareStatement("INSERT INTO accounts (accid,name,balance,branchid,address) VALUES"
- + "(?,'aaaaaaaaaaaaaaaaaaaa',0,?,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')");
- this.stmt_t = this.conn.prepareStatement("INSERT INTO tellers (tellerid,tellername,balance,branchid,address) VALUES"
- + "(?,'aaaaaaaaaaaaaaaaaaaa',0,?,'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa')");
- }
- //Verbindung zur Datenbank
- public void waitForfinish() throws InterruptedException {
- t.join();
- }
- //Ausgabe aller gestarteten Threads
- public void run() {
- System.out.println("Running " + this.threadName);
- try {
- //Temporäres Ausschalten der Fremschlüsselüberprüfung
- stmt_b.executeUpdate("SET FOREIGN_KEY_CHECKS = 0");
- stmt_t.executeUpdate("SET FOREIGN_KEY_CHECKS = 0");
- stmt_a.executeUpdate("SET FOREIGN_KEY_CHECKS = 0");
- //Befüllen der Tabelle Branches
- for (int branchid = this.counter; branchid <= ThreadForMysql.n; branchid += threadCounter) {
- stmt_b.setInt(1, branchid);
- stmt_b.addBatch();
- if (branchid % 1000 == 0) {
- stmt_b.executeBatch();
- }
- }
- stmt_b.executeBatch();
- //Befüllen der Tabelle Accounts
- for (int accid = this.counter; accid <= ThreadForMysql.n * 100000; accid += threadCounter) {
- final int branchid2 = 1 + (int)(Math.random() * (ThreadForMysql.n - 1 + 1));
- stmt_a.setInt(1, accid);
- stmt_a.setInt(2, branchid2);
- stmt_a.addBatch();
- if (accid % 1000 == 0) {
- stmt_a.executeBatch();
- }
- }
- stmt_a.executeBatch();
- //Befüllen der Tabelle Tellers
- for (int tellerid = this.counter; tellerid <= ThreadForMysql.n * 10; tellerid += threadCounter) {
- final int branchid2 = 1 + (int)(Math.random() * (ThreadForMysql.n - 1 + 1));
- stmt_t.setInt(1, tellerid);
- stmt_t.setInt(2, branchid2);
- stmt_t.addBatch();
- if (tellerid % 1000 == 0) {
- stmt_t.executeBatch();
- }
- }
- stmt_t.executeBatch();
- //Reaktivierung der Fremdschlüsselüberprüfung
- stmt_t.executeUpdate("SET FOREIGN_KEY_CHECKS = 1");
- stmt_b.executeUpdate("SET FOREIGN_KEY_CHECKS = 1");
- stmt_a.executeUpdate("SET FOREIGN_KEY_CHECKS = 1");
- //Schließen der Prepared Statements um Fehlern in der Speicherverwaltung zu entgehen
- stmt_t.close();
- stmt_b.close();
- stmt_a.close();
- //Schließen der Verbindung und Übergabe an die Datenbank
- this.conn.commit();
- this.conn.close();
- //Ausgabe aller fertigen Threads
- System.out.println("Fertig " + this.threadName);
- }
- //Exception
- catch (SQLException e) {
- System.out.println(e);
- }
- }
- //Startfunktion für Threads
- public void start() {
- //System.out.println("Starting " + this.threadName);
- if (this.t == null) {
- (this.t = new Thread(this, this.threadName)).start();
- }
- }
- //SQLException
- public static void main(final String[] args) throws SQLException {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement