Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 проблема с теорией  [new]
миксер
Guest
Помогите пожалуйста понять

1)
"Файл БД делится на страницы (page) – логические единицы хранения для сервера"
Эти страницы можно увидеть? Физически page это что? В page так же есть какие то "блоки"
Где найти RID? RID это физический адрес page.

2)
И вопрос о кластерном индексе.
Кластерный индекс "физический сортирует" данные. Что значит физически?

Есть кластерный индекс по столбцу А
так есть 1,3,2 он отсортирует 1,2,3

То как кластерный индекс "физически" отсортирует составной ключ Agsdkgjeh12, Agsdkgjeh22, Agsdkgjeh32?

Спасибо
18 янв 15, 04:28    [17133536]     Ответить | Цитировать Сообщить модератору
 Re: проблема с теорией  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
миксер
Помогите пожалуйста понять

1)
"Файл БД делится на страницы (page) – логические единицы хранения для сервера"
Эти страницы можно увидеть? Физически page это что? В page так же есть какие то "блоки"
Где найти RID? RID это физический адрес page.

2)
И вопрос о кластерном индексе.
Кластерный индекс "физический сортирует" данные. Что значит физически?

Есть кластерный индекс по столбцу А
так есть 1,3,2 он отсортирует 1,2,3

То как кластерный индекс "физически" отсортирует составной ключ Agsdkgjeh12, Agsdkgjeh22, Agsdkgjeh32?

Спасибо
1. См. основы информатики. Страница у MSSQL - это 8192 байта. Увидеть нельзя, это внутри компьютера. Про блоки внутри страницы не слышал. RID найти нельзя. "Где найти натуральное число?"

2. Фиизически сортирует - не совсем точно. Но можно сказать, что это означает и физическую сортировку.
Кластерный индекс сортирует данные в логической организации пространства хранения данных в MSSQL. Страницы укладываются внутри экстента в отсортированным порядке, и сами экстенты тоже, создаются паослеждовательно в соответствии с сортировкой.

По составному ключу данные будут храниться так же в отсортированном виде. Непонятно, почему вы его выделаете, нет разницы между простым ключём и составным.
18 янв 15, 10:51    [17133640]     Ответить | Цитировать Сообщить модератору
 Re: проблема с теорией  [new]
миксер
Guest
alexeyvg,

Спасибо, но что такое "логической организации пространства хранения данных в MSSQL"?
Я знаю, есть логические чтения с диска, но не понимаю что это? как минимизировать этот параметр?


Непонятно, почему вы его выделаете, нет разницы между простым ключём и составным.

я привел этот пример, чтобы понять если в случае с 123 понятно по какому принципу сортирует, то с Agsdkgjeh12 непонятно
19 янв 15, 03:59    [17135483]     Ответить | Цитировать Сообщить модератору
 Re: проблема с теорией  [new]
Ruuu
Member

Откуда: Иркутск
Сообщений: 4272
миксер
Я знаю, есть логические чтения с диска, но не понимаю что это?
Под физическими чтениями понимается чтение с диска, при этом считанные страницы данных попадают в кэш в ОЗУ, если в дальнейшем будет обращение к этим страницам, то они будут считываться из кэша без обращения к диску, это и есть логические чтения. Вернее логические чтения - это чтения и с диска и из кэша.
Это сильно упрощенно, подробно здесь: SQL Server 2000 I/O Basics

миксер
как минимизировать этот параметр?

1. Делать такие фильтры, чтобы выбиралось меньше данных
2. Создать нужные индексы.
19 янв 15, 06:19    [17135504]     Ответить | Цитировать Сообщить модератору
 Re: проблема с теорией  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31969
миксер
если в случае с 123 понятно по какому принципу сортирует, то с Agsdkgjeh12 непонятно
Сортировка идёт по каждому полю составного ключа.

Сначала по первому полю. Потом, для одинаковых значений первого поля, по второму полю. И т.д.

Для каждого поля сортировка идёт по правилам сортировки для его типа данных, в соответствии с его колелйшеном, и в соответствии с опциями ASC/DESC, указанным в списке полей.
миксер
Спасибо, но что такое "логической организации пространства хранения данных в MSSQL"?
Я знаю, есть логические чтения с диска, но не понимаю что это? как минимизировать этот параметр?
В ОС файл базы - это просто файл, цепочка байтов. Сиквел интерпретирует байты внутри файла как некую сложную структуру. Это называется "логическая организация пространства хранения данных в MSSQL"

"Логические чтения" - это обращение за страницей данных, необходимое для выполнения запроса ядром выполнения сиквела. Они не равны физическим чтениям, т.к. данные могут читаться из кеша.

Для уменьшения логических чтений нужно оптимизировать запросы, правильно строить структуры данных (модель данных), делать индексы, ну и т.д. В общем, делать то, что и должен делать "разработчик БД".
В частности, разработчик для этого читает планы запросов, пользуется профайлером. Ну и изучает теорию, и устройство сиквела.
19 янв 15, 10:15    [17135923]     Ответить | Цитировать Сообщить модератору
 Re: проблема с теорией  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
миксер
Помогите пожалуйста понять

1)
"Файл БД делится на страницы (page) – логические единицы хранения для сервера"
Эти страницы можно увидеть? Физически page это что? В page так же есть какие то "блоки"
Где найти RID? RID это физический адрес page.


Файл делится на экстенты, которые представляют собой 8 подряд идущих друг за другом страниц (размером 8Kb). Каждая страница в пределах файла имеет номер. В пределах базы страница идентифицируется парой: FileID:PageNum. В странице DATA_PAGE, INDEX_PAGE есть таблица слотов (смещений в странице) по которому начинается строка индексная или данных. Слоты имеют номера SlotNum в порядке увеличения. ROWID = FileID:PageNum:SlotNum. Все это можно увидеть/поизучать погулив по:

dbcc traceon(3604);
dbcc ind(...);
dbcc page(...);


Есть и куча других страниц GAM, SGAM, PFS, IAM, BCM, DCM, Boot Page, ...

миксер
2)
И вопрос о кластерном индексе.
Кластерный индекс "физический сортирует" данные. Что значит физически?


В общем случае это не так. В пределах листовой страницы, слоты строк страницы будут сортированы по ключу кластерного индекса. Каждая страница индекса может ссылаться на следующую и предыдущую страницы текущего яруса, которые будут не обязательно в одном экстенте и не обязательно будут идти последовательно друг за другом. Но если будете идти вперед/назад по этим ссылкам будете получать слоты страниц, отсортированные по ключу кластерного индекса.
19 янв 15, 10:44    [17136103]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить