Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Долгое выполнение select * from t  [new]
listapad
Member

Откуда: Первопрестольная
Сообщений: 41
Доброго дня!

Имеется
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE	11.2.0.3.0	Production
TNS for Linux: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

и табличка из 4ех полей, индекса для поддержания первичного ключа и обычно индекса по полю типа date с датой инсерта записи(триггер). Блобок, клобов, вложенныех таблицы, внешних ключей нет.

Вчера в таблице было 4М записей. Озвучено решение, что их хранение соверешнно излишне. Удалены записи более чем недельной давности. Сейчас в таблице 31к записей.
И сейчас любой зарос, в плане которого имеется полный просмотр таблицы или индекса работает крайне медленно, около 15 секунд

select * from t;

Plan
SELECT STATEMENT  ALL_ROWS Cost: 51.501  Bytes: 1.307.203  Cardinality: 31.883      
    1 TABLE ACCESS STORAGE FULL TABLE t Cost: 51.501  Bytes: 1.307.203  Cardinality: 31.883  

---

select count(1) from t;

Plan
SELECT STATEMENT  ALL_ROWSCost: 1.684  Cardinality: 1  		
	2 SORT AGGREGATE  Cardinality: 1  	
		1 INDEX STORAGE FAST FULL SCAN INDEX (UNIQUE) t Cost: 1.684  Cardinality: 31.883  


Пробовал собирать статистику по таблице

Заспросы с TABLE ACCESS BY INDEX работают чудесно.


Подскажите, с чем может быть связано такое поведение и как его лечить\не допускать в дальнейшем?
14 авг 13, 09:38    [14705939]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение select * from t  [new]
Gustly
Member

Откуда:
Сообщений: 1426
listapad,

HWM. Где-то недавно была чудесная тема по этому поводу. Простой вариант - Alter table shrink.
14 авг 13, 09:42    [14705952]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение select * from t  [new]
кецкцукцку
Guest
Gustly
listapad,

HWM. Где-то недавно была чудесная тема по этому поводу. Простой вариант - Alter table shrink.

Простой вариант - это ctas + truncate + insert back
А shrink это продвинутый вариант с отключением необходимых триггеров, пересозданием индексов и mv.
14 авг 13, 10:01    [14706036]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение select * from t  [new]
Gustly
Member

Откуда:
Сообщений: 1426
кецкцукцку,

Ну, по синтаксису shrink все таки очень простой вариант, проще чем мучения с транкейтом. А вот сложный вариант это пакет DBMS_REDEFINITION, даже не знаю что лучше. Но автору думаю shrink за глаза хватит, блокировок не будет, все онлайн и быстро, записей немного.
14 авг 13, 10:04    [14706060]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение select * from t  [new]
listapad
Member

Откуда: Первопрестольная
Сообщений: 41
Всем спасибо - суть ясна.
Варинат с ctas и транкейтом может потянуть ошибку у приложения, которое останавливать не желательно(при определенном везении оно может получить во время этих манипуляций NO_DATA_FOUND).
Насколько вычитал, shrink балокирует таблицу только один раз для переноса hwm и как опсисано крайне не надолго.
Это действительно с виду отптимальный вариант.
Только вот он работает уже 17 минут, но с учетом того, что таблица стала по сути на 4М строк меньше - это нормально?(выполняю shrink space cascade).
14 авг 13, 10:13    [14706108]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение select * from t  [new]
Gustly
Member

Откуда:
Сообщений: 1426
listapad,

В той теме про shrink также долго выполнялся. Просто ждите, лучше не отменять.
14 авг 13, 10:27    [14706188]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение select * from t  [new]
listapad
Member

Откуда: Первопрестольная
Сообщений: 41
пол часа на 4М строк с индексами.
Всем большое спасибо!
14 авг 13, 12:26    [14707064]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение select * from t  [new]
Gustly
Member

Откуда:
Сообщений: 1426
listapad,

После окончания статистику еще раз лучше пересоберите.
14 авг 13, 12:42    [14707174]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить