Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];

Вниз

Можно ли ускорить Delete   Найти похожие ветки 

 
Петрович   (2003-01-30 10:20) [0]

Так получается, что Delete в базе выполняется слишком долго. Если к Select"у можно применить Plan, который ускоряет работу, то к Delete нельзя. Причем деактивировать индексы к сожалению не получается в пределах одной транзакции ... или я не прав? То что тормозит Delete подгребаемые оптимизатором индексы однозначно ясно ... при этом он зараза цепляет почти все из-за чего естественно и жутчайшие тормоза.

Может кто-нибудь что-нибудь посоветует?


 
Reindeer Moss Eater   (2003-01-30 10:23) [1]

Убить индек, удалить нужные (в смысле ненужные более) записи, восстановить индексы


 
passm   (2003-01-30 10:33) [2]

Петрович © (30.01.03 10:20)> В данном деле индексы тоже часто полезны. Смотри условие WHERE а так же ссылки на данныю таблицу (добавление индекса на внешний ключ, возможно, поможет) и триггеры.


 
Петрович   (2003-01-30 10:35) [3]

Убью я индекс, а он же гад убъется не в контексте текущей транзакции. А кто-то в этот момент попробует использовать чего-нибудь, где у меня используется Select с Plan"ом, содержащим удаленный индекс ... и ничего у него не получиться!


 
Петрович   (2003-01-30 10:38) [4]

passm не совсем понял, что ты хотел сказать. :(

Проблема в основном та, что индексы, которые подгребает Delete являются ссылочными. т.е. которые по Reference создались.


 
passm   (2003-01-30 10:48) [5]

Петрович © (30.01.03 10:38)> Вижу, что понял :)
FireBird создает индексы при создании внешнего ключа?
Если да, то, IMHO, напрасно - не всегда полезно.


 
Петрович   (2003-01-30 10:54) [6]

passm © (30.01.03 10:48)>

Угу ... особенно если этот паразит, потом, вместо одного индекса гребет все доступные. ;o(

Прямо и не знаю что делать ... представляете, сформирует сводный заказ пользователь из 15тыс пришедших за 13минут (процедура формирования такая), смотрит пришло еще два заказа в довесок 15тысячам. Ладно думает, сейчас переформирую ... ан нет! Удаление сформированного заказа длится ... фиг его знает сколько, я не дождался! ;o( Вот и думаю ... как бы извратиться ... и ничего в голову не лезет.


 
passm   (2003-01-30 11:14) [7]

Петрович © (30.01.03 10:54)> Наращивать мускулы (железо; рэйд и пр.) :)


 
Петрович   (2003-01-30 11:43) [8]

passm © (30.01.03 11:14)>

Скорее меня прибьют чем мускулы нарастят!


 
Alexandr   (2003-01-30 11:51) [9]

а ты не удаляй, а помечай на удаление.
А удаляй потом, позже раз в неделю по-выходным...
Или вообще никогда.


 
Петрович   (2003-01-31 08:42) [10]

Alexandr © (30.01.03 11:51)>

Пришел к такому же выводу! Спасибо что поддержали! :)


 
Виталий Панасенко   (2003-01-31 08:56) [11]

Или использовать Yaffil. Там, кажись план можно указывать и для update/delete. Но весь прикол в том, что его (Дятла) ну никак немогу установить... Пробовал и снепшот, и инсталлятор. Снепшот по-своему дурью мается, а инсталлятор кричит, что у меня версия WinInst древняя, хотя затянул с указанной ссылки... А по параметрам Дятел вроди бы намного быстрее и "умнее" как ИБ так ФБ. Но ...


 
Дмитрий Ф.   (2003-01-31 09:00) [12]

FireBird 1.5 это же еще не отлаженный сервак, к тому же помниться разработчики грозились сделать форенкеи без индексов, хочеш что-то путное - лучше используй FireBird 1.02


 
Петрович   (2003-02-04 09:20) [13]

Это ж эксперементировать с переходом на "дятла" нужно. А работа-то не ждет! ;O(

И вообще, я думал, что на 1.5 сидел, но мне тут один из разработчиков FireBird мозни впраил. Хотя все равно не ускорилось нифига. Может Дмитрий и прав насчет снятия индексов с форинкей, ибо чуть-чуть даже замедлилось. Но замедлилось не настолько уж сильно.


 
Sergey13   (2003-02-04 09:59) [14]

2Петрович © (04.02.03 09:20)
Насчет FB не скажу, но может быть индексы на ФК работают там как в оракле. У оракула помнится при апдейте главной таблицы при наличии индекса на ФК блокируются только нужные записи в подчиненной таблице, а при отсутствии такового блокируется вся таблица. Может и в FB такая же схема. Так что отрубать индексы я бы поостерегся. Тем паче что не помогло это тебе.
А как ты удаляешь? По каскаду или явно ручками по всем таблицам? Может с этим поиграться?


 
Dmitry Filippov   (2003-02-04 10:06) [15]

Еще один совет
Попробуй добавить PK из одного поля
Проверь производительность удаления с помощью TIBTable
этот компонент для удаления использует RDB$DB_KEY, который в свою очередь является уникальным индексом в пределах БД



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2003.02.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.012 c
7-63888
Igor---
2002-12-18 22:10
2003.02.20
Удаление swp (Win386.swp)


14-63790
kingdom
2003-01-31 14:44
2003.02.20
Нужна


14-63732
Jaxtor
2003-01-31 12:04
2003.02.20
Реальность уехать заграницу


3-63532
Гость
2003-02-01 17:20
2003.02.20
Восстановление удалённых записей


1-63605
Humen
2003-02-09 13:09
2003.02.20
string -> array of char





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский