powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / порядок восстановления индексов
11 сообщений из 11, страница 1 из 1
порядок восстановления индексов
    #32489890
Nick REN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужна помощь.

1. Эксплуатируется Informix9.2 под Linux 2.2х. В БД существует довольно большая таблица. Иногда происходит неконтролируемой сбой ("портятся индексы"), так что при работе с таблицей время отклика увеличивается на порядки для статистических выгрузок. Подскажите порядок восстановления индексов. Есть ли специальные утилиты типа repaire table или надо сначала остановить сервис, скопировать таблицу, воссоздать ее заново (drop table + create table) и скопиравать данные назад. Данные очень критичные. Может кто-то составлял подобную инструкцию для сисадминов по действию в подобных случаях. Я не специалист в БД, поэтому буду очень признателен за любое руководство в данном вопросе.

2. Имеет ли смысл перейти на более свежую версию Informix? И есть ли такие?Насколько велик риск проблем (потеря данных и т.д.) и на какое время придеться остановить сервис.

Заранее благодарен
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32490013
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор1. Эксплуатируется Informix9.2 под Linux 2.2х. В БД существует довольно большая таблица. Иногда происходит неконтролируемой сбой ("портятся индексы"),
Как проявляется сбой? Что ты под этим подразумеваешь?
По моему дело совсем не в индексах.

автортак что при работе с таблицей время отклика увеличивается на порядки для статистических выгрузок
Надо смотреть план запроса. Только он покажет объективную реальность.
А возможно запрос натыкается на блокировки, ждет ресурсов PDQ, .....


Индексы можно пересоздавать не "трогая" таблицу, drop index -> create index.
"Утилиту" для себя я написал, но она использует утилиту myschema Арта Кагеля из набора utils2_ak, если сможешь ее собрать то вот мой скрипт:
в файл ix_rebiuld.lst помести список таблиц индексы которых хочешь пересоздать, в файле index.sql получишь скрипт для пересоздания.
Переменная FHOST - имя информикс сервера, FDB - имя базы.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
#!/bin/bash

FHOST= "myserver_on" 
FDB= "mydatabase" 

echo  "set pdqpriority 100 ;" >index.sql
echo  "" >>index.sql

for i in `< ix_rebiuld.lst`
do
    echo " { Index for Table  "$i"  } " >>index.sql

    dbaccess $FDB@$FHOST - <<%%
    output to pipe " cat >>index.sql " without headings

    Select 'drop index '||idxname||';'
    From sysindexes a, systables b
    Where a.tabid = b.tabid and tabname='$i'
%%

  echo " " >>index.sql

  /usr/opt/ids_util/Utils/myschema -h $FHOST -d $FDB -t $i -T table_.sql index_.sql

  cat index_.sql >> index.sql
done
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32490041
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Из чего видно, что индексы "портятся" ? Увеличение время отклика - это не есть признак.
2. Для проверки целостности базы используется утилита oncheck.
3. Для приведение планов запросов в порядок необходимо выполнять update statistics для таблиц и процедур на регулярной основе.
4. Для просмотра плана запроса необходимо перед выполнением его сказать
set explain on;
после начала выполнения запроса смотреть план запроса в файле sqexplain.out в текущем каталоге (если запрос идет через сеть, то текущим катологом скорее всего будет $HOME).
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32490871
Nick REN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ОК. Спасибо за ответ. Я постараюсь разобраться в причинах.
Внешние признаки такие: доступ к таблице (в ней содержится информация о транзакциях клиентов) становится затрудненным, а именно:
1. Определенные транзакции (клиентов) вообще не удается просмотреть
2. Соответственно процедуры статистики (которые работают по всем записям таблицы) не выполняются успешно.

Такая ситуация происходит редко (раз в полгода), но хотелось бы зафиксить эту проблему.
И еще: у нас два сервера Информикс (одинаковая версия) и проблемы бывают на обоих базах.
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32491049
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОК. Спасибо за ответ. Я постараюсь разобраться в причинах.
Внешние признаки такие: доступ к таблице (в ней содержится информация о транзакциях клиентов) становится затрудненным, а именно:
1. Определенные транзакции (клиентов) вообще не удается просмотреть
2. Соответственно процедуры статистики (которые работают по всем записям таблицы) не выполняются успешно.

Информикс блокировочник, т.е. бывают ситуации когда запись(и) в таблице транзакций клиентов блокируются эксклюзивно одной или несколькими сесиями например при редактировании, при этом другие сессии их возможно не смогут прочитать, тогда они отвалятся с ошибкой -154 ISAM error: Lock Timeout Expired. У вас такая ошибка?
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32493193
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откуда вы знаете, что проблема в запорченных индексах ? Полную уверенность может дать только oncheck (который может так же и пофиксить индекс, а если нет - то пометить его как запорченный, и он будет пересоздан при рестарте информикса). Если не хотите ждать рестарта - убейте индекс и создайте его заново. Естественно, на время создания таблица будет залочена.

В таком вот аксепте
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32493197
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, 9.2 довольно старая и (была) довольно глючная версия. Возможно, имеет смысл перейти на 9.3 или 9.4.

В таком вот аксепте
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32493200
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Естественно, как и при любой миграции, данные необходимо забэкапить.
Риск, что что-то пойдет не так, невелик, но он есть.
При миграции с 9.2 на 9.3 или 9.4 никаких особых внутренних преобразований не делается, так что теоретически вся миграция должна занять минуты.
Подробнее описано в руководстве по миграции (см IBM сайт, доки по информиксу).

В таком вот аксепте
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32511556
Nick REN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще одно: такое явление происходит при некорректном завершении работы сервера. Например, выключение питания.
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32511571
В.К.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проверьте режим журнализации базы. Если буферизованная журнализация, и (как это бывает по умолчанию в 9.x) используются Fuzzy Checkpoint, то именно это сочетание (по устойчивым слухам) и может быть причиной "порчи" индексов.

Отсюда простой рецепт "предотвращения":
- перейти на небуферизованную журнализацию (ontape -s -L 0 -U db_name)
- отключить Fuzzy Checkpoint (set NOFUZZYCKPT=1)
- проверить, не станет ли лучше...

Чемберлен
...
Рейтинг: 0 / 0
порядок восстановления индексов
    #32514103
Выбегалло
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UPS поставьте....

\В таком вот аксепте
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / порядок восстановления индексов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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