Форум » Clipper » INDEX CORRUPTION » Ответить

INDEX CORRUPTION

mike: Подскажите алгоритм, как в многопользовательской системе возможно организовать переиндексацию не завершая работу пользователей. Я вижу только один вариант - всем завершить работу открыть БД в режиме EXCLUSIVE затем переиндексировать. А если пользователей много и они находятся далеко друг от друга?

Ответов - 15

Dima: mike Ты сам ответил на свой вопрос.

mike: Это самый простой вариант, а если пользователей 20 человек, пока всем сообщишь о том что нужно перегрузить прогу, уже ошибки пойдут! Хотелось бы что-то типа такого: повесить например на какое нибудь прерывание флаг закрытия БД, т.е. на момент индексации все пользователи приостанавливаются и БД закрывается, пока пользователь вызвавший команду переиндексации не восстановит индексы, а затем все снова открывают БД и продолжают с текущего места. К сожалению я с прерываниями не работал, а вот может есть какой прибамбас, который в фоновом режиме мог опрашивать такую команду?

Dima: Попробуй держать такой флаг в спец базе , структуру сам придумай. И эту базу опрашивай через определенные промежутки времени. Корректно работающие функции в плане «опроса» есть в библиотеке Nanfor которая бесплатна. Взять ее можно где угодно ..........хотя что бы не искал долго вот к примеру ссылка. http://blinkinc.com/dl/misc/nfkit.zip Реально сам так не делал ......не было необходимости , так как большие сетевые задачи у меня висят под ADS , который в свою очередь не дает упасть индексам , чо проверено многолетней практикой ;)


lukash: mike И как ты определяешь, что индекс начал рушиться, интересно? У меня примерно 1/6 всех индексов (посменно) пересоздаются при запуске программы там, где лежат базы. При этом все юзвери знают, что в начале рабочего дня программа должна быть запущена на «сервере» (т.о. совершенно необязательно монопольное использование баз)

mike: Когда много пользователей всегда происходит какой то гемор, или ошибки программы, или ошибки при работе ОС, что нибудь зависает, поэтому при некорректно закрытой БД всегда возникают сомнения в целостности индексов, которые либо отражаются явно в виде сообщений CORRUPTION DETECT либо ты узнаешь об этом потом, когда нарушается целостность структуры записей. А индексы у меня то-же каждый раз при запуске переиндексируются однако как оказалось этого недостаточно.

mike: Спасибо за ссылочку, получилось все супер!

Dima: mike Ты не понял вопроса Андрея Лукашевского ;)!!!! Перевожу по простому. Как ты определяешь в программе что с базой не все нормально ? Я по своему проверяю........хотел бы услышать твой и увидеть твой вариант. Учиться ни когда не поздно (это я про себя ;))

lukash: mike При аварийном завершении у меня тоже пересоздаются все индексы, причём не REINDEXом, а с физическим удалением файлов NTX и созданием их снова. А об аварийном завершении сигнализирует запись в особом файлике, содержащем все даты/время начала сеанса работы и его завершения (точнее, отсутствие записи о завершении сеанса работы)

mike: Ну что мы толчем воду в ступе, проверяю как все, по некорректно закрытому приложению (quit файлу). Смотри вопрос в начале, задача именно в том и состоит что-бы пересоздать индексы не закрывая приложений пользователей! Однако я уже воспользовался функцией FT_ONTICK() из NF для организации такого алгоритма. А вот где можно добыть ADS?

Dima: mike Тебе под какую ОС нужен ADS и какая версия ?

mike: Что порекомендуешь, я хочу поэкспериментировать, у меня clipper5.3b+ct3+pm+ntx, user-win98, server-nov.nw5, т.к. БД не очень большая (20Мб), пока обхожусь без ADS, просто интересно насколько измениться производительность?

Dima: Под Сервер NW 5 у меня нет ничего. Для 3.12 есть ;) Есть 7.1 для Win9X (но я с ним не работал) да и на 9 юзеров он. Есть 7.1 для NT ,2000 и тд Есть 7.1 для Linux Для Novell реально работающий есть ADS 5.1

Dima: Да и NTX выкинь ........ну зачем тебе толстые и не поворотливые индексы ? ;) Clipper 5.3 - тогда уж CDX сам бог велел

mike: А CDX -быстрее работают? По поводу CDX я слышал мнение что они более критичны к нестабильности системы.

zawal: mike пишет: цитатаА CDX -быстрее работают? По поводу CDX я слышал мнение что они более критичны к нестабильности системы. Да, они немного медленнее!!! Но только при наличии большего кол-ва удаленных записей в таблице. А так одни только преимущества перед NTX. У меня база под ADS 70-75 таблиц общим объемом около 2-гиг. Технологически, переиндексация с упаковкой происходит раз в неделю и Вуаля. Кроме того в ADS есть мониторинг пользователей если мне надо всех выгнать то достаточно вызвать список пользователей подключенных к базе и Секир башка им



полная версия страницы