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

Откуда: Київ
Сообщений: 10428
Большая таблица c uniqueidentifier в качестве PK.
Ясно, плохо.
Правильно ли понимаю:
Если получится добавить int, сделать его ПК, а uniqueidentifier оставить и проиндексировать - то станет получше, потому что хуже уже некуда?

В частности, некластерный индекс не подвержен такому пагубному влиянию неупорядоченных значений индексируемого поля как кластерный?
8 апр 15, 09:04    [17486438]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
Если получится добавить int, сделать его ПК, а uniqueidentifier оставить и проиндексировать - то станет получше, потому что хуже уже некуда?

А сейчас то кому плохо ?

Winnipuh
В частности, некластерный индекс не подвержен такому пагубному влиянию неупорядоченных значений индексируемого поля как кластерный?

Подвержен. Просто он меньше места занимает.
8 апр 15, 09:09    [17486452]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34620
Winnipuh,

Ты можешь и некластерным сделать PK, это возможно, просто (на сколько я помню) тогда остальные индексы будут ссылаться на
строки по ROWID, а не по полям кластерного индекса, и при изменения записей будет больше index maintanance.

Но строки в таблицах не обязательно меняются, или не обязательно меняются часто, поэтому вполне это в твоём конкретном случае может работать хорошо (но ты должен сам думать).
8 апр 15, 09:49    [17486658]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
хмхмхм
Guest
Winnipuh
Если получится добавить int, сделать его ПК, а uniqueidentifier оставить и проиндексировать - то станет получше, потому что хуже уже некуда?

А зачем вам тогда нужен будет uniqueidentifier?
Если все-таки зачем-то нужен, то он прекрасно конвертируется из int и bigint.
8 апр 15, 09:59    [17486720]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
хмхмхм
Winnipuh
Если получится добавить int, сделать его ПК, а uniqueidentifier оставить и проиндексировать - то станет получше, потому что хуже уже некуда?

А зачем вам тогда нужен будет uniqueidentifier?
Если все-таки зачем-то нужен, то он прекрасно конвертируется из int и bigint.


нужен, так было надизайнировано
8 апр 15, 12:52    [17487917]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
Если получится добавить int, сделать его ПК, а uniqueidentifier оставить и проиндексировать - то станет получше, потому что хуже уже некуда?

А сейчас то кому плохо ?

Winnipuh
В частности, некластерный индекс не подвержен такому пагубному влиянию неупорядоченных значений индексируемого поля как кластерный?

Подвержен. Просто он меньше места занимает.


ну, я так понимаю - кластерному индексу, всталвяются новые записи, идут непоследовательные гуиды.
8 апр 15, 12:54    [17487940]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
ну, я так понимаю - кластерному индексу, всталвяются новые записи, идут непоследовательные гуиды.

И ... ?
8 апр 15, 12:56    [17487950]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
ну, я так понимаю - кластерному индексу, всталвяются новые записи, идут непоследовательные гуиды.

И ... ?


утверждается, что недостаток в том, что большая дефрагментация и т.д.
8 апр 15, 13:09    [17488035]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Winnipuh
Glory
пропущено...

И ... ?


утверждается, что недостаток в том, что большая фрагментация и т.д.


фрагментация
8 апр 15, 13:09    [17488037]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Glory
Member

Откуда:
Сообщений: 104760
Winnipuh
Winnipuh
пропущено...


утверждается, что недостаток в том, что большая фрагментация и т.д.


фрагментация

И вы замерили ее самую в вашем конкретном случае ?
И увидели, что от нее кому-то там плохо ?
8 апр 15, 13:14    [17488078]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
msLex
Member

Откуда:
Сообщений: 8186
Winnipuh
Winnipuh
пропущено...


утверждается, что недостаток в том, что большая фрагментация и т.д.


фрагментация

Сама по себе логическая фрагментация (вы же про нее?) "неприятна", если по индексу идут запросы по диапазоном или индекс настолько не уникален, что запрос по одному значению может возвращать несколько страниц данных. Это не ваш случай.
А вот сплиты страниц, приводящие к этой самой логической (а заодно и физической) фрагментации, вещь очень неприятная. Бороться с ними можно периодическим ребилдом индекса с FF < 100. Точное значение зависит от скорости наполнения таблицы и частоты ребилдов, для начала можно попробовать 80 или 90.
8 апр 15, 13:23    [17488151]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
пропущено...


фрагментация

И вы замерили ее самую в вашем конкретном случае ?
И увидели, что от нее кому-то там плохо ?
8 апр 15, 15:03    [17489072]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Glory
Winnipuh
пропущено...


фрагментация

И вы замерили ее самую в вашем конкретном случае ?
И увидели, что от нее кому-то там плохо ?



Фрагментация бывает до 90%, и размер соответственно большой.
8 апр 15, 15:05    [17489084]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
Winnipuh

неупорядоченных значений индексируемого поля как кластерный?



Вот этого как раз можно избежать генеря последовательные гуиды. https://msdn.microsoft.com/en-us/library/ms189786.aspx
8 апр 15, 15:06    [17489100]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
msLex
Бороться с ними можно периодическим ребилдом индекса с FF < 100. Точное значение зависит от скорости наполнения таблицы и частоты ребилдов, для начала можно попробовать 80 или 90.


Это всё равно, что бороться с ветряными мельницами. А бороться надо вот так

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()));
8 апр 15, 15:08    [17489119]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
msLex
Member

Откуда:
Сообщений: 8186
a_voronin
msLex
Бороться с ними можно периодическим ребилдом индекса с FF < 100. Точное значение зависит от скорости наполнения таблицы и частоты ребилдов, для начала можно попробовать 80 или 90.


Это всё равно, что бороться с ветряными мельницами. А бороться надо вот так

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()));

а с чего вы взяли, что эти guid-ы появляются в вашей системе а не являются естественным ключом какой либо сущности появляющейся во вне?
8 апр 15, 20:08    [17490718]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
msLex
Member

Откуда:
Сообщений: 8186
Winnipuh
Фрагментация бывает до 90%

какая из фрагментаций: логическая или физическая?

Winnipuh
и размер соответственно большой.

размер чего?
Логическая фрагментация на количество занимаемых страниц не влияет.
Физическая фрагментация 90% (90% каждой страницы не заполнено) не может быть вызвана вставкой в рандомный ключ.
8 апр 15, 20:12    [17490724]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
msLex
a_voronin
пропущено...


Это всё равно, что бороться с ветряными мельницами. А бороться надо вот так

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT dbo.myfunction(NEWSEQUENTIALID()));

а с чего вы взяли, что эти guid-ы появляются в вашей системе а не являются естественным ключом какой либо сущности появляющейся во вне?


А зачем мне вообще задаваться таким вопросом?
8 апр 15, 20:39    [17490802]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
o-o
Guest
a_voronin
msLex
пропущено...

а с чего вы взяли, что эти guid-ы появляются в вашей системе а не являются естественным ключом какой либо сущности появляющейся во вне?


А зачем мне вообще задаваться таким вопросом?

открою секрет тем, кто еще не в курсе дел.
a_voronin готовится к выпуску супер-пупер сервера.
все INMEMORY.
рестор -- полностью онлайн: 16779606
никаких рандомных guid-ов. совсем.
он совсем недавно рекламировал (видимо, свой) MERGE REPLICATION, так там поголовное NEWSEQUENTIALID().
а вы все еще о каких-то земных "естественных ключах какой либо сущности появляющейся во вне"
8 апр 15, 21:25    [17490935]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
o-o
a_voronin
пропущено...


А зачем мне вообще задаваться таким вопросом?

открою секрет тем, кто еще не в курсе дел.
a_voronin готовится к выпуску супер-пупер сервера.
все INMEMORY.
рестор -- полностью онлайн: 16779606
никаких рандомных guid-ов. совсем.
он совсем недавно рекламировал (видимо, свой) MERGE REPLICATION, так там поголовное NEWSEQUENTIALID().
а вы все еще о каких-то земных "естественных ключах какой либо сущности появляющейся во вне"


И чём скажи мне MERGE REPLICATION с NEWSEQUENTIALID() не угодило ваши обоим о и о? Может я чего не понимаю. Может ушедшие в лес NEWSEQUENTIALID() знают путь из леса назад и могут повториться?
8 апр 15, 22:18    [17491059]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
o-o
Guest
a_voronin
И чём скажи мне MERGE REPLICATION с NEWSEQUENTIALID() не угодило ваши обоим о и о? Может я чего не понимаю. Может ушедшие в лес NEWSEQUENTIALID() знают путь из леса назад и могут повториться?

по поводу могут или не могут повториться читайте полностью пост от Paul White:
Is the column with uniqueidentifier data type unique?

но ок, NEWSEQUENTIALID() может быть использован в MERGE REPLICATION:

With merge replication, you have a choice: either create a column of the UNIQUEIDENTIFIER type, mark it with the ROWGUIDCOL property, create a unique index on that column, and create a DEFAULT constraint to provide the GUID value; OR merge replication will do it for you when you publish the table.

If you specify that only 2005 and 2008 servers will use the article, merge replication uses NEWSEQUENTIALID for performance - otherwise it uses NEWID, for compatibility.

только мораль сей басни совсем не "пора прекратить кого-то доставать",
а "не хочешь сесть в лужу -- проверяй, что постишь, ДО, а не ПОСЛЕ"
Картинка с другого сайта.
9 апр 15, 09:36    [17492034]     Ответить | Цитировать Сообщить модератору
 Re: Кластерный и не кластерный индекс по uniqueidentifier  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
o-o

а "не хочешь сесть в лужу -- проверяй, что постишь, ДО, а не ПОСЛЕ"
Картинка с другого сайта.


даладно
9 апр 15, 10:49    [17492501]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить