Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
04.12.2001, 14:01
|
|||
|---|---|---|---|
Merge репликация и кластеризованные индексы |
|||
|
#18+
Люди, объясните непонятку! Мучаясь с репликацией в Access, вычитала рекомендации ( http://www.linuxworldconferenceandexpo.ru/win2000/2000/06/054p.htm ): Для подготовки центральной БД к работе в распределенной среде нужно сделать следующее: 1. Применить поля с типом ROWGUIDCOL в качестве первичных ключей. (У поля ROWGUIDCOL должен быть еще признак ISROWGUID – Прим. ред.). 2. Сформировать все таблицы так, чтобы эти поля с первичными ключами были самыми последними 3. Для первичных ключей таблиц добавить атрибут NONCLUSTERED: 4. Указать, что вся ссылочная целостность не должна учитываться в процессе тиражирования Если с пп.1 и 4 все понятно, то 2 и 4 вызывают следующие вопросы (ответ в BOL и на форуме искала): 2. - Каким образом порядок полей в таблице может затрагивать процесс репликации (Это не проблема, но непривычно - ключевое поле в хвосте) 3. - Чем мешают репликации кластер. индексы на первичных ключах? У меня почти все первичные ключи CLUSTERED. Для некоторых таблиц их может и нужно пересмотреть, но есть таблицы, в которых других кандидатов на индексы нет вообще (напр. - ключ, название, комментарий). Неужели их лучше оставлять без класт. индексов??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.12.2001, 16:07
|
|||
|---|---|---|---|
Merge репликация и кластеризованные индексы |
|||
|
#18+
Люди, отзовитесь!!!!!! Больше всего из вышесказанного интересует, насколько разумно убирать кластерный индекс из таблицы, используемой больше для подстановок (т.е. имеющей два-три поля)??? У меня таких таблиц много, и они (пока) не очень большие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
05.12.2001, 18:36
|
|||
|---|---|---|---|
Merge репликация и кластеризованные индексы |
|||
|
#18+
Да у людей, которых ты просишь отозваться, эта статья вызвала такое же недоумение, как и у тебя. Поэтому все и молчат, чтобы не показаться глупыми. Может, имеет смысл задать эти вопросы автору статьи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2001, 10:21
|
|||
|---|---|---|---|
Merge репликация и кластеризованные индексы |
|||
|
#18+
Garya, спасибо за совет. Как-то мне не пришло в голову помучить автора. Уже написала. Если кому-нибудь это интересно и если будет ответ от автора - доложусь о результате. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2001, 11:34
|
|||
|---|---|---|---|
|
|||
Merge репликация и кластеризованные индексы |
|||
|
#18+
Ну вот это-то понятно почему: "3. Для первичных ключей таблиц добавить атрибут NONCLUSTERED" Кластерный индекс производительно задавать на монотонных уникальных значениях, а GUID не обладает никакой монотонностью, а обладает только уникальностью. Если GUID делать кластерным индексом, это будет приводить к переорганизации расположения данных при каждом новом значении ключа. Про "2. Сформировать все таблицы так, чтобы эти поля с первичными ключами были самыми последними" ничего не могу сказать. По-моему, это бред. Или автор хотел что-то другое сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2001, 13:15
|
|||
|---|---|---|---|
Merge репликация и кластеризованные индексы |
|||
|
#18+
2 Глеб Уфимцев: А если в таблице Primary Key - GUID, и FOREIGN KEY - GUID (часто используемый в WHERE, ORDER BY и GROUP BY), то насколько целесообразно делать кластерным индексом этот FOREIGN KEY ? Или вообще обойтись без кластерных индексов, раз Primary Key - GUID? (База данных строилась с расчетом на репликацию, и везде, где обновляются данные на подписчике, применяла GUID в качестве ключевого поля) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.12.2001, 13:52
|
|||
|---|---|---|---|
|
|||
Merge репликация и кластеризованные индексы |
|||
|
#18+
Лучше вообще не иметь кластерного индекса, чем его иметь в виде GUID. На вторичные ключи тоже лучше сделать некластерные индексы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.12.2001, 18:58
|
|||
|---|---|---|---|
Merge репликация и кластеризованные индексы |
|||
|
#18+
Глеб, логика в твоих рассуждениях, несомненно, есть. Поэтому я не решился возражать до того, как не удостоверился на практике. А практика такова. В моей БД фактически все таблицы имеют ключевое поле типа uniqueidentifier. И фактически ключевой индекс сделан кластерным. View, построенный на совокупности таких таблиц отфильтровывает около 1000 записей из 35000 за 1,2 сек. Перестраиваю все индексы ключевых полей в некластерные... Нет, не подумай. Все, как положено - апдейчу статистики, запускаю рекомпиляцию всех скриптов, для надежности перезапускаю сервер. Теперь View возвращает записи через 1 мин 4 сек. Разница в 50 раз! И говорит как раз о противоположном. Теперь о GUID, как это я понимаю. Да, в понятийном смысле нельзя сравнивать GUID на больше/меньше (раньше/позже). Тем не менее на внутреннем уровне SQL-сервер это делает. Иначе вообще не было смысла в построении индекса (любого) по полям этого типа. Как известно, алгоритмы поиска информации по индексам используют бинарные алгоритмы со сравнением именно на больше/меньше. Без этого просто индес бы не работал. Рассмотрим скрипт, который часто встречается в люом запросе: select A.Fld from Table1 A inner join Table2 B on A.ID=B.ID where .... Если ID типа UNIQUEIDENTIFIER, то join по кластерному индексу работает быстрее, чем по некластерному. Возможно, анализатор запросов выбирает не совсем оптимальный план выполнения запроса при отсутствии кластерного индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
14.12.2001, 07:10
|
|||
|---|---|---|---|
|
|||
Merge репликация и кластеризованные индексы |
|||
|
#18+
Безусловно, выборка при наличии кластерного индекса быстрее. Однако, операции обновления превращаются в кошмар, если кластерный индекс - GUID. Но, я вовсе не возражал против наличия кластерного индекса в таблице вообще, а лишь против назначения GUID кластерным. Если иметь кластерный индекс в таблице, но не GUID, а более удобное поле (см. ниже), то можно добиться хорошей производительности одновременно и на выборке, и на обновлении. При этом поле с GUID будет некластерным. Напомню, что все некластерные индексы ссылаются на кластерный индекс (если он есть). Удобное поле для кластерного индекса: 1. Поле с IDENTITY или прочей нумерацией по-порядку (например, номер документа) 2. Поле с датой, если это поле достаточно селективное. Если даты очень далеки от монотонности, то необходимо задать средний fill-фактор (50-75%). Если даты близки к монотонному возрастанию, то fill-фактор по-умолчанию. 3. Если нет ничего похожего на п.п. 1-2, то подойдет естественный ключ (например, название документа) со средним fill-фактором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=46&mobile=1&tid=1824632]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 382ms |

| 0 / 0 |
