ALTER PROCEDURE в FB 2.5

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

ALTER PROCEDURE в FB 2.5

Сообщение VerLeon » 06 ноя 2008, 10:55

Здравствуйте, уважаемые!

Переходим с IB на FB. Написана конвертилка базы - скриптами создается база и метаданные, данные перекачиваются запросами. Скрипты в общем-то стандартные, такие и IBExpert создает - начальный с заголовками процедур, таблицами и вьюшками, потом перекачка данных, потом завершающий - с индексами, телами процедур и тд. В создаваемой базе на время конвертации выключается forced writes, скрипты выполняются через ibescript.dll.
Тестируемая версия FB была 2.1.1.17910 (Win32, SuperServer) - все было прекрасно.
Но вот решил пощупать FB 2.5 (билд 2.5.0.20842, SuperServer) и возникла непонятная проблема. Все проходит так же, примерно с той же скоростью (субъективно - даже вроде побыстрее), кроме заполнения процедур телами в завершающем скрипте.
На 2.1 процедуры альтерились пачками по 20-30 за секунду и все наши процедуры (около 1600) альтерились около минуты.
На 2.5 - на каждую процедуру тратится от 1 до 20 секунд, причем зависимость от объема кода процедуры или от количества зависимостей по-моему не наблюдается или она не очевидна. В общем ждал 40 минут и так и не дождался. Проц при этом грузится на 100%, проц не ахти, тестировалось все на средненькой рабочей станции (P4 2,4 Ггц), но для 2.1 этого вполне хватало.

Хотелось бы понять, с чем это связано, можно ли это как-то изменить (настройками сервера или еще как) и стоит ли ожидать улучшения ситуации в финальных релизах FB 2.5?

ЗЫ Пробовал более ранний билд - 2.5.0.20343, пробовал SuperClassic вместо SuperServer - ситуация абсолютно такая же

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: ALTER PROCEDURE в FB 2.5

Сообщение hvlad » 06 ноя 2008, 11:04

Тест кейс нужен

VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

Re: ALTER PROCEDURE в FB 2.5

Сообщение VerLeon » 07 ноя 2008, 10:55

Сделать простой и компактный тест кейс довольно проблематично, так как в простеньких тестовых базах такого не наблюдается.
Могу поделиться результатами дополнительных экспериментов:
1. Эксперимент был упрощен - никаких перекачек данных, никаких своих утилит - тупо два скрипта с метаданными (можно было и одним, но лень было переделывать), выполняются в IBExpert'е. Результат тот же.

2. Убрал из скрипта создание триггеров (коих у нас много и некоторые очень тяжелые) - скорость альтера процедур возросла в разы, но все равно не дотягивает до скорости FB 2.1. Отсюда рискну предположить, что скорость альтера конкретной процедуры зависит-таки от количества зависимостей, просто триггеры я в первый раз не учел. И еще одно предположение - признаюсь честно, я плохо себе представляю, как компиляются процедуры в BLR, но ведь все связанные с ними объекты при этом не должны перекомпилироваться? Ну по крайней мере не должны те, от которых зависит эта компилируемая процедура, а не те, которые от нее зависят? А тут такое ощущение, что именно это и происходит. Потому что кроме всего прочего есть еще одна странность - компиляция процедуры, которая делает выборку из 6 таблиц (только выборку, ничего не апдейтит) с триггерами занимала 6 секунд. Триггеры на таблицы, откуда она выбирает, тяжелые - там куча вызовов других процедур, которые дергают кучу других таблиц, а на них свои триггеры и т.д.
Так вот без триггеров она заальтерилась меньше, чем за секунду - все равно медленнее, чем под FB 2.1, но она помимо таблиц еще одну процедуру дергает (та тоже только селекты делает). Вообще-то не понятно, как наличие триггеров может повлиять на компиляцию процедуры, которая ничего не апдейтит, но это факт.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: ALTER PROCEDURE в FB 2.5

Сообщение hvlad » 07 ноя 2008, 11:11

VerLeon писал(а):Сделать простой и компактный тест кейс довольно проблематично, так как в простеньких тестовых базах такого не наблюдается.
Могу поделиться результатами дополнительных экспериментов:
1. Эксперимент был упрощен - никаких перекачек данных, никаких своих утилит - тупо два скрипта с метаданными (можно было и одним, но лень было переделывать), выполняются в IBExpert'е. Результат тот же.
Можно вот эти скрипты ?

VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

Re: ALTER PROCEDURE в FB 2.5

Сообщение VerLeon » 07 ноя 2008, 11:39

Можно. Но скрипты + 2 наши библиотеки UDF в архиве - 1.2 метра.
Если скажете свое мыло (в личку) - вышлю

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: ALTER PROCEDURE в FB 2.5

Сообщение hvlad » 07 ноя 2008, 14:04

Только что попробовал скрипт с 800 процедур, 500 триггеров и т.п. на 2.1.2 и 2.5 - одинаковые 32 сек.
Так что шли на hvlad at users sourceforge net
Только расширение архиву поменяй, иначе sourceforge не пропустит

PS тут вроде принято по-простому, на ты :)

VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

Re: ALTER PROCEDURE в FB 2.5

Сообщение VerLeon » 07 ноя 2008, 14:21

Хм.. ну может у меня руки кривые.. В смысле как-то криво ставлю FB 2.5
Наши метаданные выслал.

ЗЫ Да я так, на всякий случай, люди разные бывают, обижаются иногда :)

VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

Re: ALTER PROCEDURE в FB 2.5

Сообщение VerLeon » 11 ноя 2008, 08:38

Все-таки вряд ли дело в кривых руках. Попробовал на трех разных машинах, с разным железом, разным софтом установленным, с разными ОС (правда все - Win32). Общего у них только то, что везде стоял раньше FB 2.1 и IB 7.5. Все везде одинаково, т.е. не хорошо.
Экспериментировал под FB 2.5.0.20343.

Влад, есть надежда что проблема была в этом билде и исчезла на 2.5.0.21269 ?
И (если это не военная тайна), когда планируется новый билд собрать и выложить в snapshots?
Я бы на нем проверил, а собрать его самому из исходников несколько проблематично (дельфятники мы)...

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: ALTER PROCEDURE в FB 2.5

Сообщение hvlad » 11 ноя 2008, 10:55

VerLeon писал(а):Все-таки вряд ли дело в кривых руках. Попробовал на трех разных машинах, с разным железом, разным софтом установленным, с разными ОС (правда все - Win32). Общего у них только то, что везде стоял раньше FB 2.1 и IB 7.5. Все везде одинаково, т.е. не хорошо.
Экспериментировал под FB 2.5.0.20343.

Влад, есть надежда что проблема была в этом билде и исчезла на 2.5.0.21269 ?
И (если это не военная тайна), когда планируется новый билд собрать и выложить в snapshots?
Я бы на нем проверил, а собрать его самому из исходников несколько проблематично (дельфятники мы)...
Всё может быть, я не помню что там после альфы правили :)
Мой основной компьютер сейчас не живой, как починится - соберу тебе свежий билд и вышлю.
Надеюсь через день-два

VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

Re: ALTER PROCEDURE в FB 2.5

Сообщение VerLeon » 11 ноя 2008, 11:00

Спасибо, будем подождать :)

VerLeon
Сообщения: 44
Зарегистрирован: 24 ноя 2007, 08:43

Re: ALTER PROCEDURE в FB 2.5

Сообщение VerLeon » 18 ноя 2008, 08:59

Только что проверил на свежем билде от РЕАКТОРа (2.5.0.21381-0_Win32, неофициальный snapshop) - проблемы больше нет, все шустренько :)

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: ALTER PROCEDURE в FB 2.5

Сообщение hvlad » 18 ноя 2008, 11:15

VerLeon писал(а):Только что проверил на свежем билде от РЕАКТОРа (2.5.0.21381-0_Win32, неофициальный snapshop) - проблемы больше нет, все шустренько :)
Вот и хорошо, а то я уже хотел слать тебе свежий билд :)

Ответить