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

Откуда: Спб
Сообщений: 634
Добрый день. есть у меня процедура вставки.
ALTER PROCEDURE [dbo].[PointsInsert]
(@Identity int OUT,
@Enble bit,
@Name varchar(300),
@Nomer varchar(50),
@ParentID int,
@God int,
@PrivID int,
@Sort int,
@PointTipe int,
@DontCreatItog bit,
@ReestrEnble bit)
AS INSERT INTO dbo.tblPoints
                        (ParentID, Nomer, Name, Enble, God, PointTipe, PrivID, Sort, DontCreatItog, ReestrEnble)
VALUES      (@ParentID, @Nomer, @Name, @Enble, @God, @PointTipe, @PrivID, @Sort, @DontCreatItog, @ReestrEnble)
SET @Identity = SCOPE_IDENTITY() 
Пытаюсь вставить 800 строк. занимает где то около минуты времени. что конечно же неприемлемо долго. Никак не могу понять, почему так долго и от чего может зависить скорость вставки. В других таблицах это занимает максимум пару секунд.
9 сен 09, 15:21    [7637609]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
Glory
Member

Откуда:
Сообщений: 104760
maximIZ

Пытаюсь вставить 800 строк. занимает где то около минуты времени. что конечно же неприемлемо долго. Никак не могу понять, почему так долго и от чего может зависить скорость вставки. В других таблицах это занимает максимум пару секунд.

Т.е. 800 вызовов процедуры ?
9 сен 09, 15:29    [7637656]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 634
поочередно
9 сен 09, 15:31    [7637664]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
iljy
Member

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

удивительно вы их хоть в одну транзакцию чтоли оберните, если уж в один запрос не хотите.
9 сен 09, 15:42    [7637757]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
Glory
Member

Откуда:
Сообщений: 104760
maximIZ
поочередно

800 вызовов процедуры - это не тоже самое, что 800 инсертов
9 сен 09, 15:52    [7637835]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 634
операция выполняется на клиенте (написанному на visual studio). транзакции тут не причем. Клиент весь перербрал, поубирал все что можно. проблема я думаю в базе. а именно в этой таблице. ради эксперимента поудалял все некластерные индексы созданные мной, результат остался прежний. Что может еще влиять на скорость inserta?
9 сен 09, 15:54    [7637853]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
в одном открытом коннекте выполняете все 800 вызовов?
9 сен 09, 15:57    [7637877]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
Glory
Member

Откуда:
Сообщений: 104760
maximIZ
операция выполняется на клиенте (написанному на visual studio). транзакции тут не причем. Клиент весь перербрал, поубирал все что можно. проблема я думаю в базе. а именно в этой таблице. ради эксперимента поудалял все некластерные индексы созданные мной, результат остался прежний. Что может еще влиять на скорость inserta?

А вы разве замеряли, сколько времени у вас занимает непосредственно инсерт ?
9 сен 09, 15:57    [7637882]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
Приведите скрипт создания этой вашей таблицы. Кластерные индексы есть?

--------------------------------------------------------------
Дьявол кроется в деталях.
9 сен 09, 15:58    [7637888]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 634
автор
в одном открытом коннекте выполняете все 800 вызовов?

а вы предлогаете при каждом инсерте новый конект открывать?

автор
А вы разве замеряли, сколько времени у вас занимает непосредственно инсерт ?

Смотрел в профилере, примерно опредлил сколько это длится
9 сен 09, 16:11    [7637967]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 634
CREATE TABLE [dbo].[tblPoints](
	[ID] [int] IDENTITY(1,1) NOT NULL,
	[ParentID] [int] NOT NULL,
	[Nomer] [varchar](50) NULL,
	[Name] [varchar](300) NULL,
	[Enble] [bit] NULL CONSTRAINT [DF_tblPoints_Enble]  DEFAULT ((0)),
	[God] [int] NULL,
	[PointTipe] [int] NULL,
	[PrivID] [int] NULL,
	[Sort] [int] NULL,
	[DontCreatItog] [bit] NULL CONSTRAINT [DF_tblPoints_CreatItog]  DEFAULT ((0)),
	[ReestrEnble] [bit] NULL CONSTRAINT [DF_tblPoints_ReestrEnble]  DEFAULT ((0)),
 CONSTRAINT [PK_tblPoints] PRIMARY KEY CLUSTERED 
(
	[ID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
кластерный один есть
9 сен 09, 16:13    [7637982]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
maximIZ
автор
в одном открытом коннекте выполняете все 800 вызовов?

а вы предлогаете при каждом инсерте новый конект открывать?



как раз нет
9 сен 09, 16:13    [7637990]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
а вообще , если такой простой инсерт.
может вам стоит отсоединенный рекордсет к данной таблице сначала заинсертить своими строками, а потом присоединиться и выполнить BatchUpdate
9 сен 09, 16:16    [7638013]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
iljy
Member

Откуда:
Сообщений: 8711
maximIZ
операция выполняется на клиенте (написанному на visual studio). транзакции тут не причем. Клиент весь перербрал, поубирал все что можно. проблема я думаю в базе. а именно в этой таблице. ради эксперимента поудалял все некластерные индексы созданные мной, результат остался прежний. Что может еще влиять на скорость inserta?


транзакции могут влиять, и еще как. Если этого не делать - открывается отдельная транзакция на каждый оператор, итого 800. Открывать их на стороне клиента плохая идея в общем случае, но иногда можно.

Еще могут влиять индексы, но в вашем случае непохоже, один, кластерный, по IDENTITY - не должен тормозить. Если конечно других нет, а так же FK, триггеров и прочих интересностей.
9 сен 09, 16:17    [7638023]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 634
можно. но тут уже дело приципа. разабраться нужно. в дургих таблицах все нормально. даже пробовал в другой базе. инсерт там похож. там эксперементировал с 12000 строк. и там все проходит очень быстро. тут же, где то напортачил и не найду.
9 сен 09, 16:19    [7638042]     Ответить | Цитировать Сообщить модератору
 Re: Долгий Insert  [new]
maximIZ
Member

Откуда: Спб
Сообщений: 634
Спасибо всем. завтра утром встану на свежую голову, продолжу копать дальше.
9 сен 09, 16:22    [7638075]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить