powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / EXECUTE STATEMENT транзакции
25 сообщений из 25, страница 1 из 1
EXECUTE STATEMENT транзакции
    #38411014
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Вопрос больше наверно к Владу.

Тут кое что начал пробовать и возникли трудности. При выполнении EXECUTE STATEMENT можно действовать только от параметров текущей транзакции. А нельзя ли прикрутить возможность указать свои параметры?

Смысл такой при транзакции на чтение получаем некоторые данные, но т.к. они виртуально зависимые, от того как и под кем работает пользователь, приходится формировать КЭШ. Если работать без этого КЭША будет подтормаживать. Формировать полный список КЭША тоже не эффективно при входе, т.к. некоторые параметры могут не понадобиться на протяжении всего дня.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411029
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик> При выполнении EXECUTE STATEMENT ...
Евгений Болтик> А нельзя ли прикрутить возможность указать свои параметры?

IIRC, обсуждалось уже, даже в трекер вносилось, кажется.
Может, это - http://tracker.firebirdsql.org/browse/CORE-4015

Смысл такой при транзакции на чтение получаем некоторые данные, но т.к. они виртуально зависимые, от того как и под кем
работает пользователь, приходится формировать КЭШ. Если работать без этого КЭША будет подтормаживать. Формировать полный список
КЭША тоже не эффективно при входе, т.к. некоторые параметры могут не понадобиться на протяжении всего дня.
Интересно, это только я ничего не понял? А почему нельзя
сразу выставить нужный TIL родительской транзакции, кстати?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411038
Евгений БолтикСмысл такой при транзакции на чтение получаем некоторые данные, но т.к. они виртуально зависимые, от того как и под кем работает пользователь, приходится формировать КЭШ.Юзать GTT для кеша не в моде ныне ?
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411054
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамМожет, это - http://tracker.firebirdsql.org/browse/CORE-4015

Похоже оно.

Гаджимурадов РустамИнтересно, это только я ничего не понял? А почему нельзя
сразу выставить нужный TIL родительской транзакции, кстати?


А что непонятного. При чтении из базы по необходимости формируется КЭШ переменных, чтобы 200 раз не бегать по деревьям настроек пользователя. А значит нужна запись в читающей транзакции. Первый раз получаем данные переменной в 6 шагов, а все последующие в 1 шаг. Система динамическая и в любой момент значение переменной может быть изменено пользователем или администратором с другого коннекта. По этой причине не получится пользоваться RDB$GET_CONTEXT. (Да и вообще по идее RDB$SET_CONTEXT не должен значения принимать в только читающей транзакции)

Сейчас попытка перейти на короткие пишущей транзакции. Сейчас с утра и до ночи одна транзакция tpbReadCommitted и пишет и читает. Хотя уже некоторые моменты переписаны на короткие пишущие. ГУРУ говорят плохо 1 долгая, пытаемся прислушаться. Хоть и нет пока необходимости. Лучше заранее чем когда где ни будь припрет.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411061
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йонас СусанисЕвгений БолтикСмысл такой при транзакции на чтение получаем некоторые данные, но т.к. они виртуально зависимые, от того как и под кем работает пользователь, приходится формировать КЭШ.Юзать GTT для кеша не в моде ныне ?

Я как то попытался юзать, но что то применения не нашел нормального. В данном механизме не подойдет. Сильно много неопределенностей пока юзер не зайдет под определенной группой, профилем и пользователем. Заранее формировать таблицу возможных вариантов это я думаю изврат. 5 профелей 20 груп 20 пользователей 176 переменных это порядка 352000 строк. По факту менее 5000 в основном ~2000 записей висит. А послушаешь народ у которого 400 юзеров это будет 7040000 строк. И не факт что групп не прибавиться. Не лучше динамически и немного, чем постепенно тонущая лодка от ненужных данных.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411068
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтикнужна запись в читающей транзакции. Первый раз получаем данные
переменной в 6 шагов, а все последующие в 1 шаг.
А делать это в разных транзакциях мешает что?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411072
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикСейчас с утра и до ночи одна транзакция tpbReadCommitted и пишет и читает.
ты уверен, что она read read_committed rec_version , а не просто read_committed rec_version ?
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411086
Евгений БолтикПри чтении из базы по необходимости формируется КЭШ переменных, чтобы 200 раз не бегать по деревьям настроек пользователя. А значит нужна запись в читающей транзакции. Первый раз получаем данные переменной в 6 шагов, а все последующие в 1 шаг. Система динамическая и в любой момент значение переменной может быть изменено пользователем или администратором с другого коннекта . Если только ЮЗЕР меняет переменные, то GTT рулят. Ибо в них допускается запись даже в read only транзакции (начиная с 2.5.1 вроде бы).
И будь там хоть 100 млн строк - при наличии индекса никаких временн ы х затыков в поиске не будет.

