Oracle DBA Forum  

Вернуться   Oracle DBA Forum > Oracle University Official Study Notes (RUS) > База данных Oracle 10g Администрирование > База данных Oracle 10g Администрирование I

Ответ
 
Опции темы Опции просмотра
  #21  
Старый 24.09.2009, 13:18
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Индекс В-дерева



Индекс В-дерева

Структура индекса в виде В-дерева

Верхняя часть индекса в виде В-дерева представляет собой корневой блок, который содержит элементы индекса, указывающие на следующий уровень индекса. На следующем уровне находятся промежуточные блоки индекса, в свою очередь указывающие на блоки следующего уровня индекса. На последнем уровне находятся листовые блоки, содержащие элементы индекса, которые указывают на строки таблицы. Листовые блоки связаны попарно для облегчения сканирования индекса как в возрастающем, так и в убывающем порядке значений ключа.


Формат листовых элементов индекса

В элемент индекса входят следующие компоненты:

заголовок элемента индекса, в котором содержится число столбцов и информация о блокировках;
пары "длина-значение" ключевых столбцов, которые определяют размер и значение ключевого столбца (число таких пар - это максимальное число столбцов в индексе);
ROWID строки, содержащей ключевые значения.


Характеристики листовых элементов индекса

В индексе в виде В-дерева несекционированной таблицы:

ключевые значения повторяются, когда существует несколько строк, имеющих одинаковое ключевое значение и если такой индекс несжатый;
не существует индексных элементов, соответствующих строке, в которой все ключевые столбцы неопределенные (содержат значение NULL); поэтому задание в предложении WHERE условия, проверяющего на неопределенное значение (IS NULL), всегда приводит к полному просмотру таблицы;
для указания на строки таблицы используется ограниченный ROWID, поскольку все строки принадлежат одному и тому же сегменту.


Воздействие на индекс операций DML

Сервер Oracle поддерживает все индексы при выполнении над таблицей операций DML. Команды DML воздействуют на индекс следующим образом:

Операции вставки приводят к вставке элемента индекса в соответствующий блок.
Удаление строки приводит только к логическому удалению элемента индекса. Пространство, занимаемое удаленной строкой, не будет доступно для новых записей до тех пор, пока не будут удалены все записи в блоке.
Обновления ключевых столбцов приводят к логическому удалению и вставке индекса. Установка PCTFREE воздействует на индекс только во время создания. Можно вставить новую запись в индексный блок даже в том случае, когда свободного пространства в нем меньше, чем определено в параметре PCTFREE.
__________________
Телеграм чат
Ответить с цитированием
  #22  
Старый 24.09.2009, 13:22
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Битовый индекс



Битовый индекс

Битовые индексы оказываются более выигрышными по сравнению с индексами в виде В-дерева в следующих ситуациях:

Таблица очень велика (содержит миллионы строк), и ключевые столбцы имеют низкую кардинальность - т.е. в столбце очень мало отличающихся значений. Например, в таблице паспортных данных для столбцов, содержащих сведения о поле и семейном положении, битовые индексы предпочтительнее индексов в виде В-дерева.
В запросах часто используется комбинация нескольких условий WHERE, включающих операцию типа OR.
Ключевые столбцы открыты только для чтения или редко обновляются.


Структура битового индекса

Битовый индекс также организован в виде В-дерева, но в листовом блоке индекса для каждого ключевого значения содержится не список значений ROWID, а битовая матрица. Каждый бит в этой матрице соответствует возможному значению ROWID, и если он установлен (т.е. его значение 1), то это означает, что строка с соответствующим ROWID содержит ключевое значение.


Как показано на слайде, в листовом блоке индекса содержится следующее:

заголовок элемента индекса, в который включена информация о числе столбцов и блокировках;
ключевые значения, состоящие из пар "длина-значение" для каждого ключевого столбца (в примере, показанном на слайде, ключ состоит только из одного столбца, и первый элемент имеет ключевое значение "Blue");
начальный ROW ID, который в данном примере содержит файл номер 3, блок номер 10 и строку номер 0;
конечный ROW ID, который в данном примере содержит файл номер 3, блок номер 12 и строку номер 8;
битовая матрица, состоящая из строки битов (1 означает, что соответствующая строка содержит ключевое значение, а 0 - что ключевое значение в строке отсутствует; для хранения битовых матриц сервер Oracle использует запатентованную методику сжатия).


