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

Откуда:
Сообщений: 517
День добрый!
Есть относительно большая таблица(порядка двадцати милионов строк):
CREATE TABLE [Dwh].[MyTable](
[ftLocalId] int,
[ftHolderCompanyId] int,
col1 uniqueidentifier,
col2 uniqueidentifier,
col3 uniqueidentifier,
col4 uniqueidentifier,
col5 uniqueidentifier,
Col6 int,
col7 int
CONSTRAINT [pk_MyTable_c_ftLocalId#HolderCompanyId] PRIMARY KEY CLUSTERED
(
[ftLocalId] ASC,
[ftHolderCompanyId] ASC
)
)
В таблице есть два еще два некластерных индекса, скажем IX_1 по col1 included col2,col3, col6 и второй IX_2 по col2 included col3,col4,col5

переодигески в эту таблицу делается инсерт порядка нескольких тысяч строк, все время ftLocalId растет.
Так вот, обычно инсерт занимает скажем 3 секунды, если делаю ребилд индексам, то следующий инсерт может занять 20 секунд, последующие инсерты тоже занимают порядка трех секунд, и так до очередного ребилда.

Обратил внимание, что если любой из индексов удалить- то время инсерта практически не изменяется после ребилда, но если оба индекса включены, то получается такя вот фигня.
Т.е. как-будто бы есть какая-то взимосвязь между этими индексами и их совокупность приводит к такой проблеме.
Филл фактор понижал до 80, до 50... Есть ощутимый прирост, но все еще после ребилда время инсерта в раза 3 выше.
На что нужно обратить внимание? Как могут два индекса "конфликтовать" между собой?

Спасибо!
9 июл 15, 14:23    [17872315]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
Glory
Member

Откуда:
Сообщений: 104760
abrashka
инсерт порядка нескольких тысяч строк,

И как выглядит этот insert ?
9 июл 15, 14:24    [17872329]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
abrashka
Member

Откуда:
Сообщений: 517
Glory,

INSERT INTO MyTable (col....)
SELECT Col... from TTT where localId>@n

Пробовал делать INSERT INTO MyTable (col....) with (tablock)- не помогает
9 июл 15, 14:26    [17872357]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
o-o
Guest
1. ребилд делаете с каким FF, 100?
2. зачем в ПК добавили ftHolderCompanyId, если ftLocalId "все время растет"?
9 июл 15, 14:27    [17872364]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
abrashka
Member

Откуда:
Сообщений: 517
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
9 июл 15, 14:27    [17872367]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
abrashka
Member

Откуда:
Сообщений: 517
o-o,

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

ftHolderCompanyId- так исторически сложилось, в принципе это лишнее
9 июл 15, 14:30    [17872399]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
abrashka
o-o,

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

ftHolderCompanyId- так исторически сложилось, в принципе это лишнее


есть еще pad_index, ну и скрипт для ребилда индекса показали бы. вы каждому индексу этот fill_factor проставляете? :)
9 июл 15, 14:37    [17872488]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
o-o
Guest
abrashka
o-o,

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

ftHolderCompanyId- так исторически сложилось, в принципе это лишнее

ну так ftHolderCompanyId идут вразнобой,
чем лучше индекс упакован при ребилде, тем больше времени на сплиты.
а когда после первого инсерта уже индекс снова разрежен благодаря вашим ftHolderCompanyId,
всем становится хорошо, в смысле наполовинили страниц, теперь есть, куда вставлять без сплитов
9 июл 15, 14:41    [17872525]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
o-o
Guest
по-моему, я несу фигню, простите.
если первая колонка все время возрастает, т.e. не повторяется, то какие еще сплиты???
9 июл 15, 14:45    [17872558]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o
по-моему, я несу фигню, простите.
если первая колонка все время возрастает, т.e. не повторяется, то какие еще сплиты???


у него есть еще и такие IX_1 по col1 included col2,col3, col6 и второй IX_2 по col2 included col3,col4,col5
9 июл 15, 14:51    [17872614]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
o-o
Guest
churupaha
o-o
по-моему, я несу фигню, простите.
если первая колонка все время возрастает, т.e. не повторяется, то какие еще сплиты???


у него есть еще и такие IX_1 по col1 included col2,col3, col6 и второй IX_2 по col2 included col3,col4,col5

а, ну хорошо, сделаем вид, что я про них.
(на самом деле читаю сегодня по диагонали и определения остальных индексов впервые вижу)
9 июл 15, 14:57    [17872663]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
o-o
churupaha
пропущено...


у него есть еще и такие IX_1 по col1 included col2,col3, col6 и второй IX_2 по col2 included col3,col4,col5

а, ну хорошо, сделаем вид, что я про них.
(на самом деле читаю сегодня по диагонали и определения остальных индексов впервые вижу)


это жара все видать. таже фигня.
9 июл 15, 15:06    [17872755]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
abrashka
Member

Откуда:
Сообщений: 517
o-o,

Спасибо!
Сорри, забыл сказать, что HolderCompany в этом случае все время равен 1.
9 июл 15, 15:34    [17873042]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
abrashka
Member

Откуда:
Сообщений: 517
И еще такой момент, для примера привел таблицу с несколькими полями, но на самом деле речь идет о тажлице содержащей 65 полей, среди которых около трети это GUID и есть XML.
9 июл 15, 15:39    [17873085]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
o-o
Guest
abrashka
забыл сказать, что HolderCompany в этом случае все время равен 1.

нет, там дело не в HolderCompany(это от жары), а в ваших остальных индексах по гуиду.
это они упаковываются при ребилде и резреживаются при вставке.
с ПК все ок, он пишется в хвост.
как посоветовал churupaha, можно попробовать задейстовать pad_index, потому что ваши гуиды в ключе индекса
сплитят не только листья
9 июл 15, 15:47    [17873145]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
abrashka,

Просто не делайте ребилд этих индексов. Ибо зачем?
10 июл 15, 02:56    [17875027]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться с медленным инсертом плз.  [new]
Glory
Member

Откуда:
Сообщений: 104760
abrashka
INSERT INTO MyTable (col....)
SELECT Col... from TTT where localId>@n

Пробовал делать INSERT INTO MyTable (col....) with (tablock)- не помогает

А как вы в этом запросе отделяете время select от времени insert ?
10 июл 15, 09:39    [17875343]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить