Форум: "Потрепаться";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
ВнизПроблема с индексом - MDX формат Найти похожие ветки
← →
DmitryA (2001-12-15 16:54) [0]Используется BDE. Периодически (т. е. время от времени) по неизвестным причинам происходят логические нарушения в индексных файлах! После регенерации - все OK! Кому-нибудь известна причина? Как ее исправить? Или, если можно, дайте информацию о структуре MDX файла (2, 3 версии (DBF 3, 4 версий)). Долго мучаюсь, помогите пожалуйста!!!
← →
Dick Gonsales (2001-12-20 10:48) [1]Автоматическая регенерация индекса в dBase, Fox происходит не сразу после удаления изменения или вставки записи а несколько позже. То что у тебя происходит от этого. Типа одно второе третье изменение достаточно в короткий промежуток времени и запрос по изменениям и все приплыли. Особенно часто проявляется если индекс уникальный.
Можно сделать следующее
1. После каждой операции реиндексировать таблицы (по моему жуть)
2. В конце дня делать тоже самое (принципиально ни чего не меняет)
3. Переделать таблици под FOX и создать индексы cdx (проблема останется но встречаться станет заметно реже).
4. Если операции очень частые, перейти на Paradox (более разумно, если создать базы индексы один в один с теми же именами и.т.д. клиентское приложение может не заметить этот переход).
IMHO последнее лучше всего, но это как говорится зависит от кучи обстоятельств.
← →
DmitryA (2001-12-20 18:01) [2]Большое спасибо за отклик!!!
Чесно говоря не надеялся, что кто-нибудь обратит внимание...
Теперь по-сути: переползти на Paradox не удастся, т.к. очень много переписывать и переделывать придется база-то 150 файлов, с очень давней историей (объем - до 3GB), 15 PC в среднем по 2-3 программы используют ее.
Пробовал CDX - не подходит (по сравнению с MDX скорость падает раза в 3)!
Если бы было описание MDX (для 4-й версии DBF (для 3-й я уже нашел)) то можно было бы написать мониторинг нарушений в индексе...
← →
Dick Gonsales (2001-12-25 02:15) [3]Лично мне кажется что описания MDX и мониторинг индексов тебя не спасет, при таком количестве и объеме баз это все таки серверное решение. И лично мой опят говорит, что не так сложно перевести все dbf на сервер, сколько переписать клиентскую часть. Но затраты труда все таки оправдывают себя в дальнейшем.
>> Пробовал CDX - не подходит (по сравнению с MDX скорость падает раза в 3)! - Судя по всему программы у тебя игнорируют индекс.
А вообще интересно как ты собираешься мониторить индекс, сам принцип? А то я так поразмышлял и ничего человеческого не придумал, а любобытно...
← →
DmitryA (2001-12-27 20:27) [4]1. В том-то и дело, что перетаскивать все ПО на другую платформу - ни кто не даст столько времени, плюс таблицы перевязаны настолько, что не все другие платформы эти связи поддерживают корректно.
2. Файлы уже 2.5 года на сервере (сервер сети). Даже легкий сервер DBF есть (сервер базы данных) - устранение гонок, удаленное выполнение процедур, аутентификация клиентских приложений. Вот его-то (сервер базы данных) и хочется оснастить мониторингом (т.к. другого варианта за долгое время не смог придумать).
3. Не надо обижать меня насчет использования индексов: CDX - скомпрессированный вариант MDX - занимает меньше места, создается быстрее, поиск ничего, но вот скроллинг по такому индексу медленнее - ведь распаковывать надо-то (проведи эксперимент сам - я уже давно провел). Тем более переползаю на 4-ю версию DBF и 3-ю MDX (там возможности по-круче) - CDX рядом не стоит.
4. Принцип мониторинга - читаешь значение ключа, позиционируешь на данные этого ключа и вычисляешь ключ по данным, сравниваешь с ключем индекса (чесно говоря: было-бы окно где-то в недельку, я бы добил бы формат индекса и опробовал мониторинг). Затем оптимизировать
5. Просто не хотел рожать велосипед (думал кто-то наверное уже поборол, или хоть описание 3-го MDX подкинет - пока время от времени копаю сам)...
← →
dim- (2001-12-28 11:20) [5]Индексы сыпятся скорей всего из-за не коректного выхода из программы, можно сделать как в 1С, организовать счетчик заходов и выходов и если активных пользователей нет, а счетчик не равен 0 то переиндексировать таблицы.
← →
Alexandr (2001-12-28 11:33) [6]да ...
они в 1С молодцы.
Создать такую сложную базу, такие сложные программы использую бузу на dbf.
Видать немало они потрудились...
Там ведь все само переидексируется когда надо.
Пусть, конечно, все это очень тяжело при большом количестве пользователей, но работает и достаточно надежно. Да и машинки у пользователей нужны быстрые.
Вообще я поражаюсь 1С не могут они перевести все это на какой-нибудь бесплатный SQL сервер- MySQL,Firebird,PostgreSQL- было бы всем от этого хорошо...
← →
dim- (2001-12-28 15:10) [7]у 1С есть SQL решение, просто зачастую фирмы не имеют возможностей ставить такое решение
← →
panov (2001-12-28 15:27) [8]>dim- © (28.12.01 15:10)
"у 1С есть SQL решение, просто зачастую фирмы не имеют возможностей ставить такое решение"
В 1С просто были перетащены таблицы в SQL-сервер, а технология работы осталась та же.
← →
ValeraVV (2001-12-28 15:47) [9]Поддержу panov © (28.12.01 15:27), самое главное - выигрыша в скорости никакого. У нас на предприятии из-за этого пришлось SQL версию сдать и на те же деньги взять покруче конфигурацию DBF.
Это я к тому, что не меняя логики работы программы, просто перетащить таблицы на "надежный сервер", недостаточно.
Paradox, кстати, страдает тем же, индексы тоже часто приходиться восстанавливать.
Если уж переходить на SQL, то переходить основательно, а пока см. dim- © (28.12.01 11:20) и так до упора.
← →
dim- (2001-12-28 16:04) [10]Никто не идеален, даже 1С, но ээто уже другая история
← →
DmitryA (2001-12-28 16:50) [11]С мнением об 1С я руками и ногами согласен! НО! Ребята, ребята!.. Вы чего-то отклонились от темы. Вопрос-то по-прежнему открыт!
Счетчики это хорошо. Но, посмотрите начало темы: клиент-серверная архитектура плюс непосредственный по сети метод доступа к базе, 15 компьютеров, каждый использует в среднем 3-4 программы и все это на одну базу! Куда лепить счетчики-то?!
← →
ValeraVV (2001-12-28 18:37) [12]В сервер, естественно, или у тебя сервер периодически падает?
← →
ValeraVV (2001-12-28 18:38) [13]Если падает, то переиндексируй при загрузке.
← →
ValeraVV (2001-12-28 18:42) [14]А если не падает, то контролируй запросы на модификацию, чего-то типа транкзаций надо
← →
dim- (2001-12-29 09:15) [15]Можно на сервере, например по ночам, запускать задачу на переиндексирование таблиц, но это не панацея.
А на счет счетчика, если программы писал сам или есть доступ к исходникам, то можно организовать чтобы каждая программа при запуске сохраняла сведения о себе в таблицу и обновляла через какое то время, а при выходе ставила галочку, что она вышла.
Так же при запуске проверять на незакрытые записи и если они есть есть,но старые,а активных пользователей нет, значит был некоректный выход и можно перестраивать индекс.
а еще можно организовать через сокеты: на сервере запустить сервер сообщений, все к нему конектятся, а он уже контролирует вышел пользователь сам или отрубился и т.д.
← →
DmitryA (2001-12-29 19:40) [16]1. Сервер наш собственный. Пока за 2 года сервер завис 1 раз (по неопределенной причине).
2. С транзакциями согласен! Но как всетаки с индексами?
3. На сервере по ночам не получится: некоторые файлы содержат 2-3 миллиона записей, время полной реиндексации - часов 18.
4. Клиентские программы при некорректной операции выполняют корректное завершение и индексы тут не причем (тем более, что сервер знает какие программы подключены к нему).
← →
Wizard_Ex (2002-01-02 13:29) [17]Вопрос: А почему бы три-четыре программы не объединить
Есть в этом что-то.
У меня было три программы, все написаны в разное время.
Потом все это переросло в одну реальную.
В которой все ОК по сих пор
← →
DmitryA (2002-01-03 17:47) [18]Ну вот! Досоветовались!
Серьезную проблемму (воспринимать буквально!) переместили в рубрику "потрепаться!"
> Модератору: ЭТО НЕ ТРЕП! ЭТО СЕРЬЕЗНО!..
>Wizard_Ex: Программ всего около 30 (вы не пробовали объединять такое количество программ, каждая в среднем состоит из 40 модулей).
Я так понимаю никто ничего путнего сказать не может. Давайте снимем вопрос...
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2002.02.21;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c