Russian Qt Forum
Ноябрь 22, 2024, 17:52
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Базы данных
>
[РЕШЕНО]Частое открытие или постоянное соединение с БД?
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [РЕШЕНО]Частое открытие или постоянное соединение с БД? (Прочитано 10550 раз)
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
[РЕШЕНО]Частое открытие или постоянное соединение с БД?
«
:
Август 05, 2020, 21:51 »
Коллеги,
стоит задача периодической передачи изменений в таблице БД на сервер. Сделано по таймеру, выполняется открытие соединения с БД (QSqlDatabase::database(connName)), выборка и отправка данных, после чего соединение закрывается (QSqlDatabase::removeDatabase(connName)).
Эта функция выполняется с интервалом 0.5 секунды. Я бы подключился один раз и не закрывал подключение к БД, но функция работает 24x7, и у меня есть сомнение, не появятся сбои, к примеру, через месяц. Как считаете, описанный вариант имеет право на жизнь, или по-правильному сделать постоянное соединение с проверкой подключения и чего-то там еще?
СУБД PosgtreSQL, версия 10 с чем-то, Ubuntu.
«
Последнее редактирование: Август 14, 2020, 10:42 от sergek
»
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Частое открытие или постоянное соединение с БД?
«
Ответ #1 :
Август 05, 2020, 23:06 »
Зачем тратить время на подключения/отключение? Пусть висит себе соединение, только делай реконнект если что не так пошло.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: Частое открытие или постоянное соединение с БД?
«
Ответ #2 :
Август 06, 2020, 08:42 »
Ок, спасибо.
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
RedDog
Частый гость
Offline
Сообщений: 221
Re: Частое открытие или постоянное соединение с БД?
«
Ответ #3 :
Август 07, 2020, 22:05 »
Коннект к БД постоянный, его валидность проверять по таймеру запросом а-ля
Код:
QSqlQuery("select true").isActive()
PS: проект в продакшене уже 4 года держит постоянно 24 подключения в режиме 24/7 (бывает перезапускается для обновления).
Записан
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: Частое открытие или постоянное соединение с БД?
«
Ответ #4 :
Август 07, 2020, 23:34 »
Цитата: RedDog от Август 07, 2020, 22:05
PS: проект в продакшене уже 4 года держит постоянно 24 подключения в режиме 24/7 (бывает перезапускается для обновления).
Вот это я и хотел услышать, спасибо!
А коннект проверить легко, есть isOpen(), проверять можно и без таймера, а перед каждым запросом. Собственно, QSqlDatabase::database(connName) по умолчанию открывает соединение.
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
RedDog
Частый гость
Offline
Сообщений: 221
Re: Частое открытие или постоянное соединение с БД?
«
Ответ #5 :
Август 08, 2020, 13:10 »
isopen не сработает, если сеть упала, она работает если в коде идёт подключение/отключение.
Если внешние факторы вмешались, будет возвращать истину.
Записан
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: Частое открытие или постоянное соединение с БД?
«
Ответ #6 :
Август 08, 2020, 18:24 »
"Мда. Плохо дело. Вся ... нафиг."
«
Последнее редактирование: Август 08, 2020, 18:27 от sergek
»
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Частое открытие или постоянное соединение с БД?
«
Ответ #7 :
Август 08, 2020, 22:09 »
Тебе достаточно будет переподключаться, если запрос зафэйлился.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...