Не вижу новых пользователей
Не вижу новых пользователей
FB 2.1.3
Делаю запрос к mon$attachments для получения списка пользователей. После этого к базе подключаются или отключаются другие пользователи, но повторный запрос к mon$attachments дает тот же результат. И результат обновляется только после рестарта транзакции.
Очень похоже на то что не верно выставлен уровень изоляции транзакции, но у читающей транзакции стоит уровень read_commited.
Причем в InterBase 7.5 этот прием проходит без проблем и новые подключения видны сразу без рестарта транзакции
В чем может быть дело?
Спасибо
Делаю запрос к mon$attachments для получения списка пользователей. После этого к базе подключаются или отключаются другие пользователи, но повторный запрос к mon$attachments дает тот же результат. И результат обновляется только после рестарта транзакции.
Очень похоже на то что не верно выставлен уровень изоляции транзакции, но у читающей транзакции стоит уровень read_commited.
Причем в InterBase 7.5 этот прием проходит без проблем и новые подключения видны сразу без рестарта транзакции
В чем может быть дело?
Спасибо
Re: Не вижу новых пользователей
Я сам нашел ответ в релиз ноутс:
In other words, the monitoring tables always behave like a snapshot table stability (“consistency”) transaction,
even if the host transaction has been started with a lower isolation level.
To refresh the snapshot, the current transaction should be finished and the monitoring tables should be queried
in a new transaction context.
Как я понял запрос к таблице mon$attachments всегда стартует с уровнем "snapshot table stability".
А в чём смысл такого подхода?
In other words, the monitoring tables always behave like a snapshot table stability (“consistency”) transaction,
even if the host transaction has been started with a lower isolation level.
To refresh the snapshot, the current transaction should be finished and the monitoring tables should be queried
in a new transaction context.
Как я понял запрос к таблице mon$attachments всегда стартует с уровнем "snapshot table stability".
А в чём смысл такого подхода?
Re: Не вижу новых пользователей
http://www.ibase.ru/webinar.htmlКак я понял запрос к таблице mon$attachments всегда стартует с уровнем "snapshot table stability".
А в чём смысл такого подхода?
скачай самый свежий, послушай и посмотри часть Еманова, про мониторинг. Все станет понятно.
Re: Не вижу новых пользователей
Вчера ещё скачал, но неуспел посмотреть...скачай самый свежий, послушай и посмотри часть Еманова, про мониторинг. Все станет понятно.
Сейчас пойду
Спасибо
Re: Не вижу новых пользователей
Неужели ?SunDevil писал(а):Причем в InterBase 7.5 этот прием проходит без проблем и новые подключения видны сразу без рестарта транзакции
Re: Не вижу новых пользователей
Вот те крест...Неужели ?
Только что перепроверил
Re: Не вижу новых пользователей
Перепроверяй, ибо
9-2 Operations Guide писал(а):Refreshing the temporary tables
To refresh the rows in the temporary tables, commit your transaction and perform
the SELECT from the temporary tables again.
Re: Не вижу новых пользователей
ты не поверишь но на IB7.5 я вижу новые подключения без рестарта транзакцииTo refresh the rows in the temporary tables, commit your transaction and perform
the SELECT from the temporary tables again.
Re: Не вижу новых пользователей
Так я и не верю.SunDevil писал(а):ты не поверишь но на IB7.5 я вижу новые подключения без рестарта транзакции
commit retain у тебя нету ? Чем смотришь ?
Re: Не вижу новых пользователей
художественный свист, по причине смотрения "не оттуда". в InterBase таблицы tmp$ не меняют своего содержимого пока не сделан commit retaining или транзакция не стартована по новой.ты не поверишь но на IB7.5 я вижу новые подключения без рестарта транзакции
Проверяется легко - делаем проект на Дельфи, где есть IBQuery с
Код: Выделить всё
select * from tmp$attachments
IBQuery1.Close;
IBQuery1.Open;
Запускаем приложение из дельфей. Смотрим - 3 коннекта (1 коннект - сборщик мусора, 1 коннект из дельфей, 1 коннект из приложения).
Запускаем IBExpert - тот же запрос в SQL Editor - 4 коннекта. В приложении жмем кнопку - 3 коннекта.
Запускаем еще IBExpert - 5 коннектов. В приложении жмем кнопку - 3 коннекта.
НО! Если в первом IBExpert мы повторим запрос (в SQL Editor), то увидим 5 коннектов.
Правда, тут, спасибо Владу, в IB обнаружена бага в отношении tmp$. Если стартануть в одном коннекте более двух транзакций, и в одной смотреть tmp$, а другим делать commit/start, то в той исходной транзакции можно увидеть изменения в tmp$. Если же в коннекте стартовать только одну транзакцию, то в tmp$ изменения видны не будут.
А поскольку IBE при выполнении запроса через SQL Editor стартует помимо этого штук 5 транзакций, то получается, в IB они "сбивают" содержимое tmp$ в исходной транзакции, даже если она не рестартует или не завершается по commit_retaining. Такие дела.
p.s. проверил и в IB 2009 - таже бага присутствует. Она (со слов Влада) относится к поведению global temporary tables on delete commit, т.к. tmp$ - это те же gtt (как и в ФБ, но в ФБ этого бага нет, в FB таблицы mon$ сделаны не по подобию gtt).
Re: Не вижу новых пользователей
Всё - вопрос закрыт. Сделал всё тоже самое только на фибах (там более явное управление транзакциями). Был не прав. Всем спасибо