Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Битый индекс  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 610
Здравствуйте, возникла такая ситуция.

В результате какого-то сбоя индексное чтение из таблицы (FK = число) возвращает 8 строк, а поиск натуралом (FK+0 = число) возвращает 6 строк, т.е. меньше чем индексный поиск.

После обновления индекcа
ALTER INDEX TABLE_FK ACTIVE
натурал и индексный поиски совпадают.
Я понимаю когда запись "вылетела" из индекса, но тут какой-то странный сбой.

После backup/restore лишние 2 строки пропадают.

FB 3.0.4
12 ноя 21, 21:44    [22395368]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30245
Шавлюк Евгений,

не вижу никаких проблем. в смысле, сбой это сбой.
А индекс хранит все ключи, т.е. записи+версии. Запрос видит записи, а поиск по индексу видит записи+версии. Ну и т.д.
12 ноя 21, 22:10    [22395384]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
hvlad
Member

Откуда:
Сообщений: 11551
Шавлюк Евгений,

валидацию не делал ?
12 ноя 21, 23:00    [22395412]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

Шавлюк Евгений
В результате какого-то сбоя индексное чтение из таблицы (FK = число) возвращает
8 строк, а поиск натуралом (FK+0 = число) возвращает 6 строк, т.е. меньше чем
индексный поиск.

Тип поля и план запроса с индексом какой?

Posted via ActualForum NNTP Server 1.5

12 ноя 21, 23:03    [22395414]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 610
hvlad
валидацию не делал ?

Summary of validation errors
Number of data page errors : 2
Number of index page errors : 4
Number of record level warnings : 1
Number of index page warnings : 43
Number of pointer page warnings : 57
Number of database page warnings : 2670

После валидации стало находится 8 записей, что по индексу, что без

Summary of validation errors 
Number of index page errors : 4
Number of record level warnings : 1
Number of index page warnings : 43
Number of database page warnings : 2670
Повторная валидация дает такие данные

Dimitry Sibiryakov
Тип поля и план запроса с индексом какой?

Поле integer
PLAN (TABLE1 INDEX (FK_TABLE1_1))

Сообщение было отредактировано: 13 ноя 21, 01:57
13 ноя 21, 01:56    [22395456]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30245
Шавлюк Евгений,

не надо заниматься ерундой, а надо срочно делать b/r. Я вообще не понимаю, что там выискивать в битой базе, "почему это вот так, а это не так".
13 ноя 21, 10:57    [22395494]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
hvlad
Member

Откуда:
Сообщений: 11551
Шавлюк Евгений
	Number of data page errors	: 2 
Number of index page errors : 4
Вот эти ошибки в firebird.log можешь найти ?
13 ноя 21, 13:06    [22395528]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772
Шавлюк Евгений
PLAN (TABLE1 INDEX (FK_TABLE1_1))

Странно. Даже если нода индекса задвоилась, битмап не должен был позволить
пройти по одной записи дважды. Вот был бы ORDER...
А если в ноду вкрался адрес левой записи, она не должна была пройти сравнение реального значения.
Как вообще возможно для этого плана вернуть больше записей, чем у натурала?

Сообщение было отредактировано: 13 ноя 21, 14:13
13 ноя 21, 14:09    [22395549]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 610
kdv,

Я давно уже сделал b/r теперь тренируюсь "на кошках"

У меня есть битая база. Поэтому если будет интересно, могу ее предоставить разработчикам.
Если это имеет смысл

Сообщение было отредактировано: 13 ноя 21, 14:41
13 ноя 21, 14:39    [22395562]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 610
hvlad,

В архиве 2 лога. После первой и второй проверок

К сообщению приложен файл (firebird.log.7z - 9Kb) cкачать
13 ноя 21, 15:14    [22395576]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30245
Шавлюк Евгений,

не имеет смысла. и логи тоже не имеют смысла. При сбое "молния" ударяет куда попало. Поэтому интересует разве что - сбой памяти, сбой диска, ресет, и так далее, и то для владельца железа. Для разработчиков куда брякнуло - не интересует вообще.
Ну например, база на ХДД, и там появились сбойные секторы. Они обнулились. И что дальше? Как вы себе представляете, что разработчики Фб могут с этим делать?
13 ноя 21, 16:04    [22395589]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54772

kdv
Как вы себе представляете, что разработчики Фб могут с этим делать?

Как минимум - обнаружить и выдать вменяемую ошибку: "нарушение структуры базы на
странице Х ожидалось У, получено О". А не то чтобы молча выдавать восемь строк
из шести возможных...

Posted via ActualForum NNTP Server 1.5

13 ноя 21, 16:12    [22395593]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 1119
kdv,

в первую очередь при сбое наезжают на разработчика. Разработчик начинает искать на кого бы стрелки перевести. А перевести их на разработчика HDD - это последнее дело. Видимо никто не поймёт. Надо хранить бекапы. А искать чёрную кошку в тёмной комнате, особенно если её там нет - пустое занятие.
Давным-давно, когда только появились флешки, клиент решил хранить базу на ней. А чего? Хорошо. Всегда с собой. Если что, можно оперативно вынуть. Но ведь никто не предупредил, что флешка (на том этапе развития) долго не живёт. Вот в один прекрасный момент всё заглючило. База работала, но как-то странно. Оказалось, что большая часть информации безвозвратно потеряна. Хорошо, что удалось вовремя лечение провести и потерянная информация не сильно критична. Можно сказать - произошло чудо. А кто когда думает о бэкапе?
13 ноя 21, 16:21    [22395598]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30245
KreatorXXI,

+100
13 ноя 21, 16:38    [22395604]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30245
Dimitry Sibiryakov
Как минимум - обнаружить и выдать вменяемую ошибку:

оно и так такие сообщения выдает. А если не нравится - сходи в ремонт дисков, они тебе еще чего-нибудь такое расскажут.
В принципе, поврежденная база и поврежденная файловая система - почти одно и то же.
13 ноя 21, 17:06    [22395612]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 610
kdv
оно и так такие сообщения выдает.

Ну если бы выдало багчек (или подобное предупреждение) было бы гораздо лучше, а не молча проглотить ошибку, выдав ее в лог только при валидации.
13 ноя 21, 20:20    [22395662]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
hvlad
Member

Откуда:
Сообщений: 11551
Шавлюк Евгений,

проблема с потерявшимися для натурального скана записями из-за этого:

	Error: Data page 195225 {sequence 57} marked as secondary but contains primary record versions in table ECHO_NALOG (169)

таких ошибок в логе ровно 2 штуки.
Ошибка известная, но очень редкая и пока что не пойманнаяб увы.

Но в логе ещё полно мелких несоответствий на PP, куча орфанов и есть ошибки в индексах, что однозначно указывает на нештатное завершение работы БД как минимум один раз.
Я уже устал твердить об обязательной валидации БД после любого сбоя.
Интересно так же что там с FW ?
14 ноя 21, 11:31    [22395775]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30245
Шавлюк Евгений,

после записи на диск страницы не проверяются на целостность. Если где-то сбойнуло, или "ударила молния", обнаружить проблему можно только тогда, когда кто-то обратится к этим данным. Потом. В приложениях это так и есть. А валидация проверяет всю БД целиком, от начала до конца.
14 ноя 21, 13:59    [22395819]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 610
hvlad
Интересно так же что там с FW ?

Database header page information:
Flags 0
Generation 5727
System Change Number 0
Page size 4096
ODS version 12.0
Oldest transaction 5726
Oldest active 5727
Oldest snapshot 5727
Next transaction 5728
Sequence number 0
Next attachment ID 78
Implementation HW=AMD/Intel/x64 little-endian OS=Windows CC=MSVC
Shadow count 0
Page buffers 0
Next header page 0
Database dialect 3
Creation date Nov 4, 2021 22:02:43
Attributes force write

Variable header data:
Sweep interval: 20000
*END*
14 ноя 21, 14:58    [22395844]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Старый плюшевый мишка
Member

Откуда:
Сообщений: 1128
hvlad

Но в логе ещё полно мелких несоответствий на PP, куча орфанов и есть ошибки в индексах, что однозначно указывает на нештатное завершение работы БД как минимум один раз


Это было давно и неправда, то есть на полуторке, но. У нас по ночам просчитывались весьма серьёзные хранимые агрегаты, процесс продолжался несколько часов. И если оставались брошенные соединения, то мог затянуться так, что не успевал к началу следующего рабочего дня. Почему - загадка, массированных изменений-удалений в оперативной бизнес-логике, по таблицам которой считались эти агрегаты, то есть мусора, не было. Ну, во-первых, под страхом 10% недельной зарплаты через генерала был проведён указ - не бросать включённые компы на ночь, в том числе из противопожарных соображений, на которые он отреагировал с бОльшим пониманием, чем на программистские причуды. А во-вторых ночная богатая внутренняя жизнь сервера (классик на голеньком линуксе без прибамбасов) была организована так:
1. Шатдаун
2. Килл коннектов нофсякей
3. Бэкап без сборки мусора
4. Просчёт
5. Свип
6. В онлайн
Несколько лет всё жило как часики, но потом завёлся у нас таракан финансовый аналитик, который забивал на организационные пугалки и запускал вечерком свои продолжительные расчёты и уходил, надеясь что оно успеет до шатдауна. И тут и начали примерно раз в месяц-два биться индексы, причём на таблицах, с которыми расчёты этого кренделя не работали. Пришлось поднять вопрос на совещании, в смысле - мы сегодня до обеда не работали потому что некоторые стали позволять себе накладные карманы и напомнить о подзабытых уже 10%. Подействовало и битьё индексов прекратилось. А килл процесса классика - это ведь и есть нештатное завершение, хотя, казалось бы, после шатдауна не должно бы аукнуться. Напоминаю, что это было давно и неправда :)
15 ноя 21, 23:51    [22396422]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
hvlad
Member

Откуда:
Сообщений: 11551
Старый плюшевый мишка
Напоминаю, что это было давно и неправда :)
Охотно верю ;)
16 ноя 21, 02:05    [22396438]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
hvlad
Member

Откуда:
Сообщений: 11551
https://github.com/FirebirdSQL/firebird/issues/7044

Советую обновиться до 3.0.8, он на днях выйдет.
17 ноя 21, 13:02    [22396928]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 610
hvlad,

Спасибо
17 ноя 21, 13:38    [22396966]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
ggreggory
Member

Откуда:
Сообщений: 182
hvlad
он на днях выйдет.


Релиз 3.0.8 очень жду! Ура!
17 ноя 21, 14:42    [22397008]     Ответить | Цитировать Сообщить модератору
 Re: Битый индекс  [new]
Vlad F
Member

Откуда:
Сообщений: 1450
hvlad,

А в четверке что с этим?
А, все, рассмотрел в тикете б

Сообщение было отредактировано: 17 ноя 21, 15:15
17 ноя 21, 15:14    [22397026]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Firebird, InterBase Ответить