powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Что лучше, много Statement 1 Connection, или пул Connection?
16 сообщений из 16, страница 1 из 1
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563047
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здавсствуйте..
Сейчас решаю задачу: как лучше с точки зрения хорошего стиля программирования, производительности и т.п. реализовать многопользовательский доступ к БД через JDBC?

есть 2 варианта:
1) существует одно соединение (connection) с БД и для него создается один PreparedStatement в который посылаются запросы от разных пользователей

2) создавать соединение и PreparedStatement для каждого пользователя и помещать соединение в пул соединений

реализовал 2 варианта но пока не могу дать оценку, хочется услышать мнение экспертов.
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563568
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не совсем ясна формулировка вопроса - получается что приложение использует всего один Statement, что означает всего один SQL-запрос или UID-выражение. ИМХО уникальный случай.
Используя одно соединение к БД столкнешся с проблемой, когда множество потоков будет ожидать завершения одного, который занят взаимодействием с БД. Обычно повышение производительности достигается несколькими способами:
1. создать пул соединений к БД. Можно использовать готовый пулы c3p0, DBCP или использовать соединения сервера приложений. Плюс использования существующего пула, например c3p0, в том, что задачу восстановления соединения с БД при разрыве можно возложить на него.
2. можно закешировать наиболее часто используемые запросы (т.е. Statement-ы), создав их при инициализации приложения. Некоторые СУБД отличаются большими затратами на создание Statement-ов (практически цитата из Hibernate In Action). Опять же, нужно не забывать о синхронизации доступа к PreparedStatement (для обычного Statement это _может_быть_ некритично).
А вообще, очень рекомендую уходить от чистого JDBC к ORM вроде Hibernate, хотя это зависит от приложения.
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563609
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ситуация такая: соденинение (Connection) с БД одно, на каждую таблицу создается свой отдельный PreparedStatement и кэшируется. А пользователей, которые обращаются к базе - много - и все они используют существующий кэш PreparedStatement-ов.

наверное лучше всеже пул?
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563633
BlackWall
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну тогда лучше пул соединений. По поводу пула стейтментов - нужно каким-то образом найти компромисс между их количеством, т.к. и их создание, и хранение может быть дорогостоящим. Кроме того, разрыв соединения с СУБД потенциально может вызвать инвалидность стейтмента.
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563637
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirage
Создавать по соединению на пользователя (и соответствующий набор statement-ов) плохо и с точки зрения производительности, и с точки зрения стиля программирования.

Трудно говорить абстрактно, но полагаю в общем случае лучший вариант - поддерживать тот минимум соединений, который позволит избежать ожиданий при обработке обращений пользователей. Соответственно реализованный и отстроенный пул соединений вполне с этим справится. Впрочем, если сервер удовлетворяет эксплуатационным требованиям и с одним соединением, незачем усложнять.
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563639
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlackWall
Используя одно соединение к БД столкнешся с проблемой, когда множество потоков будет ожидать завершения одного, который занят взаимодействием с БД.

но почему? ведь существуют транзакции в пределах одного соединения (Connection)?
а если пользователей много - и для каждого создавать соединение - не будет ли это накладным.?

а вообще в каких ситуациях использовать пул соединений выгодно?
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563649
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageна каждую таблицу создается свой отдельный PreparedStatement и кэшируется
Кстати, вот это вызывает некоторые сомнения с точки зрения того, что я полагаю хорошим стилем программирования. Включая в хороший стиль и производительность, и все остальное.
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563657
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer unicornmirageна каждую таблицу создается свой отдельный PreparedStatement и кэшируется
Кстати, вот это вызывает некоторые сомнения с точки зрения того, что я полагаю хорошим стилем программирования. Включая в хороший стиль и производительность, и все остальное.

уточните, пожалуйста, чем это черевато?
если я правильно понял все вышесказанное - хорошим стилем будет при каждом обращении пользователя к серверу создавать для него на базе существующего connection статемент, выполнять запрос и закрывать статемент?

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

тогда вопрос: смысл PreparedStatement как я понимаю в повторном использовании - один раз формируется и потом может повторно использоваться с различными праметрами. --> отсюда следует что его можно помещать в пул
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33563709
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageуточните, пожалуйста, чем это черевато?
Это стандартный holy war. Один statement на таблицу означает полное игнорирование возможностей БД и реализацию велосипеда на клиенте либо промежуточном сервере.

unicornmirageесли я правильно понял все вышесказанное - хорошим стилем будет при каждом обращении пользователя к серверу создавать для него на базе существующего connection статемент, выполнять запрос и закрывать статемент?
Нисколько.

unicornmirageлибо второй вариант - для каждого пользователя создавать соединение и помещать его в пул, а затем его брать оттуда?
И здесь я уже говорил, что не стоит делать по соединению на пользователя.

Если коротко и достаточно точно, что хороший стиль - не делать лишнего. А следовательно, эффективно повторно использовать уже существующее.

unicornmirageтогда вопрос: смысл PreparedStatement как я понимаю в повторном использовании
Именно. Это способ наиболее эффективно работать с БД, способ закешировать выражение на сервере.
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33564179
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
большое спасибо за критику.
читаю сейчас статью http://lib.juga.ru/article/articleprint/162/-1/68/ и думаю что пул - это есть одно из лучших решений
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33565787
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прочитал вышеуказанную статью и решил написать свой пул соединений.
посоветуйте пожалуйста, может уже существуют готовые решения? более эффективные?
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33566061
Евгений Путилин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageпрочитал вышеуказанную статью и решил написать свой пул соединений.
посоветуйте пожалуйста, может уже существуют готовые решения? более эффективные?
Как правило пул Connection и пулл Statement реализуется вендорами БД. Т.к. они могут использовать внутренние особенности своих БД о которых всем знать необязательно.
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33566073
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я использую mysql-connector-java-3.1.10-bin.jar посмотрел библиотеку - ничего похожего на пул не нашел... может плохо искал?

вот еще вопрос - если предположим буду делать сам пул соединений - то можно кроме соединения в пуле сохранять для каждого соединения набор PreparedStatement'ов?
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33566118
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно сделать пул чего угодно. это вообще-то шаблон такой

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33566184
Евгений Путилин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageя использую mysql-connector-java-3.1.10-bin.jar посмотрел библиотеку - ничего похожего на пул не нашел... может плохо искал?

В mysql-connector-java-5.0.0-beta-bin.jar искать здесь:
com\mysql\jdbc\jdbc2\optional\MysqlDataSource
unicornmirage
вот еще вопрос - если предположим буду делать сам пул соединений - то можно кроме соединения в пуле сохранять для каждого соединения набор PreparedStatement'ов?
Да можно только учти что в пуле PreparedStatement могут быть проблеммы, т.к. что у PreparedStatement может быть в один момент времени открыт только один ResultSet. Далее если из разных потоков то устанавливать параметры можно только для одного запроса. В общем думай сам, но лучьше использовать готовое
...
Рейтинг: 0 / 0
Что лучше, много Statement 1 Connection, или пул Connection?
    #33566498
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
большое спасибо!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Что лучше, много Statement 1 Connection, или пул Connection?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]