Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу? / 17 сообщений из 17, страница 1 из 1
22.07.2019, 14:42
    #39839959
omarushchak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
Добрый день, всем!

Если имеется таблица с кластеризированным индексом, которая находится под нагрузкой (вставки и обновления). Как избежать разбиения страниц. Как вариант сделать низкий фактор заполнения страниц. Как мне кажется, это приведет к росту числа страниц и объему базы данных или я не прав?
...
Рейтинг: 0 / 0
22.07.2019, 14:46
    #39839962
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
omarushchakДобрый день, всем!

Если имеется таблица с кластеризированным индексом, которая находится под нагрузкой (вставки и обновления). Как избежать разбиения страниц. Как вариант сделать низкий фактор заполнения страниц. Как мне кажется, это приведет к росту числа страниц и объему базы данных или я не прав?

Вставлять только в конец индекса, при апдейтах не увеличивать размер записи
...
Рейтинг: 0 / 0
22.07.2019, 16:13
    #39840020
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
А кластеризованный индекс у вас по полю какого типа?
...
Рейтинг: 0 / 0
22.07.2019, 16:25
    #39840031
omarushchak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
uaggsterА кластеризованный индекс у вас по полю какого типа?

varchar
...
Рейтинг: 0 / 0
22.07.2019, 16:30
    #39840034
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
omarushchakКак вариант сделать низкий фактор заполнения страниц. Как мне кажется, это приведет к росту числа страниц и объему базы данных или я не прав?Да, размер увеличится, но зато не будет разбиения. И делать редилд кластерного индекса, когда страницы заполнятся.
Ну, или перепроектировать модель данных, если таблитца очень большая.
...
Рейтинг: 0 / 0
22.07.2019, 16:36
    #39840038
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
Нуу... Если бы стояла задача кровь из носу добиться снижения разбиения страниц, я бы:
1. Изменил бы ключ с varchar на int identity.
2. Построил бы уникальный индекс по "бывшему" ключевому полю varchar.
3. Но, предварительно, заменил бы все поля varchar на char.

... и тогда условия msLex - выполнятся автоматически.
:-)
...
Рейтинг: 0 / 0
22.07.2019, 16:37
    #39840039
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
alexeyvgomarushchakКак вариант сделать низкий фактор заполнения страниц. Как мне кажется, это приведет к росту числа страниц и объему базы данных или я не прав?Да, размер увеличится, но зато не будет разбиения. И делать редилд кластерного индекса, когда страницы заполнятся.
Ну, или перепроектировать модель данных, если таблитца очень большая.
и как часто вы предлагаете это делать? 3 инсёрта один ребилд? филфактор может помогать при достаточно распределённых вставках, и зачем тогда вообще такой кластарный?
...
Рейтинг: 0 / 0
22.07.2019, 16:39
    #39840041
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
а varchar это вы так guid храните?
...
Рейтинг: 0 / 0
22.07.2019, 16:46
    #39840049
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
TaPaKи как часто вы предлагаете это делать? 3 инсёрта один ребилд? филфактор может помогать при достаточно распределённых вставках, и зачем тогда вообще такой кластарный?

Ну, например, все обращения к данным идут по естественному ключу, распределение которого, по природе своей, равномерно; например, какой-либо хеш (md5, sha и т.п.)

Плюс ко всему, расщеплению подвержены не только кластерные индексы.
...
Рейтинг: 0 / 0
22.07.2019, 16:47
    #39840050
omarushchak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
TaPaK,

точно
...
Рейтинг: 0 / 0
22.07.2019, 16:48
    #39840051
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
msLexTaPaKи как часто вы предлагаете это делать? 3 инсёрта один ребилд? филфактор может помогать при достаточно распределённых вставках, и зачем тогда вообще такой кластарный?

Ну, например, все обращения к данным идут по естественному ключу, распределение которого, по природе своей, равномерно; например, какой-либо хеш (md5, sha и т.п.)

Плюс ко всему, расщеплению подвержены не только кластерные индексы.
не корректно написал последнюю часть. Вопрос как к такому ключу пришли - избавлялись от войны за полслуднюю страницу как советуют переходом на int identity или просто решили что поле cityName будет ключём
...
Рейтинг: 0 / 0
22.07.2019, 16:50
    #39840053
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
TaPaKфилфактор может помогать при достаточно распределённых вставкахДа, конечно, при распределённых. А иначе и разбиения не будет, если не распределённые (точнее, разбиение не будет мешать).
TaPaKи как часто вы предлагаете это делать? 3 инсёрта один ребилд?Когда средняя средняя заполненность страниц вырастет до некоего неприемлемого значения (определить интуитивно) :-)
TaPaKи зачем тогда вообще такой кластарный?Например, этот кластерный создан сторонней компанией-разработчиком, и придётся с этим жить. Ну, или полномочный менеджер должен издать приказ "я всё про***, приказываю переделать систему, а меня уволить".
...
Рейтинг: 0 / 0
22.07.2019, 16:53
    #39840055
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
alexeyvg,

авторДа, конечно, при распределённых. А иначе и разбиения не будет, если не распределённые (точнее, разбиение не будет мешать).
у тс guid и мешает?

вставка через NEWSEQUENTIALID ?
...
Рейтинг: 0 / 0
22.07.2019, 16:54
    #39840057
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
TaPaKне корректно написал последнюю часть. Вопрос как к такому ключу пришли - избавлялись от войны за полслуднюю страницу как советуют переходом на int identity или просто решили что поле cityName будет ключём
Насчет кластерного согласен, что в большинстве случаев такой ключ будет не лучшим решение (хотя и тут есть исключения), но если все равно нужен доступ по такому полю - индекс нужен, и он тоже будет расщепляться.
...
Рейтинг: 0 / 0
22.07.2019, 17:02
    #39840065
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
alexeyvgНапример, этот кластерный создан сторонней компанией-разработчиком, и придётся с этим жить. Ну, или полномочный менеджер должен издать приказ "я всё про***, приказываю переделать систему, а меня уволить".
Что-то я сильно сомневаюсь, что там всё завязано на кластерный индекс. Скорее - кластерный индекс используется как первичный ключ.
Ну, пусть сделают первичный ключ - некластерным, а кластерный - по другим полям.
...
Рейтинг: 0 / 0
22.07.2019, 20:11
    #39840172
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
uaggsteralexeyvgНапример, этот кластерный создан сторонней компанией-разработчиком, и придётся с этим жить. Ну, или полномочный менеджер должен издать приказ "я всё про***, приказываю переделать систему, а меня уволить".
Что-то я сильно сомневаюсь, что там всё завязано на кластерный индекс. Скорее - кластерный индекс используется как первичный ключ.
Ну, пусть сделают первичный ключ - некластерным, а кластерный - по другим полям.Понятно, что первичный ключ.
И как его поменять, если это приложение не ваше?
Попробуйте, поменяйте ПК и ключи в базе 1С :-)
...
Рейтинг: 0 / 0
23.07.2019, 08:12
    #39840291
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу?
alexeyvg, ну, во-первых, неприличными словами - не выражаться! А то полстраны уже скриптами из 1С - дьявола вызывают.
А во-вторых - ну, первичный то ключ и кластерный индекс даже в 1С можно разделить. Только а) зачем и б) до первого обновления конфигурации...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как избежать разбиение страниц при интенсивной транзакционной нагрузке на таблицу? / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]