|
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 9
|
|
Пул подключений к БД. Как работать с конкретным коннекшеном?11.01.2021, 12:03. Показов 1564. Ответов 6
Метки нет (Все метки)
Например есть что-то типа sql.Open(...)
При каждом выполнении запроса используеться какое-то подключение из пула. Но, например хочеться последовательно рабоать с запросами и временными таблицами. Ведь есть же вероятность того, что следующий запрос пойдет по другому соединению и временные талицы будут недоступны (или будут доступны "чужие"). Есть возможность использовать конкретное соединения из пула при работе?
0
|
|
| 11.01.2021, 12:03 | |
|
Ответы с готовыми решениями:
6
Как реализовать пул подключений
Не отображаются пул подключений и источник данных в GlassFish |
|
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
|
|
| 11.01.2021, 23:53 | |
|
Нельзя использовать "конкретное" соединение из пула. Не делайте так, все соединения должны быть абсолютно независимы друг от друга. Если не так - значит что-то неверно спроектировано в приложении.
Делайте все нужные запросы в рамках одного соединения (неважно настоящего, или взятого из пула). Если по каким-то причинам невозможно сделать всю работу в одном соединении (а какие у Вас причины для этого?), то создавайте временные таблицы так, чтобы их можно было использовать между соединениями без путаницы "свой-чужой". Например, используйте одну временную таблицу для всех соединений, но строки в этой таблицы будут содержать некий внешний ключ, связанные с соединением (вероятно, это id пользователя). Кроме этого нужно помнить, что изолируются не соединения, а транзакции. Видимость данных между транзакциями определятся установленным уровнем изолирования транзакций.
1
|
|
|
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 9
|
|
| 12.01.2021, 10:29 [ТС] | |
|
Пока только возникли вопросы, необходимости использовать временные таблицы пока нет. Спасибо за ответ.
А есть пример работы с изолироваными транзакциями? Самый простой, для понимания принципа.
0
|
|
|
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
|
|
| 12.01.2021, 11:15 | |
|
Транзакции по-умолчанию изолированы, это обеспечивается СУБД.
От программиста требуется две вещи - явно начинать транзакцию при выполнении нескольких связанных действий, а также установить уровень изолированности транзакций, чтобы уменьшить влияние транзакций друг на друга. Как это делается - зависит от используемой БД и используемой библиотеки для работы с БД. Если транзакции явно не начинать, то СУБД все равно их использует - каждый отправленный запрос она рассматривает как транзакцию с одним запросом (запускает неявную транзакцию) Ознакомьтесь с материалами: - что такое транзакции, для чего они нужны - что такое уровни изолированности транзакций - как начать и закончить транзакцию в конкретной БД (какую используете?) - какой уровень изолированности по-умолчанию в БД, как установить нужный уровень
0
|
|
|
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 9
|
||||||
| 12.01.2021, 11:26 [ТС] | ||||||
|
О работе с транзакциями с точки зрения СУБД понимание есть. Но не совсем понятна логика работы ГО.
Например в коде
А если первой скл-командой будет установка транзакции, то следующие скл-команды будут в текущей сесии или как? Или в таких случаях нужно использовать что-то типа txn, err := myDb.Begin() ?
0
|
||||||
|
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
|
|||
| 12.01.2021, 11:54 | |||
![]() Но я почитал http://go-database-sql.org/ и страницу http://go-database-sql.org/surprises.html в частности. И я думаю, что эти два Exec могут быть выполнены как в одном соединении, так и в разных. Первый Exec получит соединение из пула и вернет его в пул. Второй Exec опять возьмет соединение из пула. Вероятно пул отдаст ему то же самое соединение (использованное для первого запроса). Но может вернуть и другое соединение (это зависит от реализации пула). Ну и пул точно вернет другое соединение, если первым соединением воспользуется кто-то другой (получит его из пула раньше нас). Чтобы гарантированно выполнить эти запросы в рамках одного соединения надо выполнять их внутри транзакции, предварительно начав ее с помощью Begin или BeginTx. Да и вообще, группу связанных инсертов нужно выполнять в транзакции. Добавлено через 2 минуты
0
|
|||
|
0 / 0 / 0
Регистрация: 11.01.2021
Сообщений: 9
|
|
| 12.01.2021, 12:17 [ТС] | |
|
Ок, тогда более/менее логика работы в ГО понятна.
0
|
|
| 12.01.2021, 12:17 | |
|
Помогаю со студенческими работами здесь
7
Как работать с конкретным сайтом, на котором есть текст, которого нет в html - коде Как организовать пул потоков Пул проксей на виртуалке. Как?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2).
Унарный минус обозначается как !
в-строка - входное арифметическое выражение в инфиксной(обычной). . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|