Я использую программу Java GUI для обновления базы данных SQlite. Мои опции Gui - это в основном кнопки переключения с значениями включения/выключения. Из-за характера Gui производительность при обновлении базы данных должна быть быстрой, поэтому управление может быть быстро возвращено функции вызова Gui.Обновление Java-базы данных SQL-базы данных
У меня есть следующий код, который запускается каждый раз, когда выбирается кнопка переключения:
public static void updateDCStable(String item, int value)
{
try {
long start = System.currentTimeMillis();
Class.forName("org.sqlite.JDBC");
String url = DATABASE_FILEPATH;
Connection conn = DriverManager.getConnection(url);
Statement update = conn.createStatement();
update.execute("UPDATE DCS "
+ "SET " + item + "='" + value + "';");
update.close();
conn.close();
long time_elapsed = System.currentTimeMillis() - start;
System.out.println("Changed DCS date item " + item + " to "
+ value + " in " + time_elapsed + "(ms)");
} catch (SQLException ex) { /* Error handling */
} catch (ClassNotFoundException ex) { /* Error handling */
}
}
My SQL таблица является в основном конфигурации информация с несколькими столбцами и только одна строка, поэтому функция принимает колонки и обновить значение и соответственно обновить элемент. Функция работает правильно, ее просто очень медленно ....
Использование времени, прошедшего, мое среднее время обновления работает около 550 мс или около того с минимальным временем 294 мс и максимальным временем в 986 мс. Есть ли способ ускорить этот процесс?
Благодарим за полезный ответ. Да, я понял, что связь была самой дорогой частью вычислительно. Поэтому я реализовал пул соединений с базой данных BoneCP Java, используя пример из [этого сайта] (http://tunatore.wordpress.com/2011/11/07/how-to-use-bonecp-java-database-connection-pool- JDBC-бассейн-библиотека /). Теперь мой вспомогательный код пытается использовать conn = ConnectionManager.getConnection() для настройки соединения. Проблема в том, что моя производительность в основном одинакова со средним временем 752 (мс), min 262 (мс) и макс 2919 (мс). Правильный код примера, или я что-то упускаю? –
Запустите еще несколько тестов. Первое выполнение кода займет больше времени (установление соединения и добавление его в пул соединений), но для последних исполнений требуется меньше времени. Также выполните подготовленное заявление. Это также поможет. –
Это делает трюк, спасибо! Среднее падение до 500 мс, которое ближе к допустимому. Какие бы вы ожидали от такого типа операций с Java, Sqlite и BoneCP вместе с типом записи, которую я делаю? Просто любопытно. –