Если же админ меняет эти переменнын, то насколько упадёт произв-сть приложения, если юзер ОДИН РАЗ перечитает это новое значение и подтянет его в свой "кеш" ? Что, админ по 100500 раз меняет значения ?
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411092
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений Болтикнужна запись в читающей транзакции. Первый раз получаем данные
переменной в 6 шагов, а все последующие в 1 шаг.
А делать это в разных транзакциях мешает что?


Мешает то, что иногда неизвестно надо будет переменную или нет. В большинстве случаев переменные мало нужны. Вообще это касается доступа к тем или иным ресурсам пользователям. Это похоже на расширение прав доступа к объектам и строкам в таблицах. По этой причине встроено в чтение. И является чисто системным наворотом в нашем ПО. Все остальное стандартно. Будем говорить так, я на уровне сервера обрезаю доступ к данным по возможности. Поэтому фильтрация произойдет на стороне сервера, а не на стороне пользователя.

Если ГУРУ на нас забьют надо будет провести ряд тестов. Авось и без КЭШа проживем, но мало вероятно. То что необходимо не будет использоваться повсеместно. Надо как бы системный внутренний уровень без ограничений организовать.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411094
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЕвгений БолтикСейчас с утра и до ночи одна транзакция tpbReadCommitted и пишет и читает.
ты уверен, что она read read_committed rec_version , а не просто read_committed rec_version ?

Не поннял про что ты. Там так write+isc_tpb_nowait+read_committed+rec_version
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411099
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений Болтик,

я, как обычно, ничего не понял. Какой кеш ? Причём тут параметры тр-ции ?

Хочешь услышать ответ - потрудись оформить вопрос: какая проблема, как пытались решить, какой способ её решения предлагается, почему этот способ лучше других...
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411107
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваня СусанинЕсли только ЮЗЕР меняет переменные, то GTT рулят. Ибо в них допускается запись даже в read only транзакции (начиная с 2.5.1 вроде бы).
И будь там хоть 100 млн строк - при наличии индекса никаких временн ы х затыков в поиске не будет.

Если же админ меняет эти переменнын, то насколько упадёт произв-сть приложения, если юзер ОДИН РАЗ перечитает это новое значение и подтянет его в свой "кеш" ? Что, админ по 100500 раз меняет значения ?

Нет не только пользователь, а любой пользователь имеющий права доступа к переменной. Ну про GTT с read only это уже интересно надо попробовать.

По поводу тормозов для меня 15 сек иногда можно и подождать. Но пользователи потом весь мог вынесут. Обычно что то меняется в самый не подходящий момент.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411111
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЕвгений Болтик,

я, как обычно, ничего не понял. Какой кеш ? Причём тут параметры тр-ции ?

Хочешь услышать ответ - потрудись оформить вопрос: какая проблема, как пытались решить, какой способ её решения предлагается, почему этот способ лучше других...

Проще говоря: "А нельзя ли прикрутить возможность указать свои параметры?". А то я снова буду писать и меня никто не поймет.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411112
Евгений БолтикНет не только пользователь, а любой пользователь имеющий права доступа к переменной. Ну про GTT с read only это уже интересно надо попробовать.Нет, уже ничего интересного не будет. Ибо "любой пользователь" никогда не увидит чужие данные.
Остается вариант с fixed- таблицей, изменения в которую вносятся автономными транзакциями, чтобы их могли при перечитывании увидеть те, кто запустился как read committed.
А "глобальный кеш переменных" - такое вряд ли будет. Всё равно эти рельсы сходятся к таблице .
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411115
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикМешает то, что иногда неизвестно надо будет переменную или нет. В
большинстве случаев переменные мало нужны.
Ну так что мешает, когда пользователю таки понадобилась переменная
1) Стартовать транзакцию
2) Прочитать переменную и опционально занести в кэш приложения
3) Завершить транзакцию

Э?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411120
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикМешает то, что иногда неизвестно надо будет переменную или нет. В
большинстве случаев переменные мало нужны.
Ну так что мешает, когда пользователю таки понадобилась переменная
1) Стартовать транзакцию
2) Прочитать переменную и опционально занести в кэш приложения
3) Завершить транзакцию

Э?


И получим 2 обращения к базе вместо одного. Я начал в этом направлении вносить изменения, но споткнулся о некоторые моменты. Пока работы заморозил. До лучших времен.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411125
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикИ получим 2 обращения к базе вместо одногоНасколько часто вы будете получать это лишнее обращение?
На фоне какого числа других (потенциально частых) обращений?
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411133
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикА что непонятного. При чтении из базы по необходимости формируется КЭШ переменных, чтобы 200 раз не бегать по
деревьям настроек пользователя. А значит нужна запись в читающей транзакции. Первый раз получаем данные переменной в 6 шагов, а
все последующие в 1 шаг. Система динамическая и в любой момент значение переменной может быть изменено пользователем или
администратором с другого коннекта.

Сейчас попытка перейти на короткие пишущей транзакции. Сейчас с утра и до ночи одна транзакция tpbReadCommitted и пишет и читает.
Хотя уже некоторые моменты переписаны на короткие пишущие. ГУРУ говорят плохо 1 долгая, пытаемся прислушаться. Хоть и нет пока
необходимости. Лучше заранее чем когда где ни будь припрет.
Смешались в кучу кони, люди, как обычно.
В описанной тобой ситуации показана
длинная read RC и короткая write concurrency.
И никакие гуру ничего против не скажут.

Евгений Болтик> И получим 2 обращения к базе вместо одного

А где тут 2 обращения? Старт транзакции что ли?

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411143
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамЕвгений Болтик> И получим 2 обращения к базе вместо одного

А где тут 2 обращения? Старт транзакции что ли?



Первый селект это переменные, второй силект это данные с учетом переменных. Не у всех задачи в локалках, у нас по свитку подключения имеются. "КРИК ДУШИ: И эти фирмы еще умудряются видео наблюдение оттуда гнать. А программа тормозит видите ли. Чувствуешь себя как в DOS раньше каждый байт был на счету."

А вообще решил поступить как было раньше, динамически читаю переменные без создания кеша. И буду ловить, то что раньше тормозило. Когда увижу тормоза перепишу эти места. Так я чувствую нервы будут целей.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411158
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикПервый селект это переменные, второй силект это данные с учетом
переменных. Не у всех задачи в локалках, у нас по свитку подключения имеются.
И что? Вызов isc_exec_immed() это один round-trip. Даже через интернет это доли секунды.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411166
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЕвгений БолтикПервый селект это переменные, второй силект это данные с учетом
переменных. Не у всех задачи в локалках, у нас по свитку подключения имеются.
И что? Вызов isc_exec_immed() это один round-trip. Даже через интернет это доли секунды.


Это идеальная ситуация. Так и на свистке можно работать. Но обрывы связи и по новой подключения это время. Я не знаю, что там в ФБ+ не так использую прога просто вылетает, а иногда нормальное переподключение. Дома сколько не обрывал связь прога переподключается и дальше работает. Они кричат что не переподключается.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411169
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикЭто идеальная ситуация. Так и на свистке можно работать. Но обрывы
связи и по новой подключения это время.
Переходи на локальное зеркало и офф-лайн репликацию.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411187
Евгений Болтик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovПереходи на локальное зеркало и офф-лайн репликацию.

Микрокредитование. Там такое не прокатит. Только реальные данные.

Мне не надо объяснять многое. Это надо объяснять тем кто бизнес открыл. По мне идеальный вариант это удаленный рабочий стол, но видите ли это им дорого. Не мое дело лезть в чужой бизнес и смотреть что они зарабатывают. Сами пусть решают. У меня и так хватает забот.
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411188
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикМикрокредитование. Там такое не прокатит. Только реальные данные.

Прокатит для справочников и прочей полустатической информации. Остаток будет маленьким,
что сильно облегчит задачу реконнекта и скорость работы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
EXECUTE STATEMENT транзакции
    #38411193
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Евгений БолтикЭто надо объяснять тем кто бизнес открыл.
Не надо им ничего объяснять. То, о чём они не знают, не может их волновать.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / EXECUTE STATEMENT транзакции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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