Oracle DB: Временные таблицы
Версия от 13:31, 31 января 2023; Admin (обсуждение | вклад)
Важные факты о временных таблицах
- В отличие от постоянных таблиц, временной таблице не выделяется сегмент данных во время создания таблицы, он выделяется при первом добавлении данных.
- Для временных таблиц запрещены операции DDL (кроме TRUNCATE), если есть хоть одна сессия связанная с данной таблицей
- При откате данные временных таблиц всегда теряются
- Временная таблица, зависящая от транзакции, одновременно допускает только одну транзакцию. При наличии нескольких автономных транзакций в пределах одной транзакции каждая автономная транзакция может использовать таблицу только после фиксации (commit) предыдущей транзакции.
- Каждая сессия может видеть и изменять только собственные данные временной таблицы
- не может быть партиционирована (particioned), кластеризована (clustered) или организована по индексу (index organized)
- нельзя связывать поля с вторичными ключами (foreing keys)
- нельзя создавать вложенные таблицы (nested table)
- (???) нельзя использовать в описании временных таблиц следующие команды :LOB_storage_clause: TABLESPACE, storage_clause, или logging_clause
- не поддерживается распаралеливание запросов
- не поддерживаются распределенные тарнзакции
Области видимости временных таблиц
- GLOBAL - постоянный объект базы данных, определение сохраняется на диске и видно всем сессиям, каждая сессия видит только свой набор данных.
- PRIVATE - временный объект базы данных, сохраняется в памяти и виден только в рамках создавшей его сессии.
Типы временных таблиц
- Transaction-specific (ON COMMIT DELETE ROWS) - данные таблицы хранятся до завершения транзакции
- Session-specific (ON COMMIT PRESERVE ROWS) - данные таблицы хранятся до завершения сессии
- cursor-duration - автоматически создаются базой данных для определенных типов запросов
Ссылки по теме: