powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Транзакции, мусор, QIBASE
6 сообщений из 6, страница 1 из 1
Транзакции, мусор, QIBASE
    #38559237
agoda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем здоровья
Как-то, мной была создана тема о том, что при перезапуске моей программы, QSqlQuery не возвращает долго (очень долго) запрос. Тема тут:
http://www.sql.ru/forum/1045901/qsqlquery-firebird-dlitelnoe-ozhidanie-otveta-na-query-next

В виду того, что это не основная работа, время шло, программу старались не перезапускать, а когда деваться было некуда, делали бекап/ресторе. В принципе особо не напрягало.

Но вот появилась минутка, и что я накопал. Проблема была в том, что в базе было много мусора, о чем говорила огромная разница между Oldest transaction и Next transaction. Я попробовал делать просто sweep. Но когда программа запущена, он эффекта не давал, а при закрытой программе, все стартовало быстро и хорошо, как после бекап/ресторе.


Поскольку я прочитал, что копии создаются при INSERT и UPDATE я закомментировал, все записи в базу и запустил программу, которая просто из базы читала. Число Next transaction все равно быстро увеличивалось. Примерно на 1000 в 15 секунд.

Я посмотрел сервисом Trace and audit и увидел, что, несмотря на то, что у меня один экземпляр класса, который использует одну и туже QSqlQuery и один объект QSqlDatabase, постоянно стартуются и коммитятся транзакции. Параметр транзакций CONCURRENCY | WAIT | READ_WRITE

В драйвере QIBASE, собранном из исходников нет возможности управлять транзакциями.



Собственно прошу совета, правильно ли я понимаю, что смогу решить вопрос, если применю API или другую библиотеку, при помощи которой я смогу создать читающую транзакцию read committed с параметром read only. А для записи создать отдельную, и ей писать.

Или есть другой способ решить проблему?


Вообще, задача в целом, такая:
- при старте программа из базы читает настройки;
- затем создает параллельные потоки, в зависимости от количества подключенных линий RS485 (на практике, пока, работал только один);
- каждый поток читает из базы, какие адреса и регистры удаленных устройств нужно прочесть, читает их и пишет в базу (добавляет новую запись и обновляет информацию об устройствах UPDATE-ом).

Читает из базы данные другая программа, она же, может поменять настройки.

Раньше я работал через файлы, но возникла потребность пользоваться читающей программой удаленно из сети. Поэтому и сунул туда Firebird, и все вроде бы получилось. Вот только проблема с перезапуском. Как концептуально ее решить?

За ранние всем спасибо.
...
Рейтинг: 0 / 0
Транзакции, мусор, QIBASE
    #38559414
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
agodaкопии создаются при INSERTвраки.

agodaдругую библиотеку, при помощи которой я смогу создать читающую транзакцию read committed с параметром read only.Вроде сишники хвалили (если сравнить с с остальными "плачами ярослвны" относительно остального) ibpp и его форки.
...
Рейтинг: 0 / 0
Транзакции, мусор, QIBASE
    #38559470
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
agodaНо вот появилась минутка, и что я накопал. Проблема была в том, что в базе было много мусора, о чем говорила огромная разница между Oldest transaction и Next transaction.Эта разница ничего не говорит о кол-ве мусора.

agodaЯ попробовал делать просто sweep. Но когда программа запущена, он эффекта не давалЗначит в программе есть активная долгоиграющая тр-ция, которая и не даёт свипу работать.
Её элементарно увидеть в мониторинге.
...
Рейтинг: 0 / 0
Транзакции, мусор, QIBASE
    #38559815
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyВроде сишники хвалили (если сравнить с с остальными "плачами
ярослвны" относительно остального) ibpp и его форки.
Ты когда-нибудь слышал "плачи Ярославны" от использующих библиотеку fbclient?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакции, мусор, QIBASE
    #38559866
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТы когда-нибудь слышал "плачи Ярославны" от использующих библиотеку fbclient?..В диком виде это ты да еще пара человек, а ну да у нас сишная линуксовая часть ПО тоже на АПИ (это по аудитории нашего раздела), много эта троица-квартет "наплачет"? К тому же все участники прошли "порог вхождения", плакать уже поздно "либо работает, либо ниасилили".
...
Рейтинг: 0 / 0
Транзакции, мусор, QIBASE
    #38561818
agoda
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем большое спасибо, особенно hvlad.

Все мои Query живут мало, поэтому проблемы не создают. Проблему создает QSqlTableModel. Я в ней отобразил небольшой списочек настроек, который пользователь может обновить и, похоже, метод select стартовал транзакцию, и она висела все время. А смешное то, что программа в основном свернута в трей и эта таблица может понадобиться раз в месяц.

После того как я ее убрал разница между Next transaction и Oldest snapshot небольше 40 при каждом повторном сборе статистики.

Все так просто, а столько геморрою.

Еще раз, всем спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Транзакции, мусор, QIBASE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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