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

Откуда: Москва
Сообщений: 1315
Блог
Периодически видел упоминания что с таблицей с кластерным индексом по идентити возможно образование "горячих точек" на последней странице индекса.
Я пока что такой проблемы не наблюдаю, при ~2000 новых записей в секунду. Каждая запись вставляется отдельной транзакцией, которая вообще-то вызывается хранимкой которая меняет/добавляет записи в нескольких разных таблицах, но на отдельных таблицах более 2000 записей в секунду не добавляется. При этом этой самой "горячей точки" не вижу.
Нагрузка на систему растет, и по некоторым прогнозам может достичь 12000 записей в секунду для отдельных таблиц. Вставки параллельные, многопроцессорная система, чистый OLTP, транзакшен лог на RamSAN.
Вопрос - можно ли ожидать появления "горячей точки" на последней странице кластерного индекса, при том что кластерный индекс по идентити? И на какой скорости она появится, если вообще появится?
10 июн 09, 22:00    [7287880]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
Glory
Member

Откуда:
Сообщений: 104760
andsm
Периодически видел упоминания что с таблицей с кластерным индексом по идентити возможно образование "горячих точек" на последней странице индекса.
Я пока что такой проблемы не наблюдаю, при ~2000 новых записей в секунду.

Эта была проблема версии SQL 7.0
11 июн 09, 10:51    [7288917]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
andsm
Периодически видел упоминания ... о "горячих точек"
Нашёл одну внятную статью про версию 6.5, но решил подаждать старожилов. Так и есть, нет никаких "периодических упоминаний" о мифических (для меня) "горячих точках".
Ту мало кто уже знает про операторы *=, *=*, =*. :)
11 июн 09, 15:05    [7290811]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
ScareCrow
Member

Откуда: Белый город
Сообщений: 16822
автор
нет никаких "периодических упоминаний"

в Оракле есть.
11 июн 09, 15:32    [7291052]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10715
Блог
Если для таблицы разрешена блокировка уровня страницы - "горячая точка" себя проявит. Это не зависит от версии...
11 июн 09, 15:42    [7291130]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5499
Блог
andsm
Вопрос - можно ли ожидать появления "горячей точки" на последней странице кластерного индекса, при том что кластерный индекс по идентити? И на какой скорости она появится, если вообще появится?
Если кластерный индекс построен по возрастающему значению, то горячая точка не появляется, она есть. И проявляет она себя не "на скорости", а всегда, когда есть больше одного добавляющего записи коннекта. ;) Она ограничивает скорость вставки, поскольку на время изменения страницы всегда накладываются latch блокировки на страницу, выстраивая все процессы в очередь к этой странице и от этого никуда не деться.
Другой вопрос, что с применением RamSAN это может не влиять сколь-либо заметно на реальную скорость вставки. ;)

К тому же, кто мешает проверить?
Ведь это совсем несложно - написать запрос, который просто добавляет данные и запустить его в паре десятков окон SSMS.
11 июн 09, 16:53    [7291581]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
andsm
Member

Откуда: Москва
Сообщений: 1315
Блог
DeColo®es
andsm
Вопрос - можно ли ожидать появления "горячей точки" на последней странице кластерного индекса, при том что кластерный индекс по идентити? И на какой скорости она появится, если вообще появится?
Если кластерный индекс построен по возрастающему значению, то горячая точка не появляется, она есть. И проявляет она себя не "на скорости", а всегда, когда есть больше одного добавляющего записи коннекта. ;) Она ограничивает скорость вставки, поскольку на время изменения страницы всегда накладываются latch блокировки на страницу, выстраивая все процессы в очередь к этой странице и от этого никуда не деться.
Латч блокировка которая при этом выставляется - PageLatch_Ex. Во время тестов латч блокировки мониторились, ожиданий на PageLatch_Ex практически не было.
DeColo®es

Другой вопрос, что с применением RamSAN это может не влиять сколь-либо заметно на реальную скорость вставки. ;)

С учетом типа латча который применяется, использование RamSan на время ожидания не влияет. RamSAN снижает, и очень хорошо, время ожидания на PAGEIOLATCH_XX и WRITELOG латчах.
DeColo®es

К тому же, кто мешает проверить?
Ведь это совсем несложно - написать запрос, который просто добавляет данные и запустить его в паре десятков окон SSMS.
Проверялось, и как написал в первом посте - ничего не нашел.
Да, и на все наиболее активные таблицы страничные блокировки запрещены.
11 июн 09, 17:36    [7291834]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10715
Блог
andsm,

А эскалацию блокировок отслеживали?
11 июн 09, 18:16    [7291996]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
andsm
Member

Откуда: Москва
Сообщений: 1315
Блог
Александр Гладченко
andsm,

А эскалацию блокировок отслеживали?

На продакшн когда то была проблемой, - происходила во время работы бекофиса и т.п., сейчас на активных таблицах она запрещена - На таблицы выставлена IX блокировка, не хочу запрещать эскалацию вообще на все таблицы через трейс флаги. Но в наиболее активное время эскалации не было, отдельные транзакции в среднем меняют/добавляют 3.5 записи, через ~1000 соединений от серверов приложений.
11 июн 09, 18:42    [7292102]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10715
Блог
А как вставляете и что из себя представляет схема таблицы (индексы, кластеризация и т.п.)?
11 июн 09, 18:47    [7292121]     Ответить | Цитировать Сообщить модератору
 Re: "Горячая точка" на кластерном индексе с идентити  [new]
andsm
Member

Откуда: Москва
Сообщений: 1315
Блог
Александр Гладченко
А как вставляете и что из себя представляет схема таблицы (индексы, кластеризация и т.п.)?

Все вставки - через вызовы хранимок. В хранимках довольно много бизнес логики, реализована машина состояний. Хранимки открывают транзакции когда им надо, вызывает внутренние хранимки и т.п. При вызове хранимок, если вызываются для модификации записей а не для вставки, им передается ID записи с которой нужно провести операции, т.е. основной поиск идет по значению первичного ключа
Схема таблиц? Так их сотни. Почти все имеют кластерный индекс по идентити, и поменять это практически нереально - почти вся защита от дедлоков построена на их использовании. Индексов чуть больше чем хотелось бы, но ни от одного невозможно отказаться - пойдут сканирования таблиц. 2 индекса - кластерный и некластераный - на самой активной таблице, 6 индексов включая кластерный на второй таблице по активности, один индекс и тот кластерный на третьей по активности таблице.
11 июн 09, 20:59    [7292409]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить