Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 04.03.05 14:32. Заголовок: INDEX CORRUPTION
Подскажите алгоритм, как в многопользовательской системе возможно организовать переиндексацию не завершая работу пользователей. Я вижу только один вариант - всем завершить работу открыть БД в режиме EXCLUSIVE затем переиндексировать. А если пользователей много и они находятся далеко друг от друга?
|
|
|
Ответов - 15
[только новые]
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 04.03.05 18:44. Заголовок: Re: INDEX CORRUPTION
mike Ты сам ответил на свой вопрос.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 04.03.05 20:06. Заголовок: Re: Dima
Это самый простой вариант, а если пользователей 20 человек, пока всем сообщишь о том что нужно перегрузить прогу, уже ошибки пойдут! Хотелось бы что-то типа такого: повесить например на какое нибудь прерывание флаг закрытия БД, т.е. на момент индексации все пользователи приостанавливаются и БД закрывается, пока пользователь вызвавший команду переиндексации не восстановит индексы, а затем все снова открывают БД и продолжают с текущего места. К сожалению я с прерываниями не работал, а вот может есть какой прибамбас, который в фоновом режиме мог опрашивать такую команду?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 04.03.05 20:16. Заголовок: Re: INDEX CORRUPTION
Попробуй держать такой флаг в спец базе , структуру сам придумай. И эту базу опрашивай через определенные промежутки времени. Корректно работающие функции в плане «опроса» есть в библиотеке Nanfor которая бесплатна. Взять ее можно где угодно ..........хотя что бы не искал долго вот к примеру ссылка. http://blinkinc.com/dl/misc/nfkit.zip Реально сам так не делал ......не было необходимости , так как большие сетевые задачи у меня висят под ADS , который в свою очередь не дает упасть индексам , чо проверено многолетней практикой ;)
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 05.03.05 00:44. Заголовок: Re: INDEX CORRUPTION
mike И как ты определяешь, что индекс начал рушиться, интересно? У меня примерно 1/6 всех индексов (посменно) пересоздаются при запуске программы там, где лежат базы. При этом все юзвери знают, что в начале рабочего дня программа должна быть запущена на «сервере» (т.о. совершенно необязательно монопольное использование баз)
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 05.03.05 01:14. Заголовок: Re: lukash
Когда много пользователей всегда происходит какой то гемор, или ошибки программы, или ошибки при работе ОС, что нибудь зависает, поэтому при некорректно закрытой БД всегда возникают сомнения в целостности индексов, которые либо отражаются явно в виде сообщений CORRUPTION DETECT либо ты узнаешь об этом потом, когда нарушается целостность структуры записей. А индексы у меня то-же каждый раз при запуске переиндексируются однако как оказалось этого недостаточно.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 07.03.05 01:18. Заголовок: Re: Dima
Спасибо за ссылочку, получилось все супер!
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 07.03.05 01:48. Заголовок: Re: INDEX CORRUPTION
mike Ты не понял вопроса Андрея Лукашевского ;)!!!! Перевожу по простому. Как ты определяешь в программе что с базой не все нормально ? Я по своему проверяю........хотел бы услышать твой и увидеть твой вариант. Учиться ни когда не поздно (это я про себя ;))
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 07.03.05 08:16. Заголовок: Re: mike
mike При аварийном завершении у меня тоже пересоздаются все индексы, причём не REINDEXом, а с физическим удалением файлов NTX и созданием их снова. А об аварийном завершении сигнализирует запись в особом файлике, содержащем все даты/время начала сеанса работы и его завершения (точнее, отсутствие записи о завершении сеанса работы)
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 08.03.05 03:25. Заголовок: Re: Dima
Ну что мы толчем воду в ступе, проверяю как все, по некорректно закрытому приложению (quit файлу). Смотри вопрос в начале, задача именно в том и состоит что-бы пересоздать индексы не закрывая приложений пользователей! Однако я уже воспользовался функцией FT_ONTICK() из NF для организации такого алгоритма. А вот где можно добыть ADS?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 08.03.05 03:49. Заголовок: Re: INDEX CORRUPTION
mike Тебе под какую ОС нужен ADS и какая версия ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 08.03.05 14:21. Заголовок: Re: Dima
Что порекомендуешь, я хочу поэкспериментировать, у меня clipper5.3b+ct3+pm+ntx, user-win98, server-nov.nw5, т.к. БД не очень большая (20Мб), пока обхожусь без ADS, просто интересно насколько измениться производительность?
|
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 08.03.05 14:40. Заголовок: Re: INDEX CORRUPTION
Под Сервер NW 5 у меня нет ничего. Для 3.12 есть ;) Есть 7.1 для Win9X (но я с ним не работал) да и на 9 юзеров он. Есть 7.1 для NT ,2000 и тд Есть 7.1 для Linux Для Novell реально работающий есть ADS 5.1
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 08.03.05 14:42. Заголовок: Re: INDEX CORRUPTION
Да и NTX выкинь ........ну зачем тебе толстые и не поворотливые индексы ? ;) Clipper 5.3 - тогда уж CDX сам бог велел
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 09.03.05 01:04. Заголовок: Re: Dima
А CDX -быстрее работают? По поводу CDX я слышал мнение что они более критичны к нестабильности системы.
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 09.03.05 14:40. Заголовок: Re: INDEX CORRUPTION
mike пишет: цитата А CDX -быстрее работают? По поводу CDX я слышал мнение что они более критичны к нестабильности системы.
Да, они немного медленнее!!! Но только при наличии большего кол-ва удаленных записей в таблице. А так одни только преимущества перед NTX. У меня база под ADS 70-75 таблиц общим объемом около 2-гиг. Технологически, переиндексация с упаковкой происходит раз в неделю и Вуаля. Кроме того в ADS есть мониторинг пользователей если мне надо всех выгнать то достаточно вызвать список пользователей подключенных к базе и Секир башка им
|
|
|
|