Часто изменяемая таблица, организованная по индексу

Flukky
Дата: 12.06.2006 15:30:29
Доброго времени суток!

Есть таблица, в которой хранятся параметры сессий Апликации:
SESSION_ID, SESSION_PARAM_NAME, SESSION_PARAM_VALUE. Каждой сессии отвечает примерно 30 параметров. Поле SESSION_PARAM_VALUE подлежит постоянным изменениям. После того, как пользователь закончил работу с Апликацией, параметры его сессии удаляются (delete).

Вопрос такой. Что было бы целесообразнее в этом случае: иднекс по SESSION_ID и SESSION_PARAM_NAME или таблица, организованная по индексу?

Если таблица очень интенсивно подвергается UPDATE и DELETE (а также большому числу SELECT'ов), что будет со статистикой?

create table test_iot(
     session_id           number(20) not null
    ,session_param_name   varchar2(50) not null
    ,session_param_value  varchar2(50)
    ,primary key (session_id,session_param_name)
) monitoring;
Думаю, что статистику в этом случае можно собирать с помощью job'ов и dbms_stats.

Может быть есть другие предложения, кроме пепестройки системы контроля сессий в Апликации?

Спасибо!
andrey_anonymous
Дата: 12.06.2006 15:34:58
Я бы вообще подумал о третьем варианте -
global temporary table on commit preserve rows
Flukky
Дата: 12.06.2006 15:48:14
andrey_anonymous
Я бы вообще подумал о третьем варианте -
global temporary table on commit preserve rows


Тоесть сессии хранить в таблице сессий, а параметры сессий во временной таблице. Для каждой сессии своя временная таблица?
AndrewS
Дата: 12.06.2006 15:54:47
временная таблица одна на всех. Но данные в ней - доступны только для текущей сессии
Flukky
Дата: 12.06.2006 16:01:45
AndrewS
Но данные в ней - доступны только для текущей сессии

Следовательно Web сервер не должен работать через connection pooling.
Flukky
Дата: 12.06.2006 16:35:24
Почитал документацию - действительно хороший вариант.
Получается, что для 30 записей нет смысла даже делаит индексы.

Статистику для такой таблицы нужно будет собирать?
AndrewS
Дата: 12.06.2006 16:36:51
можно собирать, если нужно
Flukky
Дата: 12.06.2006 16:45:58
Создать запрос ко временной таблице для данных из нескольких сеансов (пока они активны) невозможно, так?
andrey_anonymous
Дата: 12.06.2006 16:57:25
Flukky
Создать запрос ко временной таблице для данных из нескольких сеансов (пока они активны) невозможно, так?

Ну если не считать некоторых извратов, то невозможно.
А зачем? Это же параметры приложения - вот путь приложение параметры, важные для статистики/мониторинга, время от времени рапортует монитору/коллекционеру :)
grexhide
Дата: 12.06.2006 17:00:14
Flukky
Создать запрос ко временной таблице для данных из нескольких сеансов (пока они активны) невозможно, так?


Именно так.

--
Для небольших таблиц - статистику собирать, как правило, тоже нужно, иначе - будет использоваться статистика по умолчанию, в зависимости от значения параметра OPTIMIZER_DYNAMIC_SAMPLING, который также влияет на предположения оптимизатора касательно временных таблиц в запросе (для которых собрать статистику, как правило, нельзя).