Тема 6. Архитектура СУБД Ingres
Компоненты СУБД Ingres
Процессы СУБД Ingres
Понятие сессии
Система управления транзакциями
Файл транзакций
Процедура контрольной точки
Система блокировок
Запросы и блокировки
Пример блокировок
Пример блокировок
Проблема дедлока
Оптимизация запросов
План выполнения запроса
План выполнения запроса, вариант 1
План выполнения запроса, вариант 1
План выполнения запроса, вариант 2
План выполнения запроса, вариант 2
221.50K
Категория: Базы данныхБазы данных

Архитектура СУБД Ingres. Тема 6

1. Тема 6. Архитектура СУБД Ingres

Организация баз данных в производственных системах
Тема 6.
Архитектура СУБД Ingres
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
1

2. Компоненты СУБД Ingres

Организация баз данных в производственных системах
Компоненты СУБД Ingres
Сервер
Клиент
Условные
обозначения:
SQL-приложение
Утилита
Файл
INGRES-NET
DUAL LOG-файл
Архивация
Сеть TCP-IP
LOG-файл
Транзакции
INGRES-NET
DMFACP
DMFRCP
AUDITDB
(аудит)
Откат Восстановление
IIDBMS
Файлы БД
Шевченко А. В.
ROLLFORWARDDB
(восстановление)
CKPDB
(контрольная точка)
Журналы
DUMP-файлы
Тема 6. Архитектура СУБД Ingres
2

3. Процессы СУБД Ingres

Организация баз данных в производственных системах
Процессы СУБД Ingres
Сервер
Клиент
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
3

4. Понятие сессии

Организация баз данных в производственных системах
Понятие сессии
IIDBMS
* select dbmsinfo('session_id')\g
+---------------------------------+
|col1
|
+---------------------------------+
|0F910100
|
+---------------------------------+
(1 row)
continue
* select dbmsinfo('server_class')\g
+---------------------------------+
|col1
|
+---------------------------------+
|Ingres DBMS Server
|
+---------------------------------+
(1 row)
continue
*
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
4

5. Система управления транзакциями

Организация баз данных в производственных системах
Система управления транзакциями
Транзакции
LOG-файл
IIDBMS
Откат
Изменение
CLR
Откат
Восстановление
Файлы БД
DMFRCP
* update ...
* commit\g
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
* rollback\g
5

6. Файл транзакций

Организация баз данных в производственных системах
Файл транзакций
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
6

7. Процедура контрольной точки

Организация баз данных в производственных системах
Процедура контрольной точки
Файлы БД
Шевченко А. В.
CKPDB
(контрольная точка)
Тема 6. Архитектура СУБД Ingres
DUMP-файлы
7

8. Система блокировок

Организация баз данных в производственных системах
Система блокировок
*
*
*
*
*
Уровень
блокировки
update ...
insert ...
delete ...
commit\g
Файлы БД
Запись
Вид блокировки
Страница
Эксклюзивная блокировка на запись. Только одна транзакция
X может установить эксклюзивную блокировку на запись при
конкурентном доступе к данным
Разделяемая блокировка на чтение. Несколько транзакций
S могут устанавливать эту блокировку на чтение. Ни одна
транзакция не может изменять данные при этой блокировке
Ожидаемая эксклюзивная блокировка. Выставляется на
IX уровне таблицы при установке эксклюзивной блокировки (X)
на одной или нескольких ее страницах
Ожидаемая разделяемая блокировка. Выставляется на уровне
IS таблицы при установке разделяемой блокировки (S) на одной
или нескольких ее страницах
Таблица
База данных
Совместимость
блокировок
IS IX
S
X
IS
+
+
+
-
IX
+
+
-
-
S
+
-
+
-
X
-
-
-
-
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
8

9. Запросы и блокировки

Организация баз данных в производственных системах
Запросы и блокировки
Оператор
Вид
Уровень
Примечание
create table
X
Таблица
На таблицу
create index
X
X
Таблица
Таблица
На основную таблицу
На индекс
modify
X
Таблица
На таблицу
select
IS
S
Таблица
Страница
На все таблицы, участвующие в запросе
На страницы, если > 10, то эскалация
update
modify
delete
IX
X
IS, S
Таблица
Страница
T+C
На обновляемую таблицу
На страницы, если > 10, то эскалация
На читаемые таблицы
* set lockmode session where readlock = nolock\g
Executing . . .
continue
*
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
9

10. Пример блокировок

Организация баз данных в производственных системах
Пример блокировок
* select number, name, status, tid/512 as page from product\g
Executing . . .
+------+--------------------+------+-------------+
|number|name
|status|page
|
+------+--------------------+------+-------------+
|
10|Стойка 600х200
|
1|
2|
|
30|Короб световой
|
1|
2|
|
50|Держатель средний
|
1|
2|
|
60|Подставка
|
3|
2|
|
70|Полка с подсветкой |
1|
3|
|
80|Стойка 1200х800
|
1|
3|
|
90|Держатель большой
|
1|
3|
|
130|Стеллаж с подсветкой|
1|
3|
|
140|Держатель малый
|
1|
4|
+------+--------------------+------+-------------+
(9 rows)
continue
*
Транзакция А
Шевченко А. В.
Транзакция В
Тема 6. Архитектура СУБД Ingres
10

11. Пример блокировок

Организация баз данных в производственных системах
Пример блокировок
Транзакция А
Транзакция В
* update product set status = 2
* where number = 30\g
Executing . . .
(1 row)
continue
*
* update product set status = 2
* where number = 70\g
Executing . . .
(1 row)
continue
*
* update product set status = 2
* where number = 50\g
* commit\g
Executing . . .
continue
*
Шевченко А. В.
Executing . . .
(1 row)
continue
*
Тема 6. Архитектура СУБД Ingres
11

12. Проблема дедлока

Организация баз данных в производственных системах
Проблема дедлока
Транзакция А
Транзакция В
* update product set status = 2
* where number = 30\g
Executing . . .
(1 row)
continue
*
* update product set status = 2
* where number = 80\g
Executing . . .
E_US125C Deadlock detected, your single or
multi-query transaction has been aborted.
(Sun Feb 27 00:44:36 2010)
continue
*
* update product
* where number =
Executing . . .
(1 row)
continue
* update product
* where number =
set status = 2
70\g
set status = 2
50\g
*
Возможные причины дедлока:
* перекрестное обновление таблицы несколькими транзакциями;
* в результате эскалации блокировок (даже в рамках одной транзакции);
* при обновлении вторичных индексов и индекса в структуре btree.
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
12

13. Оптимизация запросов

Организация баз данных в производственных системах
Оптимизация запросов
СУБД Ingres Open Source использует оптимизацию запросов для увеличения скорости
их выполнения. Исходной информацией для оптимизатора запросов является размер
записи, количество записей, наличие первичных ключей, наличие индексов, а также
дублирование значений в пределах отдельных столбцов. Для того чтобы информация,
зависящая от содержимого таблиц базы данных, была доступна оптимизатору
запросов, необходимо собрать статистику по базе данных, используя утилиту
OPTIMIZEDB. Если такая оптимизация выполнялась, то оптимизатор использует ее
результаты. Если статистики нет, то считается, что точные условия сравнения
выбирают 1 % от числа записей за исключением случая, когда условие задается по
первичному ключу; неточные условия дают 10 % от числа записей, все соединения
таблиц имеют соотношение 1:1, и размерность результирующей таблицы равна
размерности наименьшей из таблиц, участвующих в соединении.
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
13

14. План выполнения запроса

Организация баз данных в производственных системах
План выполнения запроса
В процессе оптимизации запроса для него генерируется план выполнения QEP (query
execuition plan), который задает последовательность выполнения запроса
(последовательность соединения таблиц). План представляется в виде дерева, узлами
которого могут быть таблицы, проекции-селекции (Proj-rest) и соединения таблиц.
Соединения могут быть полным декартовым произведением (Cart-Prod), полностью
(FSM Join) или частично (PSM Join) сортированным соединением, соединением по
ключу (K Join) или tid (T Join), вложенным соединением (SE Join). Для каждого узла
дерева приводятся весовые показатели временных затрат на операции обращения к
диску Dx и вычисление Cx, а также оцениваемое количество используемых в процессе
запроса страниц Pages и записей Tups.
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
14

15. План выполнения запроса, вариант 1

Организация баз данных в производственных системах
План выполнения запроса, вариант 1
* set qep\g
Executing . . .
continue
* select o.number, o.date, c.name,
* p.name, o.quantity, o.quantity*p.price as total
* from orders o join client c on c.id = o.client
* join product p on p.number = o.product\g
Executing . . .
+------+-----------+-----------+-----------------+------+-----------+
|number|date
|name
|name
|quanti|total
|
+------+-----------+-----------+-----------------+------+-----------+
|
3|22.03.2010 |ООО ”Круиз”|Стойка 600х200
|
60| 90000.000|
|
7|30.03.2010 |ТОО ”Сигма”|Стойка 600х200
|
24| 36000.000|
|
5|28.03.2010 |ООО ”Круиз”|Подставка
|
80|
9600.000|
|
1|20.03.2010 |ТОО ”Сигма”|Подставка
|
200| 24000.000|
|
8|01.04.2010 |ЗАО ”Вега” |Подставка
|
50|
6000.000|
|
6|30.03.2010 |ЗАО ”Вега” |Стойка 3 полки
|
15| 34500.000|
|
2|22.03.2010 |ООО ”Круиз”|Стойка 3 полки
|
40| 92000.000|
|
4|25.03.2010 |ТОО ”Сигма”|Держатель малый |
132| 26400.000|
+------+-----------+-----------+-----------------+------+-----------+
(8 rows)
continue
*
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
15

16. План выполнения запроса, вариант 1

Организация баз данных в производственных системах
План выполнения запроса, вариант 1
********************************************************************
QUERY PLAN 3,1, no timeout, of main query
FSM Join(number)
Heap
Pages 1 Tups 4
D6 C1
/
\
Proj-rest
FSM Join(id)
Sorted(number)
Sort on(product)
Pages 1 Tups 8
Pages 1 Tups 4
D4 C0
D2 C1
/
/
\
product
Proj-rest
Proj-rest
(p)
Sort on(id)
Sort on(client)
B-Tree(NU)
Pages 1 Tups 4
Pages 1 Tups 8
Pages 7 Tups 8
D1 C0
D1 C0
/
/
client
orders
(c)
(o)
Heap
Heap
Pages 3 Tups 4
Pages 3 Tups 8
********************************************************************
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
16

17. План выполнения запроса, вариант 2

Организация баз данных в производственных системах
План выполнения запроса, вариант 2
* select o.number, o.date, c.name,
* p.name, o.quantity, o.quantity*p.price as total
* from orders o join client c on c.id = o.client
* join product p on p.number = o.product where p.name = 'Подставка'\g
Executing . . .
+------+-----------+-----------+-----------------+------+-----------+
|number|date
|name
|name
|quanti|total
|
+------+-----------+-----------+-----------------+------+-----------+
|
5|28.03.2010 |ООО “Круиз”|Подставка
|
80|
9600.000|
|
1|20.03.2010 |ТОО “Сигма”|Подставка
|
200| 24000.000|
|
8|01.04.2010 |ЗАО “Вега” |Подставка
|
50|
6000.000|
+------+-----------+-----------+-----------------+------+-----------+
(3 rows)
continue
*
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
17

18. План выполнения запроса, вариант 2

Организация баз данных в производственных системах
План выполнения запроса, вариант 2
********************************************************************
QUERY PLAN 1,1, no timeout, of main query
FSM Join(id)
Heap
Pages 1 Tups 1
D5 C1
/
\
FSM Join(number)
Proj-rest
Sort on(client)
Sort on(id)
Pages 1 Tups 1
Pages 1 Tups 4
D4 C0
D1 C0
/
\
/
T Join(tidp)
Proj-rest
client
Sort on(number)
Sort on(product)
(c)
Pages 1 Tups 1
Pages 1 Tups 8
Heap
D3 C0
D1 C0
Pages 3 Tups 4
/
\
/
Proj-rest
product
orders
Heap
(p)
(o)
Pages 1 Tups 1
B-Tree(NU)
Heap
D2 C0
Pages 7 Tups Pages 3 Tups 8
/
$produ_u0000013c00000000
I(p)
B-Tree(name)
Pages 5 Tups 8
********************************************************************
Шевченко А. В.
Тема 6. Архитектура СУБД Ingres
18
English     Русский Правила