close

Вход

Забыли?

вход по аккаунту

?

AnswLr6

код для вставкиСкачать
Вопросы 1. Что такое представление. Для чего оно применяется.
Представления (VIEW) - это специализированный способ представления данных, содержащихся в одной или более таблиц, или в одном или нескольких представлениях. Результат запроса представляется в виде обычной таблицы.
Представление - виртуальная (логическая) таблица, представляющая собой поименованный запрос (алиас к запросу), который будет подставлен как подзапрос при использовании представления.
Используются для работы с данными (строками), полученными на основании заранее сформированного select-запроса.
В отличие от обычных таблиц реляционной БД, представление не является самостоятельной частью набора данных, хранящегося в базе. Содержимое представления динамически вычисляется на основании данных, находящихся в реальных таблицах. Изменение данных в реальной таблице БД немедленно отражается в содержимом всех представлений, построенных на основании этой таблицы.
2. Поясните назначение опции WITH READ_ONLY.
Задает ограничение на работу с представлениями, заключающееся в невозможности изменения данных через представление, и позволяющее работать с данными, возвращаемыми им, только в режиме чтения.
3. Поясните назначение опции WITH CHECK OPTION.
Данное ограничение позволяет гарантировать, что данные таблицы, на которую опирается представление, не будут изменены таким образом, что они перестанут удовлетворять изначальному условию формированию представления (не позволяет вставлять и обновлять строки через представление, если эти новые строки не удовлетворяют условию, заданному в select-запросе, используемом для формирования этого представления). 4. Что такое материализованное представление? Чем оно отличается от просто представления? В каких случаях применяется.
Материализо́ванное представле́ние - физический объект базы данных, содержащий результат выполнения запроса.
Материализованные представления позволяют многократно ускорить выполнение запросов, обращающихся к большому количеству (сотням тысяч или миллионам) записей, позволяя за секунды (и даже доли секунд) выполнять запросы к терабайтам данных. Это достигается за счет прозрачного использования заранее вычисленных итоговых данных и результатов соединений таблиц. Предварительно вычисленные итоговые данные обычно имеют очень небольшой объем по сравнению с исходными данными.
Целостность данных в материализованных представлениях поддерживается за счёт периодических синхронизаций или с использованием триггеров. Отличие мат. представлений от обычных заключается в том, что запрос, содержащийся в мат. представлении выполняется не каждый раз в момент обращения к представлению, как в обычных представлениях, а либо при определенном событии базы данных (обновление таблиц, используемых в представлении) при помощи триггеров, либо циклически через заданный период времени. Это позволяет эффективней использовать производительность БД и избегать излишних нагрузок при обращении к таким данным. Применять мат. представление рекомендуется для работы с сложными запросами, требующими значительных вычислений. При этом необходимо учитывать, что данные мат. представления могут иметь различную степень актуальности, в зависимости от настроек обновления представления.
Дополнительные вопросы 5. Объясните смысл следующих инструкций физических атрибутов: INITRANS, MAXTRANS, PCTFREE, PCTUSED. Параметры INITRANS and MAXTRANS
Каждый блок данных объекта включает заголовок. Часть этого заголовка - таблица транзакций. В таблицу транзакций вносятся записи о том, какие строки/элементы блока заблокированы какими транзакциями. Первоначальный размер таблицы транзакций определяется параметром INITRANS объекта. Для таблиц стандартное значение - 1 (для
индексов - 2). При необходимости таблица транзакций может динамически расти вплоть до MAXTRANS записей (естественно, при наличии достаточного свободного простран ства в блоке). Каждая запись транзакции занимает 23 байта в заголовке блока.
Параметры PCTFREE и PCTUSED
Эти два параметра управляют добавлением и удалением блоков из списков свободных мест. При задании для таблицы (но не для таблицы, организованной по индексу, как будет показано далее) параметр PCTFREE сообщает серверу Oracle, сколько места должно быть зарезервировано в блоке для будущих изменений. Стандартное значение - 10 процентов. Предположим, используются блоки размером 8 Кбайт. Когда при добавлении новой строки в блок свободного места в блоке останется меньше 800 байт, сервер Oracle будет использовать новый блок вместо существующего. Эти 10 процентов пространства данных в блоке оставляются для изменений строк блока. Если строку придется изменять, в блоке будет место для размещения измененной строки.
Итак, если параметр PCTFREE определяет, когда сервер Oracle убирает блок из списка свободных мест, чтобы в него больше не вставлялись строки, то параметр PCTUSED определяет, когда сервер Oracle снова вернет блок в список свободных мест. Если параметр PCTUSED установлен равным 40 процентам (стандартное значение) и в блоке достигнут уровень заполнения PCTFREE (блок уже не находится в списке свободных мест), то сервер Oracle вернет его в список, только когда в блоке станет свободным 61 процент пространства. При использовании стандартных значений параметров PCTFREE (10) и PCTUSED (40) блок будет оставаться в списке свободных мест, пока не заполнится на 90 процентов (в нем останется 10 процентов свободного пространства). Как только он заполнится на 90 процентов, то будет удален из списка свободных мест и не попадет в него, пока свободное пространство не составит 60 процентов блока. 6. Объясните смысл инструкций хранения: INITIAL, NEXT, MINEXTENTS, MAXEXTENT, PCTINCREASE, FREELISTS, BUFFER_POOL.
Параметры INITIAL, NEXT и PCTINCREASE
Эти параметры хранения определяют размер начального (INITIAL) и последующих экстентов, выделяемых таблице, а также процент увеличения для следующих экстентов.
Например, если используется начальный экстент размером 1 Мбайт, следующий - размером 2 Мбайта, а параметр PCTINCREASE имеет значение 50, в таблице будут следующие экстенты:
1. 1 Мбайт.
2. 2 Мбайт.
3. 3 Мбайт (150 процентов от 2).
4. 4,5 Мбайт (150 процентов от 3).
и т.д. Я считаю эти параметры устаревшими. В базе данных необходимо использовать только локально управляемые табличные пространства с одинаковыми экстентами. При этом размер первого экстента всегда совпадает с размером следующего, а параметр
PCTINCREASE вообще не имеет смысла, - он лишь вызывает фрагментацию табличного пространства.
Если локально управляемые табличные пространства не используются, я рекомендую всегда устанавливать INITIAL = NEXT и PCTINCREASE = 0. Это позволяет эмулировать процесс выделения пространства, происходящий в локально управляемых табличных пространствах. Для всех объектов в табличном пространстве должна использоваться одинаковая стратегия выделения экстентов во избежание фрагментации.
Параметры MINEXTENTS и MAXEXTENTS
Эти параметры управляют количеством экстентов, которые могут быть выделены объекту. Значение MINEXTENTS указывает серверу Oracle, сколько экстентов выделять таблице первоначально. Например, в локально управляемом табличном про-
странстве с одинаковыми экстентами размером 1 Мбайт при установке параметру MINEXTENTS значения 10 таблице будет выделено 10 Мбайт дискового пространства.
Параметр MAXEXTENTS задает верхний предел для количества экстентов, которые могут быть выделены объекту. Если в том же табличном пространстве задать параметру MAXEXTENTS значение 255, таблица сможет иметь размер не более 255 Мбайт. Конечно, если в табличном пространстве не хватит места для обеспечения такого роста, выделить соответствующие экстенты таблице тоже не удастся.
В списке свободных мест (FREELIST) сервер Oracle отслеживает блоки объекта до отметки максимального уровня, в которых есть свободное пространство. С каждым объектом будет связан хотя бы один список свободных мест, и по мере использования блоков они будут при необходимости добавляться или удаляться из этого списка. Важно отметить, что в списке свободных мест будут только блоки, находящиеся до отметки максимального уровня. Блоки за отметкой максимального уровня будут использоваться, только когда списки свободных мест пусты, - в этот момент сервер Oracle переносит отметку максимального уровня дальше и добавляет соответствующие блоки в список свободных мест. Таким образом, сервер Oracle откладывает увеличение отметки максимального уровня для объекта, пока это не станет действительно необходимым.
У объекта может быть несколько списков свободных мест. Если предполагается выполнение значительного количества операций INSERT или UPDATE для объекта множеством одновременно работающих пользователей, создание нескольких списков свободных мест может существенно повысить производительность (за счет возможного использования дополнительной памяти). Как будет показано далее, наличие достаточного количества списков свободных мест принципиально важно.
В среде с множеством одновременных вставок или изменений данных списки свободных мест могут как снижать так и повышать производительность.
FREELISTS - количество спсиков свободного места объекта.
BUFFER_POOL - явное указание, какой необходимо использовать пул буферного КЭШа (default, keep, recycle).
7. В каких SQL-операторах применяются инструкции физических атрибутов и инструкции хранения.
CREATE
ALTER
8. Поясните назначение, принцип применения и распределения памяти в буферных пулах DEFAULT, KEEP, RECYCLE области SGA.
Буферный кэш базы данных состоит из буферов памяти, которые Oracle использует для хранения данных, прочитанных серверным процессом из файлов данных на диске в ответ на запросы пользователей. Использование нескольких пулов буферных кэшей базы данных
Обычно простого буферного кэша по умолчанию достаточно для обслуживания памяти экземпляра. Назначение одного и того же буферного кэша всем объектам базы данных может быть иногда не слишком эффективным, потому что разные объекты и различные типы данных могут иметь разные требования к длительности их пребывания в кэше данных. Например, к таблице А могут выполняться сотни тысяч обращений в день, в то время как к таблице В - только два обращения в день. Ясно, что имеет смысл оставить таблицу А в буферном кэше на весь день, чтобы повысить скорость обращений, а таблицу В удалять оттуда каждый раз после использования, чтобы сэкономить место в кэше. Oracle обеспечивает гибкость в использовании буферного кэша, позволяя конфигурировать буферный кэш базы данных в множество буферных пулов. Буферные пулы в этот контексте - это просто части общего буферного кэша, отвечающие данным критериям удержания объектов базы данных данных вроде таблиц. Например, вы можете взять общий буферный кэш размером в 500 Мбайт и разделить его на три пула - два по 200 Мбайт и один в 100 Мбайт. Как только вы создадите данные буферные пулы, то сможете назначать им таблицы при создании для исключительного использования. Вы можете также применят команду ALTER TABLE или ALTER INDEX для модификации типа буферного пула, который должна использовать таблица или индекс. Обратите внимание, что любым объектам базы данных, которым вы не назначаете определенный постоянный (keep) или повторно используемый (recycle) буферный пул, будут назначены в буферный пул по умолчанию, размер которого определен в соответствие со значением, указанным в параметре инициализации DB_CACHE_SIZE. Постоянный или повторно используемый буферные пулы необязательны, в то время как буферный пул по умолчанию - обязателен. Помните, что главной целью назначения объектов в разные буферные пулы является минимизация "промахов" при обращении к кэшу данных и как следствие - минимизация операций дискового ввода-вывода. Фактически все стратегии буферного кэширования нацелены на это. Если вы не знаете, какие объекты в вашей базе данных к каким типам буферных кэшей отнести, запросите эту информацию из представления V$DB_CACHE_ADVICE, чтобы получить совет у Oracle. Основные типы буферных пулов. Буферный пулИнициализационный параметрОписаниеПостоянный буферный пул (keep buffer pool)DB_KEEP_CACHE_SIZEПостоянно хранит блоки данных в памяти. У вас могут быть маленькие таблицы, к которым выполняются частые обращения и для предотвращения их удаления из буферного кэша им можно назначить постоянный буферный пул при создании таблицы.Повторно используемый буферный пул (recycle buffer pool)DB_RECYCLE_CACHE_SIZEУдаляет данные из кэша немедленно после использования. Этот буферный пул следует применять осторожно, если вы вообще решите использовать его. Повторно используемый буферный пул удаляет объект из кэша сразу по завершении транзакции. Очевидно, что его следует применять только для крупных таблиц, обращение к которым осуществляется нечасто, и которые не нужно хранить к кэше неопределенно долго.Буферный пул по умолчанию (default buffer pool)DB_CACHE_SIZEСодержит все данные и объекты, которые не назначены в постоянный и повторно используемый буферные пулы. 9. Каким образом можно узнать размер этих буферов?
select * from v$parameter where name like '%cache%'
или просмотрев pfile:
CREATE PFILE='C:\Oracle\product\11.2.0\dbhome_1\database\PFILE.ORA' FROM SPFILE='C:\Oracle\product\11.2.0\dbhome_1\database\SPFILEORCL.ORA';
10. Каким образом можно установить размер этих буферов? ALTER SYSTEM set db_keep_cache_size = 500000000 SCOPE = MEMORY;
Или путем редактирования соответствующих значений в pfile. 11. Чем отличается применение параметра cache при создании таблицы (CREATE TABLE) от применения BUFFER_POOL KEEP.
Use the CACHE clauses to indicate how Oracle Database should store blocks in the buffer cache. If you specify neither CACHE nor NOCACHE, then:
In a CREATE TABLE statement, NOCACHE is the default
In an ALTER TABLE statement, the existing value is not changed.
CACHE
For data that is accessed frequently, this clause indicates that the blocks retrieved for this table are placed at the most recently used end of the least recently used (LRU) list in the buffer cache when a full table scan is performed. This attribute is useful for small lookup tables.
As a parameter in the LOB_storage_clause, CACHE specifies that the database places LOB data values in the buffer cache for faster access.
Restriction on CACHE
You cannot specify CACHE for an index-organized table. However, index-organized tables implicitly provide CACHE behavior.
NOCACHE
For data that is not accessed frequently, this clause indicates that the blocks retrieved for this table are placed at the least recently used end of the LRU list in the buffer cache when a full table scan is performed. NOCACHE is the default for LOB storage.
As a parameter in the LOB_storage_clause, NOCACHE specifies that the LOB value either is not brought into the buffer cache or is brought into the buffer cache and placed at the least recently used end of the LRU list. The latter is the default behavior.
Restriction on NOCACHE
You cannot specify NOCACHE for an index-organized table.
Фраза nocache указывает, что Oracle не должна делать эти блоки постоянными в буферном кэше, если в результате команды select таблица просматривается полностью. В нашем примере select * from employee привела бы к тому, что Oracle загрузила бы блоки в буферный кэш так, чтобы они не слишком долго, находились там. Если бы потребовалось сохранить таблицу в буферном кэше при введенной команде select * from employee, вместо этого следовало определить ключевое слово cache. Значением по умолчанию является nocache, дающее указание помещать найденные для этой таблицы блоки в конец списка LRU (с наиболее давним использованием) в буферном кэше, когда таблицы просматриваются полностью.
Документ
Категория
Рефераты
Просмотров
51
Размер файла
32 Кб
Теги
answlr
1/--страниц
Пожаловаться на содержимое документа