Всем привет!
Есть java-программа, в которой через JDBC идет подключение к MySQL базе.
Создание подключения вряд ли чем-то отличается от 98% реализаций:
private static Connection createConnection() {
try {
Class.forName(controllerDB);
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
Connection connection = null;
try {
connection = DriverManager
.getConnection(dbURL,db_user, db_password);
} catch (SQLException e) {
e.printStackTrace();
}
if (connection != null) {
return connection;
} else {
return null;
}
}
Далее у меня есть 12 методов, которые это подключение используют.
2 из них коннектится к базе в среднем 2000-3000 раз в минуту, остальные - от 900 до 1000 в минуту суммарно.
На самом деле я первый раз столкнулся с такими нагрузками, возможно это вообще ни о чем и я могу не переживать, пока запросов не будет около 1млн в секунду :)
Собственно, пример использования:
Метод 1:
public static String[] one() throws SQLException {
Statement statement;
ResultSet result;
Random random = new Random();
int id = ((random.nextInt(max_number) + 1));
String sId = Integer.toString(id);
Connection conn = createConnection();
String sql = "SELECT * FROM table WHERE ID=" + sId;
String[] arr = new String[10];
statement = conn.createStatement();
result = statement.executeQuery(sql);
while (result.next()){
arr[0] = result.getString("string");
arr[1] = result.getString("string");
arr[2] = result.getString("string");
arr[3] = result.getString("string");
arr[4] = result.getString("string");
arr[5] = result.getString("string");
arr[6] = result.getString("string");
arr[7] = result.getString("string");
arr[8] = result.getString("string");
arr[9] = result.getString("string");
}
statement.close();
conn.close();
return arr;
}
Метод 2:
static void two(int num1, String str1, String str2) throws SQLException {
String insertTableSQL = "INSERT ... " +
"VALUES (?, ?, ?)"
+ "ON DUPLICATE KEY UPDATE"
+ ".. .";
Connection conn = createConnection();
PreparedStatement insert = conn.prepareStatement(insertTableSQL);
insert.setString(1, str1);
insert.setInt(2, num1);
insert.setString(3, str2);
try {
insert.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
insert.close();
conn.close();
}
Т.е. каждый раз при взаимодействии пользователей приложенька создает коннект, использует его, закрывает, потом создает, использует, закрывает и так очень много раз в минуту :)
Это нормальное использование или можно этот момент как-то оптимизировать?