AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Blogs
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.07.2011, 15:31   #1  
Blog bot is offline
Blog bot
Участник
 
25,644 / 848 (80) +++++++
Регистрация: 28.10.2006
Этому вопросу посвящена новая техническая возможность, появляющаяся после установки соответствующего платформенного обновления.



Подробно описано:

http://blogs.msdn.com/b/nav/archive/...ort-usage.aspx

Решил воспользоваться этим блог постом, а так же советами из комментариев (поле GUID и COMMIT).



P.S.

Теория использования GUID поля для снижения зоны потенциальной блокировки:

http://dynamicsuser.net/blogs/stryk/...ql-server.aspx





Картинки:













Подробнее... http://blogs.technet.com/b/alexef/ar...reportlog.aspx
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.
Старый 27.07.2011, 11:15   #2  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
Производительность GUID
Шон МакКоун (Sean McCown)

Все чаще и чаще я сталкиваюсь с тем, что разработчики по каким­то причинам хотят использовать идентификаторы GUID в качестве первичных ключей, и, что еще хуже, в кластеризованных индексах. Никак не возьму в толк, зачем надо применять GUID. Во­первых, они огромного размера — раза в четыре больше, чем целое, используемое в качестве первичного ключа.

Приведем основные причины, по которым НЕ следует пользоваться GUID.



· Они слишком большие, чтобы стать эффективным индексом. Чем меньше индекс, тем лучше, — это позволяет быстро найти значение ключа. Ни при каких условиях 16­байтный индекс не сравнится с 4­байтным.

· Их слишком трудно запоминать администраторам баз данных, и потому сложно вникать в вопросы с данными.

· Они не гарантируют уникальность. Вероятность того, что значение GUID будет уникальным, весьма велика, но это не 100%.

· Они слишком быстро приводят к фрагментации таблицы. Поскольку они совершенно случайны, нельзя знать заранее, где произойдет следующая вставка, поэтому кластеризация по этому ключу НЕПРЕМЕННО вызовет фрагментацию.

Поэтому не позволяйте своим разработчикам использовать GUID, особенно в системах, которые вам самим придется сопровождать. Проблема состоит в том, что ничего нельзя менять без твердых цифр и никто не проводил тестирования такого рода вещей. А вот я протестировал! Разница в производительности потрясает. Конечно, найдутся разработчики, которые все же будут настаивать на применении этих идентификаторов, но пусть стараются. Однако одно несомненно — ничего нельзя менять без обоснования в виде реальных цифр. Но теперь вы можете пойти к ним и показать, почему в базах данных лучше обойтись без GUID.

Заключение
У идентификаторов GUID есть своя ниша, но она, разумеется, не расположена рядом с кластеризованными индексами. Если вам все же приходится хранить GUID, создайте для него столбец где­нибудь в конце таблицы, а кластеризованный индекс стройте по ID, а не по нему. Тогда вы сможете обращаться с запросом к нужному GUID, а затем взять соответствующий ему ID и выполнять все, кроме первоначального поиска, по этому маленькому полю ID. По­моему, очень забавно, что разработчики получают требование уникальности, — их мозг попадает в заложники к GUID. Им в голову не приходит ничего иного. Один раз меня даже назвал идиотом один программист, который считал, что логические требования — это самый важный аспект приложения и что учитывать в приложении соображения производительности — кратчайший путь к провалу. Попробуйте­ка воспользоваться этой логикой и запустите 500 или 1000 одновременно работающих пользователей. А когда ваше приложение встанет, позвоните своему заказчику и скажите ему, что производительность приложения не такая уж важная штука.
Старый 27.07.2011, 11:36   #3  
dmites is offline
dmites
Участник
Аватар для dmites
 
221 / 14 (1) ++
Регистрация: 10.08.2005
Ну и тесты (англ.) http://www.sql-server-performance.co...d-performance/

выборка и вставка записей хуже в разы
Старый 27.07.2011, 14:07   #4  
finn is offline
finn
Участник
 
136 / 24 (1) +++
Регистрация: 26.12.2001
Адрес: Москва
Мои 5 копеек -

В статье, где тесты пишут:

"Recently, I was asked my opinion on a database design schema our company developers were working on. When I heard they were using GUID’s (Global Unique Identifier) as PK’s (primary keys), my jaw about dropped."

В данном случае No. - Primary Key. UID - не Primary Key. По остальному спорить не буду. Не силен в практической теме.
Старый 27.07.2011, 14:35   #5  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от finn Посмотреть сообщение
Мои 5 копеек -

В статье, где тесты пишут:

"Recently, I was asked my opinion on a database design schema our company developers were working on. When I heard they were using GUID’s (Global Unique Identifier) as PK’s (primary keys), my jaw about dropped."

В данном случае No. - Primary Key. UID - не Primary Key. По остальному спорить не буду. Не силен в практической теме.
Здесь проблема в том, что индекс по UID - кластерный.
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:12.