Форум OlegON > Ресурсы OlegON > Вопросы сервера > Программы OlegON

Оптимайзер-4 (вопросы и обсуждения) : Программы OlegON

22.11.2024 9:59


14.12.2011 08:02
собственно, если есть какие-то другие предложения по алгоритму - с удовольствием обсужу.
14.12.2011 09:12
Тогда поговорим ...
"Если при этом он упадет из-за убитого индекса, то получим, что опт будет вечно ждать окончания расчета, а расчет - починки индекса."
Почему "вечно ждать" ?
Идёт сессия оптимайзера, он заметил, что идёт расчёт ТД и не трогает таблицы-индексы, которые в этом расчёте используются, с остальными делает все операции как положено. Если наступило МТ, то пускай работает не касаясь FF таблиц и индексов.

Если таблица или индекс поломались, ну и что. ТД вывалится с ошибкой и при следующем запуске оптимайзера он увидит, что нет расчёта ТД и будет работать в обычном режиме. В том числе полечит сбойные индексы FF, из-за которых ТД отвалился.

Утром админ смотрит что расчёт упал с такой то ошибкой, смотрит в логе что оптимайзер при след запуске полечил этот индекс и спокойно запускает расчёт ещё раз.

Т.е. предложение, не зависимо от МТ, если определёно, что запущен расчёт ТД - не трогать FF таблицы и индексы, считать что DontUseFFMAPREP=yes
14.12.2011 09:42
1. "Не трогает таблицы, участвующие в расчете" - не катит, я просто физически вспарюсь отслеживать кучу версий, включая новые. Сейчас он просто игнорит все.
2. "увидит, что нет расчета ТД" - в том и проблема, что не увидит. Гениальность решения С+ в том, что никаких признаков расчета ТД нет (я о них не знаю). Есть запись в журнале о том, что ТД начало считаться, и если оно падает, эта запись никуда не пропадает. Расчитывать на время тут нельзя, у многих оно считается сутками. Поэтому расчет простой, в МТ оптимизатор работает один и в это время расчета ТД нет. Суть МТ в том, что оптимизатор в это время работает один.
14.12.2011 09:51
А если перевернуть логику?
Проверять не начало расчета ТД, а его окончание?
Т.е. если есть запись об окончании расчета ТД - можно запускать оптимайзер в МТ.
Нет записи - в МТ не запускаем, выдаем сообщение админу "Не смогли запустить, потому как похоже считается ТД". Если это действительно так - админ поймет, не так - должен разобраться, почему не посчитался ТД.
14.12.2011 09:56
так она такая и есть, эта логика, проверка окончания... а при твоем предложении, если админ - лентяй или ТД его мало интересует, то получим интересную багу в виде того, что при изуродованном ТД оптимизатор не будет работать, пока админ не зачешется. сейчас оптимизатор и на нерасчитанное ТД ругается, только свои координаты для ругани в БД прописали менее 10%. Но я не очень понимаю цели, если так не хочется, можно МТ сузить до минуты в тот интервал, когда опт не запускается..
14.12.2011 10:05
Нормальному админу хочется и ТД посчитать и оптимайзер в МТ запустить.
При этом, он не знает, когда закончится расчет ТД и можно запускать оптимайзер в МТ. И действует по наитию, насколько я понимаю.

Кстати, а что будет, если сначала оптимайзер в МТ, а потом расчет ТД? Может же это и оптимайзер делать? И именно в таком порядке?
14.12.2011 10:55
у меня везде сначала как раз работает МТ, а потом считается ТД. Поскольку второе гораздо с меньшей вероятностью закончится вовремя. Оптимизатор не считает ТД, он только переносит. В МТ. Поэтому я совсем ненормальный, но сначала (с 23 по умолчанию) гоняю оптимизатора, останавливая кассовик с почтовиком, а под утро, когда уже и окончательно уверен, что все кассы слились, запускаю расчет ТД.
14.12.2011 10:57
А у МТ есть жесткие рамки? Он позже закончится не может?
Просто после перехода на 28.2 проблем с запуском ТД по расписанию тоже нет - запустить можно через минуту после окончания времени МТ.
14.12.2011 11:14
У МТ рамки жесткие, перед тем, как запустить оптимизацию очередной таблички, опт проверяет, в МТ он или нет. Однако, если попадется ооочень большая табличка, он может и припоздниться самим процессом. Тут я ничего не могу поделать. Считать размеры таблички разве что...
14.12.2011 11:39
Расклад простой МТ - каждую ночь с остановкой кассового, на неделе 3 раза вечером запуск ТД. Придётся переделать расписание что бы в такие ночи оптимайзер не запускался совсем. МТ, до ТД не вариант, т.к. у меня расчёт идёт 12 часов. мне его надо запускать как можно раньше.
Другого варианта не предвидится из переписки выше :)
Часовой пояс GMT +3, время: 09:59.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.