powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / GEN_ID дает повторяющееся значение
25 сообщений из 108, страница 2 из 5
GEN_ID дает повторяющееся значение
    #39957397
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor,

ну, связь можно увидеть, например, при FW=OFF.
Вставляется запись, меняется генератор
делается коммит
тут происходит ресет.
С учетом FW=OFF вполне может быть запись успела записаться, Коммит успел записаться, а страница генераторов - нет.
(хотя у автора fw=on).

Скорее всего, где-то в коде есть обращения к генератору вне триггеров, причем, с вызовами типа gen_id(GEN_DB_LOG_ID, 0).
Иначе у автора ресеты там постоянно происходят.
Видимо, авторы софта не расчитывали на то, что у пользователя их системы за 12-13 лет интенсивность работы с данными вырастет до 5млн транзакций в сутки.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957405
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

pastorне вижу связи.

Попробуй включить логику: при коммите грязные страницы из кэша сбрасываются на диск,
включая страницу генераторов. Генераторы работают исключительно на увеличение. Чтобы
возникла описанная ситуация, вставленные данные должны записаться на диск, а генератор -
нет. В каком случае это возможно?


При коммите какой именно транзакции из 100500 сбрасывается страница генераторов?

Порядок записи страниц зависит не только от сервера. Еще и от ос/контроллера.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957409
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorПри коммите какой именно транзакции из 100500 сбрасывается страница генераторов?

Вариант 1: при коммите любой транзакции.
Вариант 2: при коммите транзакции, которая её "потрогала", то есть получила новое значение
генератора для вставки записи в таблицу.

Опять включаем логику: есть ли разница между этими вариантами?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957415
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

pastorПри коммите какой именно транзакции из 100500 сбрасывается страница генераторов?

Вариант 1: при коммите любой транзакции.
Вариант 2: при коммите транзакции, которая её "потрогала", то есть получила новое значение
генератора для вставки записи в таблицу.

Опять включаем логику: есть ли разница между этими вариантами?..


все 10500 в любом порядке.
а кеш ос/контроллера посчитал, что этот блок пипец какой востребованный, раз к нему столько обращаются и на носитель скидывать пока не стал. а там и хендлы кончились.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957416
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробую добавить информации, чтобы не было хождения по кругу с одними и теми же вопросами.

Чаще всего слетает генератор у таблицы, которая отвечает за журналирование изменений в БД.
Запись в таблицу только из одной хранимой процедуры, которая вызывается из тригеров на вставку/обновление/удаление для 50 разных таблиц.
Из программного кода эта таблица только читается - никаких изменений в эту таблицу не проводится.

Несколько раз такое возникло и в других таблицах (генераторы тоже "отставали"), где запись происходит из клиентского интерфейса. Отношение возникновения ситуаций в дургих таблицах к протоколу, где-то 1к50. Но это по причине того, что в протоколе фиксируется значительно больше строк.

Везде генераторы работают по "классике" - в BEFORE INSERT. Т.е. теоретически значение генератора должно инкрементироваться еще до того, как этот идентификатор "ляжет" в таблицу.

Вопрос Гуру - может ли произойти запись в таблицу без записи изменений в таблице генераторов, если генератор инкрементится в тригере?

БД в одном фале - может ли как-то влиять структура файловой системы? У нас виртуальный сервер?

Может есть какие-то настройки кеша (буфера), которые можно "подергать"?

UPD: еще вопрос. Может ли влиять как-то SWEEP=0 ? У меня "свип" по расписанию каждые 3 часа вызывается, а в самой БД интервал сброшен.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957423
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_nubПопробую добавить информации
Попробуй ещё раз, в этом раунде у тебя не получилось.

Ты рассказываешь как твоя система работает по твоему мнению. Это не поможет решить
проблему, поскольку система явно работает несколько иначе.

delphi_nubВезде генераторы работают по "классике" - в BEFORE INSERT. Т.е.
теоретически значение генератора должно инкрементироваться еще до того, как этот
идентификатор "ляжет" в таблицу.
Чтобы оно на самом деле так работало, из триггера надо убрать "IF (ID IS NULL)".

delphi_nubБД в одном фале

Расширение у этого файла какое?

delphi_nubУ нас виртуальный сервер?

С этим - в битву экстрсенсов.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957428
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, про виртуальный сервер я ошибочно знак вопроса поставил.
Расширение FDB


Проверку на пустой ID я убрал, конечно.
Но проверка гипотезы займет какое-то время...
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957433
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, извините, что пишу возможно глупости. Но это от незнания темы и остроты проблемы.
Крайним назначили меня и никого не волнуют проблемы индейцев



Решил посмотреть в лог-файл сервера.

Очень много записей с ошибкой формата:
Clump N at offset NNNNNN

А потом вот такая:
Fatal exception during clumplet dump: Invalid clumplet buffer structure: buffer end before end of clumplet - clumplet too long

Быстрый гуглинг не привел к результату - не может ли это быть следом из одной и той же проблемы?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957435
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
Чтобы оно на самом деле так работало, из триггера надо убрать "IF (ID IS NULL)".

Если значение извлекается из генератора на клиентской стороне "перед insert()" - возможно, все встанет колом. :)
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957439
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
Dimitry Sibiryakov
Чтобы оно на самом деле так работало, из триггера надо убрать "IF (ID IS NULL)".

Если значение извлекается из генератора на клиентской стороне "перед insert()" - возможно, все встанет колом. :)


Только в тригере. Не должно все встать колом, т.к. просто айди записи изменится на более "свежий"
Связок с этой таблицей по внешнему ключу нет, т.е. логика данных не нарушится
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957444
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну, ладно.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957451
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DS> Чтобы оно на самом деле так работало, из триггера надо убрать "IF (ID IS NULL)".

Ты хорош глупости-то советовать, не зная подробностей.
Все связи между таблицами могут накрыться, а он потом
восстановить нифига не сможет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957457
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТы хорош глупости-то советовать, не зная подробностей.

Когда ТС проигнорировал все вменяемые советы - не остаётся ничего другого.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957460
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov

Гаджимурадов РустамТы хорош глупости-то советовать, не зная подробностей.

Когда ТС проигнорировал все вменяемые советы - не остаётся ничего другого.


Какие вменяемые советы были проигнорированы? Поставить "ELSE", чтобы "поймать", что кто-то пишет свой айди?
Нет, т.к. данная таблица не пользовательская и пользовательский код в нее не пишет нигде. Все делается в тригерах БД.
Еще раз повторю - это протокол изменений БД
Т.е. там фиксируется информация, в какой таблице БД, в какое время, какая запись была добавлена/изменена/удалена
Запись в эту таблицу с клиента не предусмотрена кодом.
Файл БД не расшарен (у нас с этим все очень строго).
Расширение файла (не знаю, на что оно влияет) я вам написал.


В ходе спора про проверку на нул, могли не заметить мой вопрос про протокол сервера.

Посмотрите на него пожалуйста - я через гугл пока не нашел внятного объяснения появления этой ошибки кроме вот этого: http://www.firebirdfaq.org/faq320/

Но там лишь рекоменадция все на UTF8 перевести, а у меня все работает в 1251
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957464
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
delphi_nub
Версия 2.0


автор
ODS version 11.1


Разве так бывает?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957467
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_nubНет, т.к. данная таблица не пользовательская и пользовательский код в нее не пишет нигде.

Это ты так думаешь.

ъъъъъРазве так бывает?

Не бывает. И вышеприведённые ошибки версия 2.0 тоже выдавать не может.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957468
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov
delphi_nubНет, т.к. данная таблица не пользовательская и пользовательский код в нее не пишет нигде.

Это ты так думаешь.

ъъъъъРазве так бывает?

Не бывает. И вышеприведённые ошибки версия 2.0 тоже выдавать не может.

Все равно весело.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957470
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,
мог ошибиться в версии FB - где посмотреть реальный № версии?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957473
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delphi_nub
могли не заметить мой вопрос про протокол сервера.

Если ты про ошибки из лога, то, как я уже сказал, версия 2.0 их выдавать не может, они появились только в 3.0 и вызываются тем, что из приложения серверу (клиенту) скармливают мусор в DPB/TPB/итд.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957475
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему не рассматривается версия, что кто-то/что-то откатывает значение генератора?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957477
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
delphi_nub
Dimitry Sibiryakov,
мог ошибиться в версии FB - где посмотреть реальный № версии?

Например, посмотри свойства серверного процесса.
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957479
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
Например, посмотри свойства серверного процесса.


2.1.1.17910
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957480
delphi_nub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IBExpert
А почему не рассматривается версия, что кто-то/что-то откатывает значение генератора?


Как это возможно и где это можно искать?
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957481
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
delphi_nub
2.1.1

Лапа ты моя!
Скорее обновляйся: https://firebirdsql.org/en/firebird-2-1/
...
Рейтинг: 0 / 0
GEN_ID дает повторяющееся значение
    #39957484
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Впрочем, есть один сценарий, в который укладывается и откат генераторов, и ошибки из лога.
Это memory corruption в результате сбойного ОЗУ или кривой UDF.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 108, страница 2 из 5
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / GEN_ID дает повторяющееся значение
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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