powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / кто блокирует исходник хранимки?
25 сообщений из 107, страница 1 из 5
кто блокирует исходник хранимки?
    #39871940
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за предыдущие ответы на мои вопрошалки - очень помогли, и главное - оперативно, в течение пары часов.
Радует активность файрбердовского русскоязычного коммьюнити.
Пользуясь таким отношением есть еще одна вопрошалка. Скорее академическая, нежели практическая.
Пишу сервис на дельфе, сервис при старте открывает коннект к моей базе на файрберде. и держит его открытым. Периодически, сервис вызывает селект из вьюхи. уже и создал 2 транзацкции - читающую и пишущую, уже и вручную стартую читающую транзакцию и по окончанию отработки запроса делаю ей коммит. Все равно, при попытке изменить исходник вьюхи, пишет, что вьюха в использовании (in use) и не дает ее перекомпилить. Я так понимаю, что моя читающая транзакция после коммита не отпускает вьюху? Что я делаю не так? Помогает только рестарт сервиса (соотв реконнект).
Жить мне это не мешает, но, боюсь, я неправильно работаю с транзакцией ,а это уже потенциальные грабли.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39871942
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хранимка или вьюха в данном вопросе непринципиально, проблема и там, и там возникает
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39871952
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во-первых, изменять что вьюху, что хранимку - плохая идея сама по себе.
Во-вторых, делать это надо в wait транзакции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872012
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFominсервис при старте открывает коннект к моей базе на файрберде. и держит его открытым.
зачем?
нормальный робот должен по таймеру - коннект, выполнил работу, дисконнект. И ждать дальше.
В чем смысл роботу висеть не просто с открытым коннектом, но еще и с активной транзакцией, пусть и ридонли?
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872100
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv,

ну сервис отрабатывает запросы из вне, которые могут идти с разной периодичностью . Разве есть смысл каждый раз передергивать коннект? А транзакцию читающую завершаю после отработки запроса от клиента.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872121
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFominРазве есть смысл каждый раз передергивать коннект? А транзакцию читающую завершаю после отработки запроса от клиента.
есть смысл НЕ держать постоянно коннект и активную транзакцию.

Блин, уже сколько народу на эти грабли наступает, и всё равно проблема с прикладными решениями.
Сначала пишут роботов, которые постоянно держат коннект и транзакцию, потом пишут скрипты, которые эти коннекты или самих роботов убивают каждые пару часов. Ну вот зачем это надо? Карму себе портить?
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872122
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

ну вот например. Я когда писал монитор транзакций IBTM, который каждую минуту стартовал коннект, транзакцию, и тут же это завершал, был обеспокоен - вдруг дофига транзакций стартует, и всё такое.
Оказалось, что
- в сутках 1440 минут. Старт и коммит 1440 транзакций в сутки - это ни о чем.
- старт нового коннекта каждую минуту, даже при 200-400 активных коннектах, это тоже ни о чем.

В результате, получилось, что такая тулза абсолютно никак на производительность даже нагруженного сервера не влияет.
Зато не держит ни открытых коннектов, ни активных транзакций.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872123
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvЗато не держит ни открытых коннектов, ни активных транзакций.

Насчёт метаданных тут что-то тоньшее. Я когда-то разобрался, но уже забыл. Отправная точка была - для Эксперта альтеремая процедура in use, а для isql - никаких проблем.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872127
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvGrigoriyFominРазве есть смысл каждый раз передергивать коннект? А транзакцию читающую завершаю после отработки запроса от клиента.
есть смысл НЕ держать постоянно коннект и активную транзакцию.

Я ж писал, что транзакцию активную сразу после чтения коммитчу. То есть просто висит коннект из-за того, что я алертером ловлю нужные мне изменения в базе. Так бы наверное и не держал коннект.
Дабы не создавать новый топик - на форме 2 транзакции - пишущая и читающая, подключены к коннекту соответствующе. Стартую читающую, выполняю селект через FDQuery - все хорошо. После чтения, не трогая читающую, стартую пишущую транзакцию и через connection.ExecSQL выполняю UPDATE команду. И вуаля - ругань, [FireDAC][Phys][FB]attempted update during read-only transaction. То есть апдейт происходит в читающей транзакции, а в коннекте updateTransaction прописана верная. Как обойти сие недоразумение? как указать ExecSQL коннекта, что его надо выполнять через пишущую транзакцию?
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872135
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

кто такой connection.execsql? у него, наверное, есть своя defaulttransaction.
Вот не надо этой лабуды, когда update выполняется в контексте фиг знает какой транзакции.
В Дельфи, кстати, есть отладчик, в котором можно всё найти.
GrigoriyFominна форме 2 транзакции - пишущая и читающая, подключены к коннекту соответствующе.
да пофиг, куда они подключены. Понятно что транзакции могут быть только в контексте конкретного коннекта.
А для выполнения оператора надо указывать конкретную транзакцию. Например, если к коннекту подключены 2 транзакции, то откуда оно узнает, в какой транзакции надо выполнять connection.execsql?
Ну что-то прям совсем элементарные вопросы.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872136
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFominЯ ж писал, что транзакцию активную сразу после чтения коммитчу.
ну ок. а тогда что этот робот высиживает в коннекте без транзакций? Это экономия чего, собственно? Зачем вообще нужен активный коннект без выполнения в нём чего-либо?
Если убрать "активный коннект", робот что, будет долбиться к серверу 60 раз в минуту, например?
У вас же калькулятор есть, или Excel, можно примерно посчитать, сколько раз в сутки/час/минуту робот будет лезть на сервер с новым коннектом и транзакцией.

Я бы понимал, если вы собираетесь долбить сервер 20 раз в минуту, например. Тогда да, открывать-закрывать коннект в этом случае как-то нехорошо, это похоже на ddos-атаку. Но вы ж так и не сказали, насколько часто вам надо некие действия на сервере выполнять.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872150
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvGrigoriyFominЯ ж писал, что транзакцию активную сразу после чтения коммитчу.
ну ок. а тогда что этот робот высиживает в коннекте без транзакций? Это экономия чего, собственно? Зачем вообще нужен активный коннект без выполнения в нём чего-либо?

Активный коннект нужен, чтоб принимать сообщения от файрберда - в триггерах есть post_event, которые всегда готов обработать мой сервис.

connection.ExecSQL - это способ простого выполнения SQL-команды без создания лишних компонентов посредством самого коннекшена. Вот как конкретно для ExecSQL указать какую транзакцию задействовать?
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872153
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

Экономика должна быть экономной. (с) Л.И. Брежнев.
Никак,. Делай отдельный TQuery, и у для него уже указывай конкретную транзакцию.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872154
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаНасчёт метаданных тут что-то тоньшее. Я когда-то разобрался, но уже забыл. Отправная точка была - для Эксперта альтеремая процедура in use, а для isql - никаких проблем.dimitr тут ликбез проводил, с обстоятельным объяснением "тонких материй", навскидку пост не попался, но если совсем кратко, то волшебное слово "wait".

GrigoriyFominАктивный коннект нужен, чтоб принимать сообщения от файрберда - в триггерах есть post_event, которые всегда готов обработать мой сервис.Далеко не факт, что серверу легче разослать эвенты, чем регулярно отвечать на вопросы "нет ли чего новенького?". Это как дилемма: работа периферийного устройства по прерываниям, либо его регулярный опрос процом. Под нагрузкой оказывается дешевле опрашивать.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872169
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad FНикак,. Делай отдельный TQuery, и у для него уже указывай конкретную транзакцию.
В итоге так и сделал, не нашел где там указать транзакцию
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872179
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

Вот с этого и надо было начинать, - компоненты доступа какие?
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872182
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad Fкомпоненты доступа какие?
FireDAC
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872206
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFominVlad FНикак,. Делай отдельный TQuery, и у для него уже указывай конкретную транзакцию.
В итоге так и сделал, не нашел где там указать транзакцию
Значит, плохо искал.
http://docwiki.embarcadero.com/Libraries/Rio/en/FireDAC.Comp.Client.TFDRdbmsDataSet.Transaction
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872212
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvзачем?
нормальный робот должен по таймеру - коннект, выполнил работу, дисконнект. И ждать дальше.
к чему такая категоричность?
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872229
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFominв триггерах есть post_event, которые всегда готов обработать мой сервис.
эвенты, конечно, это волшебно и прикольно, но лучше без них, особенно роботу.
Дегтярев Евгенийк чему такая категоричность?
к тому, что я этих ваших роботов с длинными коннектами и длинными транзакциями наблюдаю в промышленных системах регулярно.
И с ними (и с длинными транзакциями и длинными коннектами) впоследствии идет борьба.

К примеру, что делать с роботом, если нужно отрубить все коннекты? Пользователям еще как-то можно это сказать, а роботу - обычно нет. Приходится робота убивать. А зачем тогда писать такой софт, который при maintenance надо терминировать?
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872232
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvэвенты, конечно, это волшебно и прикольно, но лучше без них, особенно роботу.

Вот роботу-то они как раз годятся лучше, чем какому-нибудь приложению, которое начнёт
автоматически обновлять датасеты.

И таки нет, проблемы с длинными коннектами кончились ещё в районе полуторки-двойки. Если
ты знаешь какую-то проблему, то лучше назови её имя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872245
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvк тому, что я этих ваших роботов с длинными коннектами и длинными транзакциями наблюдаю в промышленных системах регулярно.
И с ними (и с длинными транзакциями и длинными коннектами) впоследствии идет борьба.
из этого не следует что одного коннекта в минуту достаточно всем
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872247
GrigoriyFomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Vlad FGrigoriyFominпропущено...

В итоге так и сделал, не нашел где там указать транзакцию
Значит, плохо искал.
http://docwiki.embarcadero.com/Libraries/Rio/en/FireDAC.Comp.Client.TFDRdbmsDataSet.Transaction
Прочитал, ничего нового не нашел.
я ж писал - у меня 2 транзакции - читающая и пишущая, заданы в коннекте соотв как Transaction и UpdateTransaction.
Вопрос был - как сказать Connection исполнить код ExecSQL в пишущей транзакции? Я полагал, что ExecSQL умеет сам поределить тип команды и в этой зависимости выполняться в читающей либо пишущей транзакции. на лету менять в коннекшене транзакции не комильфо - часть запросов уже выполняются в читающей транзакции.
Хотя, учитывая, что я пришел к использованию коротких как пишущей, так и читающей транзакций, как вариант было держать только 1 пишущую и через нее делать все манипуляции.
А у кого-то есть опыт нагрузки на сервер при коннекте/дисконнекте? Стоит ли держать коннект в простое закрытым?
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872255
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GrigoriyFomin,

О, боги. Да заведи, наконец, уже два TFDQuery. Всего ДВА.
...
Рейтинг: 0 / 0
кто блокирует исходник хранимки?
    #39872256
Vlad F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждый со своей специфической транзакцией.
...
Рейтинг: 0 / 0
25 сообщений из 107, страница 1 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / кто блокирует исходник хранимки?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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