Начальный ROWID - это ROWID первой строки, на которую указывает битовая матрица. Таким образом, первый бит этой матрицы соответствует данному ROWID, второй бит соответствует следующей строке в блоке, и конечный ROWID указывает на последнюю строку таблицы, входящую в битовую матрицу. Битовые индексы используют ограниченные ROWID.


Использование битового индекса

В-дерево используется для поиска листовых блоков, содержащих битовые матрицы для конкретного значения ключа. Начальный ROWID и битовые матрицы используются для поиска строк, содержащих это ключевое значение.

Когда в ключевой столбец таблицы вносятся изменения, битовые матрицы должны модифицироваться. Это приводит к блокировке соответствующих битовых матриц. Поскольку блокировки накладываются на всю битовую матрицу, строки, охваченные этой матрицей, не могут быть обновлены никакими другими транзакциями до тех пор, пока не завершится первая транзакция.
__________________
Телеграм чат
Ответить с цитированием
  #23  
Старый 24.09.2009, 13:24
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Индексные опции



Индексные опции

Для эффективной выборки может быть выгоднее хранить ключи в убывающем порядке. Выбор основывается на том, в каком порядке наиболее часто выбираются данные.

Индекс с реверсированным ключом хранит в обратном порядке байты индексируемого значения. Его использование помогает устранить "горячие точки", возникающие, когда много пользователей обрабатывают данные в одном и том же порядке. В этом случае префиксная часть ключевых значений, обрабатываемых в текущий момент, близка друг к другу. В результате в определенной области индексной структуры производится большое количество действий. Индекс с реверсированным ключом распределяет эти действия по всей индексной структуре, поскольку индексируется версия ключевого значения с реверсировано располагаемыми байтами.

Индекс, созданный на основе объединения нескольких столбцов, называется составным (composite). Например, можно создать индекс на основе фамилий и имен служащих:

Код:
CREATE INDEX name_ix ON employees (last_name,   first_name);
В индексе, основанном на функции, располагаются значения, возвращаемые функцией. Для этой цели может использоваться встроенная функция SQL, поставляемая функция PL/SQL или же функция, написанная пользователем. В результате серверу не надо вызывать функцию для каждого ключевого значения при выполнении поиска на основе индексируемого выражения. В следующем примере индексируется размер дерева (tree volume), подсчитываемый с помощью функции на основе вида (species), высоты (height) и охвата (circumference) дерева. Эти значения хранятся в столбцах таблицы TREES.

Код:
CREATE INDEX tree_vol_ix ON
TREES(volume(species,height,circumference));
Запросы, содержащие в предложении WHERE выражение
volume (species, height, circumference), могут выполняться более быстро с помощью этого индекса, поскольку размер каждого дерева уже подсчитан. Индексы, основанные на функциях, сопровождаются автоматически, как и обычные индексы.

Сжатый индекс (compressed index) можно использовать для уменьшения занимаемого дискового пространства за счет времени выполнения. В нем повторно не хранятся одинаковые значения. В результате большее число индексных записей (входов) может располагаться в таком же дисковом пространстве, что позволяет читать больше записей с диска за такое же время. Сжатие и обратная операция (распаковка) должны производиться соответственно при записи и чтении из индекса.
__________________
Телеграм чат
Ответить с цитированием
  #24  
Старый 24.09.2009, 13:25
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Создание индексов



Создание индексов

Чтобы перейти на страницу Indexes, щелкните на ссылке Indexes под заголовком Schema на странице Administration. После этого можно просмотреть атрибуты индексов, а также зависимости (Show Dependencies), используя выпадающий список в поле Actions.

Индексы могут быть созданы явно или неявно вместе с ограничениями над таблицей. Например, определение главного ключа таблицы приводит к неявному созданию индекса для проверки уникальности значений столбца.
__________________
Телеграм чат
Ответить с цитированием
  #25  
Старый 24.09.2009, 13:25
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Что такое представление?



Что такое представление?

