|
Программирование >> Oracle
Таблицы В этой главе мы рассмотрим таблицы базы данных. Будут представлены различные типы таблиц и показано, в каких случаях имеет смысл использовать каждый из них. Будут детально описаны особенности физического хранения таблиц и организацию их данных. Когда-то был только один тип таблиц - обычные . Они управлялись как куча (ее определение представлено ниже). Со временем в Oracle добавились более сложные типы таблиц. Теперь, кроме обычных таблиц, есть еще кластерные (двух типов), таблицы, организованные по индексу, вложенные таблицы, временные и объектные. Каждый тип таблиц имеет свои характеристики, делающие его наиболее подходящим в тех или иных прикладных областях. Типы таблиц Прежде чем перейти к деталям, определим каждый тип таблиц. В Oracle 8i - семь основных типов таблиц. Таблиц!, органованн1е в виде кучи. Это обычные , стандартные таблицы базы данных. Данные управляются по принципу кучи . При добавлении данных используется первое же свободное место в сегменте, достаточное для их размещения. При удалении данных из таблицы освободившееся место может повторно использоваться следующими операторами INSERT и UPDATE. Вот откуда название организованные в виде кучи для таких таблиц. Куча - это пространство памяти, используемое достаточно случайным образом. Таблиц!, организованн1е по индексу. Такая таблица хранится в структуре индекса. Это предполагает физическое упорядочение ее строк. Если в обычной таблице данные вставляются в любое свободное место, в таблице, организованной по индексу, хранимые данные отсортированы по первичному ключу. Таблице! в кластере. Хранение таблицы в кластере дает два преимущества. Во-первых, несколько таблиц можно хранить вместе. Обычно в блоке хранятся данные только одной таблицы. В кластере же в одном блоке могут храниться данные нескольких таблиц. Во-вторых, все данные, содержащие одно и то же значение ключа кластера, также хранятся вместе. Данные кластеризованы вокруг значения ключа кластера. Ключ кластера строится с помощью индекса на основе В*-дерева. Таблице! в хеш-кластере. Аналогичны представленным ранее таблицам в кластере, но, вместо индекса на основе В*-дерева, для поиска блока данных по ключу кластера используется хеширование ключа. В хеш-кластере сами данные (образно говоря) и есть индекс. Это хорошо подходит для чтения данных, соответствующих определенному значению ключа. Вложенн1е таблиц!. Часть объектно-реляционных расширений сервера Oracle. Это просто генерируемые и поддерживаемые системой дочерние таблицы связанные как предок-потомок. Они устроены аналогично таблицам ЕМР и DEPT в схеме SCO. Таблицу ЕМР можно считать дочерней по отношению к таблице DEPT, поскольку в таблице ЕМР есть внешний ключ, DEPTNO, ссылающийся на таблицу DEPT. Главное различие в том, что это - не отдельные таблицы, как ЕМР. Временн1е таблиц!. В этих таблицах сохраняются черновые данные на время транзакции или сеанса. При необходимости для этих таблиц выделяются временные экстенты из временного табличного пространства пользователя. Каждый сеанс будет видеть только выделенные им самим экстенты и никогда не увидит данные, созданные в других сеансах. Объектн1е таблиц!. Это таблицы, создаваемые на основе объектного типа. Они имеют специальные атрибуты, отсутствующие у необъектных таблиц, например генерируемый системой псевдостолбец REF (идентификатор объекта) для каждой строки. Объектные таблицы фактически являются отдельным случаем обычных, организованных по индексу и временных таблиц, и могут включать вложенные таблицы. Имеется несколько общих свойств таблиц, не зависящих от их типа. Таблица может иметь до 1000 столбцов, хотя я не рекомендовал бы использовать такие таблицы без крайней необходимости. Таблицы наиболее эффективно работают при количестве столбцов, намного меньшем, чем 1000. Таблица может иметь практически неограниченное количество строк. Хотя при этом придется столкнуться с другими ограничениями. Например, табличное пространство может обычно состоять не более чем из 1022 файлов. Пусть используются файлы размером 32 Гбайт, тогда получаем 32704 Гбайт в каждом табличном пространстве. Это означает - 2143289344 блока по 16 Кбайт каждый. В один такой блок можно вместить 160 строк размером от 80 до 100 байт. Это дает в итоге 342926295040 строк. Однако если фрагментировать таблицу, это количество можно увеличить в десять раз. Теоретически ограничения, конечно, есть, но прежде чем они будут достигнуты, придется столкнуться с другими, практическими ограничениями. Таблица может иметь столько индексов, сколько имеется перестановок столбцов (и перестановок функций от этих столбцов), но не более 32 столбцов, хотя и в этом случае будут практические ограничения на количество реально создаваемых и сопровождаемых индексов. Нет ограничения на количество таблиц. И в этом случае практические ограничения будут держать количество таблиц в разумных границах. Миллионов таблиц у вас не будет (такое количество сложно создать и поддерживать), но тысячи таблиц поддерживаются элементарно. Начнем с рассмотрения параметров и терминов, относящихся к таблицам. После этого будут описаны простые таблицы, организованные в виде кучи , а затем - и другие типы таблиц. Терминология В этом разделе мы рассмотрим различные параметры хранения и терминологию, связанную с таблицами. Не все описываемые параметры используются для каждого типа таблиц. Например, параметр PCTUSED не имеет смысла для таблицы, организованной по индексу. Применимые параметры будут указаны при описании каждого типа таблиц. Цель этого раздела - представить термины и дать их определения. При необходимости, более детальная информация об использовании конкретных параметров будет представлена в следующих разделах. Отметка максимального уровня Этот термин (high water mark) используется для объектов, хранящихся в базе дан-н1х. Если представить себе таблицу как линейную структуру в виде последовательности блоков слева направо, то отметкой максимального уровня будет крайний правый блок, когда-либо содержавший данные. Например:
https://tabac44.ru табак на развес покупаем в интернете. |
© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки. |