Как сэкономить время при открытии соединений JDBC MYSQL - PullRequest
0 голосов
/ 22 ноября 2011

У меня очень короткое Java-приложение, которое просто открывает соединение с удаленной базой данных MySQL, считывает некоторые данные, распечатывает их и завершает работу. Наиболее трудоемкой частью приложения является соединение с базой данных.

В настоящее время у меня есть только один поток, и моя единственная задача - сэкономить время открытия соединения.

Я думал о нескольких способах сделать это быстрее, но оказалось, что они не помогают:

  • Пул соединений - не помогает, потому что пул живет только во время одного запуска приложения. Когда приложение завершается, пул исчезает, и когда я перезапускаю приложение, мне приходится заново открывать все соединения в пуле.
  • mysql-proxy - подключается только к локальному серверу: mysql-proxy для удаленного сервера MySQL
  • Сервер TCP / IP - я подумал о том, чтобы держать локальный сервер TCP / IP, который будет поддерживать постоянное открытое соединение и отправлять его клиенту TCP / IP по запросу. Однако объекты Connection не могут быть сериализованы, поэтому я не могу передать объект Connection от клиента к серверу.

Любой другой вариант?

Ответы [ 4 ]

1 голос
/ 22 ноября 2011

Вы сказали, что у вас очень короткое приложение, поэтому ваш третий вариант может сработать, если вы поместите логику базы данных в свой «сервер TCP / IP варианта 3» и просто перенаправите результаты на подключающийся клиент. Это типичный шаблон сервера приложений.

1 голос
/ 22 ноября 2011

Еще одна вещь, которую вы должны учитывать при поиске в сети https://stackoverflow.com/q/3641155/1055715, о которой Марк Б. упомянул в своем комментарии.

1 голос
/ 22 ноября 2011

Как правило, подключение к БД является наиболее трудоемкой операцией. Если приложение должно быть запущено и остановлено, мало что можно сделать.

Можно использовать пул соединений на веб-сервере и вызывать его, запустив приложение, которое обращается к веб-серверу с использованием JSON.

0 голосов
/ 27 ноября 2011

Оказывается, лучшее решение - использовать mysql-proxy со скриптом, который обрабатывает пул соединений (комбинация моих первых двух опций). Я нашел один такой скрипт здесь: http://forge.mysql.com/tools/tool.php?id=151

Вероятно, она была написана для более старой версии mysql-proxy, поэтому мне пришлось ее исправить (если кому-то нужна исправленная версия - напишите мне).

Это работает как чудо - я запускаю то же приложение, что и раньше, единственное изменение в строке подключения: вместо подключения к «qa-srv: 3308» (удаленный сервер) я подключаюсь к «127.0.0.1 : 4040 "(прокси-сервер).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...