Представление (View) - это определяемый вид выбираемых данных из одной или нескольких таблиц и других представлений. Представления можно рассматривать как хранимые запросы. Такие запросы могут скрывать очень сложные условия, соединения и другие сложные выражения и конструкции SQL. Представления в действительности не содержат данные, они выбирают их из таблиц, на которых они основываются. Эти таблицы называют базовыми таблицами (base tables) представления.
__________________
Телеграм чат
Ответить с цитированием
  #26  
Старый 24.09.2009, 13:27
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Создание представлений



Создание представлений

Данные из представлений запрашиваются также, как и из таблиц. С некоторыми ограничениями можно выполнять изменение, вставку и удаление данных из представления. Все операции с представлениями в действительности выполняются с базовыми таблицами. С помощью представления можно создать дополнительный уровень безопасности, ограничив доступ только к предопределенному набору строк и столбцов таблицы. Представления также могут основываться на сложных запросах, упрощая доступ к данным пользователям и из приложений.

Чтобы просмотреть представления базы данных, щелкните на ссылке Views под заголовком Schema на странице Administration.
__________________
Телеграм чат
Ответить с цитированием
  #27  
Старый 24.09.2009, 13:28
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Последовательности



Последовательности

Для получения следующего значения последовательности используется ее имя; последовательность не связана ни с какой определенной таблицей или столбцом.
После получения данного числа оно не будет снова выбрано, если только последовательность не определена как циклическая. Иногда приложение запрашивает значение, которое затем совсем не используется или не сохраняется в базе данных. В результате в числах, хранимых в таблице могут появиться пропуски.

Кэширование чисел последовательности повышает производительность, так как они предварительно размещаются в оперативной памяти для более быстрого доступа. В случае аварийного завершения экземпляра некоторые кэшированные числа последовательности теряются и не используются в дальнейшем, в результате чего могут появиться пропуски при выборке значений последовательности.

Примечание: Для отсутствия пропусков в приложении должен быть реализован специальный генератор чисел. Однако это может привести к очень плохой производительности. Если использовать таблицу для хранения значения и увеличивать его путем операции update при каждом запросе, тогда такая обработка станет общим узким местом в системе. Это произойдет, потому что каждый сеанс будет вынужден ждать, пока механизм обработки, выполняя в какой-то момент времени только один запрос следующего числа, проверит отсутствие дублирующих и пропущенных значений.
__________________
Телеграм чат
Ответить с цитированием
  #28  
Старый 24.09.2009, 13:32
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Создание последовательности



Создание последовательности

Для просмотра или создания последовательностей с помощью Enterprise Manager щелкните на ссылке Sequences под заголовком Schema на странице Administration. Ниже приведены общие сведения об опциях создания последовательности.

Name; имя последовательности, по которому производится ссылка на нее.
Schema; владелец последовательности.
Maximum Value; максимальное значение, которое может сгенерировать последовательность. Задается целым числом, которое может содержать до 28 цифр. Оно должно быть больше, чем Minimum Value и Initial. Установка Unlimited в качестве значения соответствует максимальной величине, равной 10^27, для возрастающей последовательности и -1 для убывающей последовательности. По умолчанию устанавливается Unlimited.
Minimum Value; минимальное значение последовательности. Задается целым числом, которое может содержать до 28 цифр. Оно должно быть меньше либо равно, чем Initial и меньше, чем Maximum Value. Установка Unlimited в качестве минимального значения соответствует 1 для возрастающей последовательности и -10^26 для убывающей последовательности. По умолчанию устанавливается Unlimited.
Interval; определяется интервал между двумя последовательными числами. Он может быть задан любым положительным или отрицательным целым, не может быть равен нулю. Задается целым числом, которое может содержать до 28 цифр. Значение по умолчанию равно 1.
Initial; задается первое генерируемое число в последовательности. Используйте этот атрибут для начала возрастающей последовательности с величины, большей или равной ее минимуму и для начала убывающей последовательности с величины, меньшей или равной ее максимуму.
Cycle Values; после достижения максимального значения возрастающей последовательности генерируется ее минимальное значение. Для убывающей последовательности после достижения минимального значения генерируется ее максимальное значение. Если эта опция не установлена, при попытке выбрать число после достижения конца последовательности выдается сообщение об ошибке.
Order Values; эта опция гарантирует, что числа последовательности генерируются в порядке запроса. Эта фраза полезна при использовании последовательных чисел в качестве временных меток. Гарантия порядка выбора обычна не важна, когда последовательность используется для генерации главных ключей. Эта опция необходима только для обеспечения порядка генерации, когда используется Oracle в архитектуре Real Application Clusters.
Cache Options; определяет количество чисел, которые сервер Oracle предварительно располагает и хранит в памяти для более быстрого доступа. Задается целым числом, которое может содержать до 28 цифр. Минимальное значение этого параметра - 2. Для циклической последовательности это значение должна быть меньше, чем величина цикла, так как нельзя поместить в кэш больше цифр, чем генерируется в цикле числовой последовательности.
__________________
Телеграм чат
Ответить с цитированием
  #29  
