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

Откуда: УФА, БАШКОРТОСТАН
Сообщений: 411
Разбираюсь с чужим кодом.
функция секционирования сделана по дате, а кластерный индекс по Id . в схеме секционирования учавствует несколько десятков файлов.

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

может мне это кто то обьяснить ?
5 дек 13, 09:29    [15243637]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
ZOOKABAKODER
Member

Откуда:
Сообщений: 178
Если индекс построен на схеме секционирования то индекируемые поля, неявно, ставится поле по которому секционирование идёт.
http://msdn.microsoft.com/en-us/library/ms188783(v=sql.100).aspx
When you partition a non-unique, clustered index, the Database Engine by default adds the partitioning column to the list of clustered index keys, if it is not already specified. When partitioning a non-unique, nonclustered index, the Database Engine adds the partitioning column as a non-key (included) column of the index, if it is not already specified.
5 дек 13, 09:39    [15243683]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
B-tree
Guest
Stilet
Кластерный индекс это физическое упорядочевание данных в таблице

во-первых, не физическое, а логическое
во-вторых, не в таблице а в бидереве.
в-третьих, каждая секция это отдельное бидерево


если сложить 1, 2 и 3 - все должно стать понятно.
5 дек 13, 10:38    [15244177]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
Stilet
Member

Откуда: УФА, БАШКОРТОСТАН
Сообщений: 411
если данные считываются системой из файла данных БД в порядке следования кластерного индекса логика конечно есть, однако физики больше
5 дек 13, 14:26    [15246587]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
Guest12345
Guest
Представьте что у вас несколько таблиц, в которых данные лежат по периодам, допустим по месяцам.
В каждой таблице данные за месяц.
И в каждой построен кластерный индекс по ID.


"<B-tree>
во-первых, не физическое, а логическое"

не совсем так, физическое тоже присутствует...
5 дек 13, 15:35    [15247139]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Guest12345
не совсем так, физическое тоже присутствует...
В каком месте, простите?
5 дек 13, 15:39    [15247160]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
Glory
Member

Откуда:
Сообщений: 104760
Guest12345
не совсем так, физическое тоже присутствует...

Т.е. на диске что ли ?
5 дек 13, 15:40    [15247181]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
Guest12345
Guest
При организации кластерного индекса данные упорядочиваются физически.
т.е допустим на страницу данных входит 100 строк
В идеальном случае
на 1 -й странице лежат строки с 1 по 100
на 2 -й странице лежат строки со 101 по 200
но это не значит что они упорядочены внутри самих страниц.
5 дек 13, 15:56    [15247342]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Guest12345
При организации кластерного индекса данные упорядочиваются физически.
т.е допустим на страницу данных входит 100 строк
В идеальном случае
на 1 -й странице лежат строки с 1 по 100
на 2 -й странице лежат строки со 101 по 200
но это не значит что они упорядочены внутри самих страниц.
И где здесь физика-то?
5 дек 13, 15:59    [15247378]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
Гавриленко Сергей Алексеевич
Guest12345
не совсем так, физическое тоже присутствует...
В каком месте, простите?


При отсутствии как класса внешней (логической) фрагментации страниц (служебных и с данными) в индексе можно говорить о последовательном расположении страниц. И то с оговорками.
5 дек 13, 16:03    [15247420]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
Guest12345
Guest
Нда, загнали в угол...
Физически и файл БД может быть размазан по всему диску рандомно...
Ну а как это еще назвать - не логически же?
Логически - это order by...
5 дек 13, 16:06    [15247448]     Ответить | Цитировать Сообщить модератору
 Re: секционирование  [new]
o-o
Guest
Guest12345
Нда, загнали в угол...
Физически и файл БД может быть размазан по всему диску рандомно...
Ну а как это еще назвать - не логически же?
Логически - это order by...


выходит, что именно логически:
Row Offset Array
The row offset array is a block of 2-byte entries, each indicating the offset on the page at which
the corresponding data row begins.
...
The row offset array indicates the logical order of rows on a page. For example, if a table
has a clustered index, SQL Server stores the rows in the order of the clustered index key. This
doesn’t mean the rows are physically stored on the page in the order of the clustered index
key. Rather, slot 0 in the offset array refers to the fi rst row in the clustered index key order,
slot 1 refers to the second row, and so forth.
As we’ll see shortly when we examine an actual
page, the physical location of these rows can be anywhere on the page.

Chapter 6 from Inside Microsoft SQL Server 7.0 by Kalen Delaney
пардон за версию 7, в 2008 то же самое, но ссылку именно на текст главы, а не на название книги, нарыть не удалось
5 дек 13, 18:09    [15248578]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить