Помощь в написании студенческих работ
Антистрессовый сервис

Кластеры. 
Организация баз данных

РефератПомощь в написанииУзнать стоимостьмоей работы

Обычно при вставке в таблицу новых строк всеми пользователями, они сохраняются в одном и том же блоке Oracle. После заполнения этого блока все последующие новые строки сохраняются в другом блоке Oracle, распределенном для той же таблицы. С использованием двух упомянутых выше таблиц, хранящихся в кластере, запрос следующего типа был бы выполнен быстрее, поскольку один блок Oracle будет содержать… Читать ещё >

Кластеры. Организация баз данных (реферат, курсовая, диплом, контрольная)

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

Кластеры предоставляют альтернативный метод хранения строк. Этот метод основан на значении ключа. Новые строки (поступившие от любого пользователя) не сохраняются в одном и том же блоке Oracle; вместо этого они хранятся в блоке Oracle, определенном значением ключа. Объединение таблиц в кластеры не влияет на функционирование программ (но влияет на производительность операторов).

Имеются два разных типа кластеров: индексные кластеры и хешированные кластеры.

Индексные кластеры

Индексный кластер может хранить в одном и том же блоке Oracle данные из нескольких таблиц на основе общего значения ключа (в состав такого соединения данных таблиц может входить до 16 столбцов). Определив, что прикладная программа часто обращается одновременно к каким-то двум таблицам, можно принять решение хранить данные этих двух таблиц вместе в базе данных Oracle. Если данные двух таблиц хранятся в одних и тех же блоках Oracle, то строки обеих таблиц могут быть выбраны только из одного набора блоков Oracle. Уменьшение числа блоков Oracle, к которым приходится обращаться, повысит производительность прикладной программы.

Для создания индексного кластера нужно вначале создать в базе данных кластерный объект, определив тип и размер столбца для связывания двух наборов строк. Затем на кластере создается индекс. И наконец, создаются таблицы с указанием в конце оператора CREATE table того, что эти таблицы должны храниться в кластере, и столбца таблицы, который должен хранить эти данные.

В следующем примере показан индексный кластер, который хранит строки таблиц заказчиков и заказов:

SQL> CREATE CLUSTER de! egates_bookings_cluster (delegateJd NUMBER (5,0));

Cluster created.

SQL>

SQL>

SQL> CREATE INDEX delegates_bookings_id ON CLUSTER delegates_bookings_cIuster;

Index created.

SQL>

SQL> CREATE TABLE delegates (d_delegate_id NUMBER (5) NOT NULL, djastname VARCHAR2(20) NOT NULL, d_firstname VACHAR2(20), d_organizationVARCHAR2(20), d_sex VARCHAR2(1), d_ date_ last_ contacted DATE).

CLUSTER delegates_ bookings_ cluster (d_ delegate_ id); Table created.

SQL>

SQL> CREATETABLE bookings (b_delegate_id NUMBER (5) NOT NULL, b_ course_ code VARCHAR2(8) NOT NULL, b_start_date DATE NOT NULL, bjocatlon VARCHAR2(30) NOT NULL, b_paid VARCHAR2(1)).

CLUSTER de! egates_bookings_cluster (b_delegate_id);

Table created.

SQL>

To, что таблицы входят в состав кластера, не влияет на способ их использования. В следующем примере кода показаны две предыдущие таблицы, используемые в операторе insert.

Строки этих двух таблиц имеют один и тот же блок ROWED, а значит, они физически находятся в одном и том же блоке Oracle. SQL> INSERT INTO delegates (d_delegate_id, djastname) VALUES (1,'Permjit');

1 row created.

SQL> INSERT INTO bookings (b_delegate id, b_course_code, b_start_date, b Jocation).

VALUES (1, 'TEST','01-JAN-99', Riyadh');

1 row created.

SQL> SELECT ROWID FROM delegates;

ROWID.

00000E75.0000.0001.

SQL> SELECT ROWID.

FROM bookings;

ROWID.

00000E75.0000.0001.

SQL>

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

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

SQL> SELECT d. d Jastname, d. d Jlrstname, b. b_start_date, b.bjocation.

FROM delegates d, bookings b.

WHERE b. b_delegate_id = d. d_delegate_id AND d. d_delegate_id = 25;

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

Показать весь текст
Заполнить форму текущей работой