Промежуточный commit

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

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

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

Сообщение Dimitry Sibiryakov » 14 дек 2006, 15:20

Действительно, про хинты как-то не обнаруживается с первого раза. Наверное, это самоочевидно: можно заставить оптимизатор прекратить использовать индекс, введя в выражение что-нибудь, что не изменит его смысл, но обманет наивную птичку. типа "+0", "||''" или "OR 1=1".

Kyarginski
Сообщения: 36
Зарегистрирован: 12 дек 2006, 12:59

Сообщение Kyarginski » 14 дек 2006, 16:02

Спасибо.

Опишу ещё раз проблему, возможно не в индексах "счастье"?
  • - есть локальная БД;
    - 15 млн. записей;
    - нужно удалить записи по какому то полю (GROUP_FIELD), кроме последней по дате.
Индексов (осталось) только два: PK и индекс DESC по сочетанию (GROUP_FIELD, <дата>)

Удаление пытаюсь делать процедурой

Код: Выделить всё

create procedure DeleteAll_ExceptMaxDate 
as 
  declare variable aDate date; 
  declare variable aGROUP_FIELD varchar(18); 
begin 
  for select max(OPER_DATE), GROUP_FIELD 
    from MY_TABLE 
    group by GROUP_FIELD 
    into aDate, aGROUP_FIELD 
  do 
    delete from MY_TABLE 
      where GROUP_FIELD = :aGROUP_FIELD and OPER_DATE < :aDate; 
end;
Процедура работает > 12 часов без результатно!

Вопросов всего два:
  • кто виноват?
    что делать?

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

Сообщение Dimitry Sibiryakov » 14 дек 2006, 16:11

Запросов в процедуре всего два. Попробуй выполнить каждый по отдельности из IBExpert и помедитируй над планами.

Kyarginski
Сообщения: 36
Зарегистрирован: 12 дек 2006, 12:59

Сообщение Kyarginski » 14 дек 2006, 16:16

ОК. Спасибо.
Запросов в процедуре всего два. Попробуй выполнить каждый по отдельности из IBExpert и помедитируй над планами.
Обязательно так и сделаю!

Но, почему же так долго (> 12 часов) всё обрабатывается?
И не доходит до конца... Просто моего терпения , видимо, недостаточно...

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

Сообщение Dimitry Sibiryakov » 14 дек 2006, 16:19

Телепаты все в отпуске. Моего хрустального шара не хватает даже на то чтобы угадать какой процент записей должен удалиться в результате.

Kyarginski
Сообщения: 36
Зарегистрирован: 12 дек 2006, 12:59

Сообщение Kyarginski » 14 дек 2006, 16:26

Моего хрустального шара не хватает даже на то чтобы угадать какой процент записей должен удалиться в результате.
:D :D :D

Да... Мне это тоже интересно!

Kyarginski
Сообщения: 36
Зарегистрирован: 12 дек 2006, 12:59

Сообщение Kyarginski » 15 дек 2006, 10:03

УРА!
Свершилось!

Вроде бы удалились данные...

Видимо, проблема была всё-таки в FireWall'e... Или в чём то подобном...
Загрузился в Safe Mode и на ночь запустил процедуру удаления.

Процедура отработала!

Далее сделал backup, откуда узнал, что размер базы уменьшился вдвое (по записям). Похоже, что всё нормально.
Надо будет посмотреть на восстановленную после backup'a БД.

Кто нибудь прокомментирует?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 15 дек 2006, 10:08

Кто нибудь прокомментирует?
а что тут комментировать. гуано всякое не надо на сервер ставить...

Kyarginski
Сообщения: 36
Зарегистрирован: 12 дек 2006, 12:59

Сообщение Kyarginski » 15 дек 2006, 10:16

гуано всякое не надо на сервер ставить...
:)
Ну это понятно...

А по существу?

P.S. К тому же это не выделенный сервер, а ноутбук с локальной базой 8)

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

Сообщение Dimitry Sibiryakov » 15 дек 2006, 10:29

Лично я винил бы не FW (который, кстати, дает совсем другие симптомы), а антивирус.

Kyarginski
Сообщения: 36
Зарегистрирован: 12 дек 2006, 12:59

Сообщение Kyarginski » 15 дек 2006, 10:34

Лично я винил бы не FW (который, кстати, дает совсем другие симптомы), а антивирус.
Я , видимо, не совсем точно обрисовал ситуацию.
При покупке на ноуте стояло несколько предустановленных программ, в том числе и Norton Internet Security 2005.

Вот этот NIS 2005 как раз и включает в себя весь "джентельменский" набор по затруднению работы пользователя на конкретной машине! :-)

Совсем сносить его не хочется, всё таки совсем без защиты нельзя, но и отключать себя по нормальному он не даёт... :?
Да и жалко - лицензия всё-таки... :roll:

В результате - имеем то, что имеем!

Большое спасибо всем за помощь!!!

Ответить