Старый 24.09.2009, 13:34
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Использование последовательности



Использование последовательности

Для ссылки на значение последовательности в командах SQL используются следующие псевдостолбцы:

CURRVAL; возвращает текущее значение последовательности;
NEXTVAL; генерирует и возвращает следующее значение последовательности.


Псевдостолбцы CURRVAL и NEXTVAL должны использоваться с квалификатором, в качестве которого указывается имя последовательности:

последовательность.CURRVAL
последовательность.NEXTVAL


При первом использовании псевдостолбец NEXTVAL возвращает начальное (initial) значение последовательности. При последующем обращении к NEXTVAL увеличивается значение последовательности на определенный шаг (increment) и возвращается новое значение. Любое обращение к CURRVAL всегда возвращает текущее значение последовательности, которое было получено в результате последнего обращения к NEXTVAL.
__________________
Телеграм чат
Ответить с цитированием
  #30  
Старый 24.09.2009, 13:37
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Временные таблицы



Временные таблицы

Преимущество использования временных таблиц состоит в том, что они позволяют сохранить частные данные, необходимые в ходе решения задачи, которые затем должны быть удалены при завершении транзакции или сеанса. Такие функциональные возможности временных таблиц снимают с пользователя ответственность за скрытие используемой информации от других сеансов, а также освобождают от необходимости удаления сгенерированных данных по завершению действий. В сеансе видимы только такие данные временных таблиц, которые были вставлены в них в этом же сеансе.

Временные таблицы могут двух видов: определенные для транзакций (transaction-specific) и определенные для сеанса (session-specific). В таблицах первого вида данные существуют в течение транзакции, в таблица второго вида - в течение сеанса. В обоих случаях данные, вставляемые в сеансе, принадлежат этому сеансу. В каждом сеансе можно выбирать и изменять только его собственные данные. В результате блокировки DML не устанавливаются над данными временных таблиц.

Время жизни строк устанавливается с помощью предложений:

ON COMMIT DELETE ROWS; определяет, что строки доступны в рамках транзакции;
ON COMMIT PRESERVE ROWS; определяет, что строки доступны в течение сеанса.

Временные таблицы создаются по команде CREATE GLOBAL TEMPORARY TABLE.

Для них можно создавать индексы, представления и триггеры, а также использовать утилиты Export и Import или Data Pump для выгрузки и загрузки определений временных таблиц. Однако данные не выгружаются, даже если вы укажите параметр
ROWS.

Кроме уже упомянутых двух случаев, вызывающих удаление данных, можно принудительно и эффективно очистить таблицу, используя команду TRUNCATE TABLE. В результате удаляются все данные, которые были вами вставлены. Это более эффективно, чем выполнение команды DELETE.

Временные таблицы могут быть созданы с помощью Enterprise Manager. Для этого на странице Create Table: Table Organization отметьте поле Temporary. Затем щелкните на кнопке Continue. На следующей странице можно будет задать время жизни: в течение сеанса (Session Specific) или транзакции (Transaction Specific).

Поле Tablespace недоступно, поскольку такая таблица всегда создается во временном табличном пространстве пользователя; никакое другое табличное пространство не может быть указано.

Примечание: ключевое слово GLOBAL соответствует терминологии, определенной в стандарте ISO (International Organization for Standardization) для SQL.
__________________
Телеграм чат
Ответить с цитированием
Ответ
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:39. Часовой пояс GMT +3.


Powered by vBulletin®