Крик души...

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

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

Ответить
Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Крик души...

Сообщение Kotъ-Begemotъ » 09 дек 2007, 23:29

Попросили тут знакомые люди помочь. Суть вопроса - есть некая программа, работающая с Firebird и что-то работает как-то в последнее время некорректно (называют конкретно в чём некорректность). Хотя до этого более трёх лет работала программа нормально. Врядли можно погрешить на саму прогу. Скорее с БД что-то не так. Ну, ладно, передали мне флешку с БД и сетапом проги (на всякий случай). Смотрю. Действительно БД создана в FB 1.5 Открываю базу в IB Expert и что вижу? Набор таблиц. Правда еще PK имеются... И больше... НИ-ЧЕ-ГО! Ни генераторов, ни триггеров, ни UDF-функций... Полная пустота... Я уже начинаю потихоньку прифигевать, но запускаю IB Analyser... "Жевал" он получение статистики минут 15... Прожевал... Размер страницы 1024. Forced Write OFF. Индексы на 4-9 страниц! В общем полный караул. Причём дилема - увеличить размер страницы? Так там есть две таблицы с фрагментированными BLOB, и увеличение приведёт к еще бОльшей фрагментации :( Всё-таки решил увеличить страницу до 4096 и включить FW. Бэкап-рестор, все дела... Из интереса поставил саму прогу, и попробовал работать со старой базой, и с "новой" - после вышеизложенных операций. На глаз скорость работы различается на порядок практически. Где в старой БД приходилось ждать 10 сек. для открытия списка документов, в "новой" это занимает ~1 секунду.
Может быть можно оправдать такую "структуру" БД тем, что программа вроде бы может работать и с Paradox и с FB? Но, господа!!! Эта программа стоит... около 10000 евро!!! Я понимаю, что БД это еще не вся программа, что там своя логика (и довольно сложная), но всё же, мне кажется это немного не правильным... Кстати, все юзеры (прога сетевая) работают под SYSDBA, с дополнительным указанием уже "своего эккаунта" (для контроля создателя документа видимо). Kак люди без генераторов получают уникальные значения для PK - для меня загадка, особенно в сетевом режиме. Нет, финты конечно придумать можно, но ЗАЧЕМ?!? А индекс в одной таблице меня вообще убил - составной индекс по... ВСЕМ полям. Для пущей уникальности, так сказать... Зачем суррогатные ключи делать? Проиндексировал по связке всех полей, и спи спокойно...
Вот так... И работает! В своей области это фактически единственная программа, по крайней мере одна из самых распространённых. Называть не буду, но может кто и узнает по описанию...

Может я дурак, что сижу, структурв данных выдумываю, какие-то суррогатные ключи, какие-то FK и прочая, прочая... ? А тут люди вот так лабают...?

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Сообщение Dimitry Sibiryakov » 10 дек 2007, 08:06

Эх, кот-кот... Я смотрю, ты даже не слыхивал про http://worsethanfailure.com/
Ни цена программы, ни именитость фирмы-производителя ничего не гарантируют, ибо программисты (что здесь, что там) это обычные люди и особым профессионализмом отличаются не так уж часто.

ЗЫ: А программу все-таки назови. 10000 евро это многовато.

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Re: Крик души...

Сообщение stix-s » 10 дек 2007, 08:41

Kotъ-Begemotъ писал(а):
Может я дурак, что сижу, структурв данных выдумываю, какие-то суррогатные ключи, какие-то FK и прочая, прочая... ? А тут люди вот так лабают...?
Напиши свою :) продавай по 5000 евро, конкуренты удавятся :) (или удавят )

ArtDen
Сообщения: 53
Зарегистрирован: 25 ноя 2007, 10:54

Сообщение ArtDen » 10 дек 2007, 11:03

Kotъ-Begemotъ, а прогу русские разработчики писали?

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 10 дек 2007, 16:45

ArtDen писал(а):Kotъ-Begemotъ, а прогу русские разработчики писали?
Ну да, если бы китайцы, я бы и не парился... Я с одной софтинкой работал Huawei - база на Access... Вот тут я был в шоке. Видимо писалась прога за оплату в пару плошек риса, судя по тому как сделано :)))

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 10 дек 2007, 17:24

Dimitry Sibiryakov писал(а):Эх, кот-кот... Я смотрю, ты даже не слыхивал про http://worsethanfailure.com/
Нет, не слыхал, спасибо за ссылку, сижу читаю, ржу в голос! :)))

belov-evgenii
Сообщения: 52
Зарегистрирован: 28 сен 2007, 10:19

Сообщение belov-evgenii » 10 дек 2007, 21:00

У нас (судебных приставов) похожая проблема - ни одного внешнего ключа, 150 полей в таблицах. От запросов, написанных левой ногой, коробит. И админов, и сервер. На базе в полгига по 30 часов отчеты ждем. Позорят только FB своим поделием

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 11 дек 2007, 01:22

belov-evgenii писал(а):У нас (судебных приставов) похожая проблема - ни одного внешнего ключа, 150 полей в таблицах. От запросов, написанных левой ногой, коробит. И админов, и сервер. На базе в полгига по 30 часов отчеты ждем. Позорят только FB своим поделием
Ну, объективно FK это вовсе не всегда и хорошо, тут надо конкретную структуру смотреть... Полей да, что-то многовато. А если в этой же таблице еще и BLOB поля, вообще весело :((( А ведь бабло наверняка слито было хорошее на госзаказ?

belov-evgenii
Сообщения: 52
Зарегистрирован: 28 сен 2007, 10:19

Сообщение belov-evgenii » 11 дек 2007, 08:58

Поля называются FK и индексы по ним созданы, но ограничений внешнего ключа нету. Сам понимаешь, когда в нескольких тысячах отделов прога стоит, да несколько десятков тысяч пользуют, то деньги на это нужны совсем не маленькие

Ответить