|
|
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Добрый день. Вопрос больше наверно к Владу. Тут кое что начал пробовать и возникли трудности. При выполнении EXECUTE STATEMENT можно действовать только от параметров текущей транзакции. А нельзя ли прикрутить возможность указать свои параметры? Смысл такой при транзакции на чтение получаем некоторые данные, но т.к. они виртуально зависимые, от того как и под кем работает пользователь, приходится формировать КЭШ. Если работать без этого КЭША будет подтормаживать. Формировать полный список КЭША тоже не эффективно при входе, т.к. некоторые параметры могут не понадобиться на протяжении всего дня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 13:51:20 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений Болтик> При выполнении EXECUTE STATEMENT ... Евгений Болтик> А нельзя ли прикрутить возможность указать свои параметры? IIRC, обсуждалось уже, даже в трекер вносилось, кажется. Может, это - http://tracker.firebirdsql.org/browse/CORE-4015 Смысл такой при транзакции на чтение получаем некоторые данные, но т.к. они виртуально зависимые, от того как и под кем работает пользователь, приходится формировать КЭШ. Если работать без этого КЭША будет подтормаживать. Формировать полный список КЭША тоже не эффективно при входе, т.к. некоторые параметры могут не понадобиться на протяжении всего дня. Интересно, это только я ничего не понял? А почему нельзя сразу выставить нужный TIL родительской транзакции, кстати? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 14:27:33 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикСмысл такой при транзакции на чтение получаем некоторые данные, но т.к. они виртуально зависимые, от того как и под кем работает пользователь, приходится формировать КЭШ.Юзать GTT для кеша не в моде ныне ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 14:41:22 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамМожет, это - http://tracker.firebirdsql.org/browse/CORE-4015 Похоже оно. Гаджимурадов РустамИнтересно, это только я ничего не понял? А почему нельзя сразу выставить нужный TIL родительской транзакции, кстати? А что непонятного. При чтении из базы по необходимости формируется КЭШ переменных, чтобы 200 раз не бегать по деревьям настроек пользователя. А значит нужна запись в читающей транзакции. Первый раз получаем данные переменной в 6 шагов, а все последующие в 1 шаг. Система динамическая и в любой момент значение переменной может быть изменено пользователем или администратором с другого коннекта. По этой причине не получится пользоваться RDB$GET_CONTEXT. (Да и вообще по идее RDB$SET_CONTEXT не должен значения принимать в только читающей транзакции) Сейчас попытка перейти на короткие пишущей транзакции. Сейчас с утра и до ночи одна транзакция tpbReadCommitted и пишет и читает. Хотя уже некоторые моменты переписаны на короткие пишущие. ГУРУ говорят плохо 1 долгая, пытаемся прислушаться. Хоть и нет пока необходимости. Лучше заранее чем когда где ни будь припрет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 15:00:14 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Йонас СусанисЕвгений БолтикСмысл такой при транзакции на чтение получаем некоторые данные, но т.к. они виртуально зависимые, от того как и под кем работает пользователь, приходится формировать КЭШ.Юзать GTT для кеша не в моде ныне ? Я как то попытался юзать, но что то применения не нашел нормального. В данном механизме не подойдет. Сильно много неопределенностей пока юзер не зайдет под определенной группой, профилем и пользователем. Заранее формировать таблицу возможных вариантов это я думаю изврат. 5 профелей 20 груп 20 пользователей 176 переменных это порядка 352000 строк. По факту менее 5000 в основном ~2000 записей висит. А послушаешь народ у которого 400 юзеров это будет 7040000 строк. И не факт что групп не прибавиться. Не лучше динамически и немного, чем постепенно тонущая лодка от ненужных данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 15:21:50 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений Болтикнужна запись в читающей транзакции. Первый раз получаем данные переменной в 6 шагов, а все последующие в 1 шаг. А делать это в разных транзакциях мешает что? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 15:35:33 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикСейчас с утра и до ночи одна транзакция tpbReadCommitted и пишет и читает. ты уверен, что она read read_committed rec_version , а не просто read_committed rec_version ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 15:45:43 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикПри чтении из базы по необходимости формируется КЭШ переменных, чтобы 200 раз не бегать по деревьям настроек пользователя. А значит нужна запись в читающей транзакции. Первый раз получаем данные переменной в 6 шагов, а все последующие в 1 шаг. Система динамическая и в любой момент значение переменной может быть изменено пользователем или администратором с другого коннекта . Если только ЮЗЕР меняет переменные, то GTT рулят. Ибо в них допускается запись даже в read only транзакции (начиная с 2.5.1 вроде бы). И будь там хоть 100 млн строк - при наличии индекса никаких временн ы х затыков в поиске не будет. Если же админ меняет эти переменнын, то насколько упадёт произв-сть приложения, если юзер ОДИН РАЗ перечитает это новое значение и подтянет его в свой "кеш" ? Что, админ по 100500 раз меняет значения ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 16:07:05 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕвгений Болтикнужна запись в читающей транзакции. Первый раз получаем данные переменной в 6 шагов, а все последующие в 1 шаг. А делать это в разных транзакциях мешает что? Мешает то, что иногда неизвестно надо будет переменную или нет. В большинстве случаев переменные мало нужны. Вообще это касается доступа к тем или иным ресурсам пользователям. Это похоже на расширение прав доступа к объектам и строкам в таблицах. По этой причине встроено в чтение. И является чисто системным наворотом в нашем ПО. Все остальное стандартно. Будем говорить так, я на уровне сервера обрезаю доступ к данным по возможности. Поэтому фильтрация произойдет на стороне сервера, а не на стороне пользователя. Если ГУРУ на нас забьют надо будет провести ряд тестов. Авось и без КЭШа проживем, но мало вероятно. То что необходимо не будет использоваться повсеместно. Надо как бы системный внутренний уровень без ограничений организовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 16:21:20 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
kdvЕвгений БолтикСейчас с утра и до ночи одна транзакция tpbReadCommitted и пишет и читает. ты уверен, что она read read_committed rec_version , а не просто read_committed rec_version ? Не поннял про что ты. Там так write+isc_tpb_nowait+read_committed+rec_version ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 16:29:25 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений Болтик, я, как обычно, ничего не понял. Какой кеш ? Причём тут параметры тр-ции ? Хочешь услышать ответ - потрудись оформить вопрос: какая проблема, как пытались решить, какой способ её решения предлагается, почему этот способ лучше других... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 16:36:52 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Ваня СусанинЕсли только ЮЗЕР меняет переменные, то GTT рулят. Ибо в них допускается запись даже в read only транзакции (начиная с 2.5.1 вроде бы). И будь там хоть 100 млн строк - при наличии индекса никаких временн ы х затыков в поиске не будет. Если же админ меняет эти переменнын, то насколько упадёт произв-сть приложения, если юзер ОДИН РАЗ перечитает это новое значение и подтянет его в свой "кеш" ? Что, админ по 100500 раз меняет значения ? Нет не только пользователь, а любой пользователь имеющий права доступа к переменной. Ну про GTT с read only это уже интересно надо попробовать. По поводу тормозов для меня 15 сек иногда можно и подождать. Но пользователи потом весь мог вынесут. Обычно что то меняется в самый не подходящий момент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 16:49:33 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
hvladЕвгений Болтик, я, как обычно, ничего не понял. Какой кеш ? Причём тут параметры тр-ции ? Хочешь услышать ответ - потрудись оформить вопрос: какая проблема, как пытались решить, какой способ её решения предлагается, почему этот способ лучше других... Проще говоря: "А нельзя ли прикрутить возможность указать свои параметры?". А то я снова буду писать и меня никто не поймет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 16:59:14 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикНет не только пользователь, а любой пользователь имеющий права доступа к переменной. Ну про GTT с read only это уже интересно надо попробовать.Нет, уже ничего интересного не будет. Ибо "любой пользователь" никогда не увидит чужие данные. Остается вариант с fixed- таблицей, изменения в которую вносятся автономными транзакциями, чтобы их могли при перечитывании увидеть те, кто запустился как read committed. А "глобальный кеш переменных" - такое вряд ли будет. Всё равно эти рельсы сходятся к таблице . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 17:01:14 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикМешает то, что иногда неизвестно надо будет переменную или нет. В большинстве случаев переменные мало нужны. Ну так что мешает, когда пользователю таки понадобилась переменная 1) Стартовать транзакцию 2) Прочитать переменную и опционально занести в кэш приложения 3) Завершить транзакцию Э? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 17:05:14 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕвгений БолтикМешает то, что иногда неизвестно надо будет переменную или нет. В большинстве случаев переменные мало нужны. Ну так что мешает, когда пользователю таки понадобилась переменная 1) Стартовать транзакцию 2) Прочитать переменную и опционально занести в кэш приложения 3) Завершить транзакцию Э? И получим 2 обращения к базе вместо одного. Я начал в этом направлении вносить изменения, но споткнулся о некоторые моменты. Пока работы заморозил. До лучших времен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 17:30:58 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикИ получим 2 обращения к базе вместо одногоНасколько часто вы будете получать это лишнее обращение? На фоне какого числа других (потенциально частых) обращений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 17:41:05 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикА что непонятного. При чтении из базы по необходимости формируется КЭШ переменных, чтобы 200 раз не бегать по деревьям настроек пользователя. А значит нужна запись в читающей транзакции. Первый раз получаем данные переменной в 6 шагов, а все последующие в 1 шаг. Система динамическая и в любой момент значение переменной может быть изменено пользователем или администратором с другого коннекта. Сейчас попытка перейти на короткие пишущей транзакции. Сейчас с утра и до ночи одна транзакция tpbReadCommitted и пишет и читает. Хотя уже некоторые моменты переписаны на короткие пишущие. ГУРУ говорят плохо 1 долгая, пытаемся прислушаться. Хоть и нет пока необходимости. Лучше заранее чем когда где ни будь припрет. Смешались в кучу кони, люди, как обычно. В описанной тобой ситуации показана длинная read RC и короткая write concurrency. И никакие гуру ничего против не скажут. Евгений Болтик> И получим 2 обращения к базе вместо одного А где тут 2 обращения? Старт транзакции что ли? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 17:55:15 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамЕвгений Болтик> И получим 2 обращения к базе вместо одного А где тут 2 обращения? Старт транзакции что ли? Первый селект это переменные, второй силект это данные с учетом переменных. Не у всех задачи в локалках, у нас по свитку подключения имеются. "КРИК ДУШИ: И эти фирмы еще умудряются видео наблюдение оттуда гнать. А программа тормозит видите ли. Чувствуешь себя как в DOS раньше каждый байт был на счету." А вообще решил поступить как было раньше, динамически читаю переменные без создания кеша. И буду ловить, то что раньше тормозило. Когда увижу тормоза перепишу эти места. Так я чувствую нервы будут целей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 18:14:48 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикПервый селект это переменные, второй силект это данные с учетом переменных. Не у всех задачи в локалках, у нас по свитку подключения имеются. И что? Вызов isc_exec_immed() это один round-trip. Даже через интернет это доли секунды. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 18:44:54 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovЕвгений БолтикПервый селект это переменные, второй силект это данные с учетом переменных. Не у всех задачи в локалках, у нас по свитку подключения имеются. И что? Вызов isc_exec_immed() это один round-trip. Даже через интернет это доли секунды. Это идеальная ситуация. Так и на свистке можно работать. Но обрывы связи и по новой подключения это время. Я не знаю, что там в ФБ+ не так использую прога просто вылетает, а иногда нормальное переподключение. Дома сколько не обрывал связь прога переподключается и дальше работает. Они кричат что не переподключается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 19:08:34 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикЭто идеальная ситуация. Так и на свистке можно работать. Но обрывы связи и по новой подключения это время. Переходи на локальное зеркало и офф-лайн репликацию. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 19:10:39 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПереходи на локальное зеркало и офф-лайн репликацию. Микрокредитование. Там такое не прокатит. Только реальные данные. Мне не надо объяснять многое. Это надо объяснять тем кто бизнес открыл. По мне идеальный вариант это удаленный рабочий стол, но видите ли это им дорого. Не мое дело лезть в чужой бизнес и смотреть что они зарабатывают. Сами пусть решают. У меня и так хватает забот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 19:39:39 |
|
||
|
EXECUTE STATEMENT транзакции
|
|||
|---|---|---|---|
|
#18+
Евгений БолтикМикрокредитование. Там такое не прокатит. Только реальные данные. Прокатит для справочников и прочей полустатической информации. Остаток будет маленьким, что сильно облегчит задачу реконнекта и скорость работы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2013, 19:45:44 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38411038&tid=1564280]: |
0ms |
get settings: |
11ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
213ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 565ms |

| 0 / 0 |
