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

Откуда:
Сообщений: 65
Есть таблица. Не так много полей, не так много данных, кластерный индекс по ID полю.
В таблице более 100,000 записей, что не так много (есть таблицы и понагруженней и побольше в разы).
При попытке удалить все записи из таблицы - запрос завис на долгое время. прервал, начал удалять по ограничению по ID по несколько тысяч записей - иногда удаляет за пару секунд, иногда очень долго (что проще прервать и удалить два раза по тысяче).
Таками темпами порой и по 10 записей с трудом удаляет.
Сделал селект первой тысячи записей - тоже мучительно медленная реакция.
Сам сервер больше ничем не нагружен (база восстановлена из бэкапа на другом сервере).
sp_fkeys по данной таблице ничего не возвращает (увидел совет проверить тут же на форуме)
Пробовал смотреть Dependencies - там в списке несколько уже несуществующих таблиц.
Это может быть причиной? Или что еще может быть причиной таких аномальных тормозов таблицы, где и что смотреть?
5 фев 13, 17:50    [13879709]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
eXeLe
Или что еще может быть причиной таких аномальных тормозов таблицы, где и что смотреть?
Начните с причины торможения, посмотрите, что мешает - для этого нужно посмотреть план и стоимость удаления + блокировки в момент удаления (в момент тормозов)
5 фев 13, 17:56    [13879750]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
eXeLe
Member

Откуда:
Сообщений: 65
в плане лишь CLUSTERED INDEX DELETE 100% и собссно DELETE
5 фев 13, 18:00    [13879771]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
eXeLe
в плане лишь CLUSTERED INDEX DELETE 100% и собссно DELETE
Ну а стоимость как5ая, сколько страниц и цпу, цпу и дюрэйшен сильно отличаются?
5 фев 13, 18:02    [13879783]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
Гость333
Member

Откуда:
Сообщений: 3683
eXeLe
В таблице более 100,000 записей, что не так много

И часто из таблицы удаления были? Может, там много неиспользуемых страниц данных? Что возвращает sp_spaceused 'ИмяТаблицы'?

eXeLe
удалить все записи из таблицы

TRUNCATE не подходит?
5 фев 13, 18:08    [13879807]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
eXeLe
Member

Откуда:
Сообщений: 65
alexeyvg
Ну а стоимость как5ая, сколько страниц и цпу, цпу и дюрэйшен сильно отличаются?

alexeyvg,
удалил 10.000 строк за 14 минут (удивился, что вообще удалилось)
I/O Cost: 26.9
CPU Cost: 0.011
Operation Cost: 29.9

Гость333
TRUNCATE не подходит?

надо будет попробовать.
6 фев 13, 09:20    [13881821]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
_ч_
Member

Откуда:
Сообщений: 1427
eXeLe
Сделал селект первой тысячи записей - тоже мучительно медленная реакция.


А операция select сколько по-времени у Вас длится? План какой? Clustered index scan?
Уверены, что нет триггеров на delete на таблице?
6 фев 13, 11:42    [13882828]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
eXeLe
Member

Откуда:
Сообщений: 65
_ч_
eXeLe
Сделал селект первой тысячи записей - тоже мучительно медленная реакция.


А операция select сколько по-времени у Вас длится? План какой? Clustered index scan?
Уверены, что нет триггеров на delete на таблице?

Триггеров у данной таблицы вообще никаких нет
Select на 1000 первых записей - больше двух минут. А плане Clustered index scan.

проверил другую рандомную таблицу - время селекта 1000 записей - меньше секунды.
6 фев 13, 11:53    [13882961]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
Crimean
Member

Откуда:
Сообщений: 13148
а структурку таблички покажите?
6 фев 13, 11:58    [13883018]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
Гость333
Member

Откуда:
Сообщений: 3683
eXeLe
Select на 1000 первых записей - больше двух минут.

sp_spaceused покажете? Может, в этой вашей таблице мильён ghost records.
6 фев 13, 12:07    [13883105]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
Crimean
Member

Откуда:
Сообщений: 13148
а еще fillfactor интересен
6 фев 13, 12:08    [13883114]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
eXeLe
Member

Откуда:
Сообщений: 65
Crimean
а структурку таблички покажите?


USE [database_name]
GO

/****** Object:  Table [dbo].[TABLE_NAME]    Script Date: 02/06/2013 12:06:03 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO

CREATE TABLE [dbo].[TABLE_NAME](
	[TABLE_NAME_ID] [int] IDENTITY(1,1) NOT NULL,
	[TASK_ID] [int] NULL,
	[USER_ID] [int] NULL,
	[STATE] [varchar](50) NOT NULL,
	[DT_STAMP] [datetime] NULL,
	[NOTES] [nvarchar](max) NULL,
	[ACTION_CODE] [nvarchar](255) NOT NULL,
	[DOCUMENT_DATA] [nvarchar](max) NULL,
	[BP_STATE] [varchar](50) NULL,
	[PROCESS_GUID] [uniqueidentifier] NULL,
 CONSTRAINT [PK_TABLE_NAME] PRIMARY KEY CLUSTERED 
(
	[TABLE_NAME_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]

GO

SET ANSI_PADDING OFF
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Идентификатор|EN:ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME', @level2type=N'COLUMN',@level2name=N'TABLE_NAME_ID'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Идентификатор задания|EN:Task ID' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME', @level2type=N'COLUMN',@level2name=N'TASK_ID'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Исполнитель шага задания|EN:Task modifier' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME', @level2type=N'COLUMN',@level2name=N'USER_ID'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Текущий тип задания|EN:Current task type' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME', @level2type=N'COLUMN',@level2name=N'STATE'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Время выполнения шаг|EN:Modification date' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME', @level2type=N'COLUMN',@level2name=N'DT_STAMP'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Примечания|EN:Notes' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME', @level2type=N'COLUMN',@level2name=N'NOTES'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Выполненное действие|EN:Action' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME', @level2type=N'COLUMN',@level2name=N'ACTION_CODE'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Документ|EN:Document data' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME', @level2type=N'COLUMN',@level2name=N'DOCUMENT_DATA'
GO

EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'RU:Движение заданий|EN:Task flow' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'TABLE_NAME'
GO

ALTER TABLE [dbo].[TABLE_NAME] ADD  CONSTRAINT [DF_TABLE_NAME_ACTION_CODE]  DEFAULT ('Unknown') FOR [ACTION_CODE]
GO
6 фев 13, 12:10    [13883138]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
Crimean
Member

Откуда:
Сообщений: 13148
еще раз повторяю просьбу про филлфактор
ну и у вас же блобы в табличке! от того и медленно все
для проверки скорости вычитки - небось "select top 1000 *" делаете?
сделайте "select top 1000 TABLE_NAME_ID" - будете удивлены скоростью
6 фев 13, 12:22    [13883238]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
eXeLe
Member

Откуда:
Сообщений: 65
Гость333
sp_spaceused покажете? Может, в этой вашей таблице мильён ghost records.


Rows:73408 (часть данных уже потихоньку удалил, но разобраться хочется)
Reserved:7959544 KB
Data: 7903480 KB
Index_size:368 KB
Unused: 55696 KB

Crimean
а еще fillfactor интересен

для индекса не выставлен, так что скорее всего 0/100.

Crimean
ну и у вас же блобы в табличке! от того и медленно все

правильно ли я понимаю, что данная таблица по сути - хранилище данных, соответственно и размер большой и время удаления большое?
6 фев 13, 12:39    [13883437]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
Гость333
Member

Откуда:
Сообщений: 3683
eXeLe
Data: 7903480 KB

Устанете удалять такой объём через DELETE :)
Сделайте TRUNCATE, если вам действительно нужно удалить все записи. При этом учтите, что значение identity-поля сбросится к первоначальному seed-значению.
6 фев 13, 12:51    [13883543]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
RESEARCH
Member

Откуда:
Сообщений: 186
а не проще ли сделать DROP TABLE предварительно сформировав скрипт на создание этой же таблицы
6 фев 13, 13:52    [13884257]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
eXeLe
Member

Откуда:
Сообщений: 65
RESEARCH
а не проще ли сделать DROP TABLE предварительно сформировав скрипт на создание этой же таблицы

а мало ли какие неизвестные мне взаимосвязи потрутся.

сделаю truncate наверное
6 фев 13, 13:56    [13884300]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
RESEARCH
Member

Откуда:
Сообщений: 186
вас только что просили предоставить все взаимосвязи и зависимости вы сказали что нет ничего

есть другой вариант без удаления старой таблицы на всякий пожарный

insert into table 2 select * from t1
sp_rename 't1','t_old'
sp_rename 'table2','t1'
6 фев 13, 13:57    [13884322]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
RESEARCH
Member

Откуда:
Сообщений: 186
insert into table 2 select top 1 * from t1
6 фев 13, 13:58    [13884332]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
офигеть
Guest
RESEARCH
insert into table 2 select top 1 * from t1

никак не пойму тайный смысл сего действа.
ну еще бы куда ни шло
select *
into t2
from t1
where 1 = 2
,
типа лень объект скриптовать, так хоть струкруру перенести.
но если идет INSERT, то структуру предварительно создали,
так занафига туда 1 строку переливать?
6 фев 13, 14:20    [13884564]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31430
eXeLe
правильно ли я понимаю, что данная таблица по сути - хранилище данных, соответственно и размер большой и время удаления большое?
Это вам виднее, ваша ведь таблица :-)

Но размер немаленький, 8 гигов, да с логированием, долго будует удаляться.

Скачет время видимо из за того, что размер бывает разный.

По возможности конечно меняйте на truncate
6 фев 13, 14:21    [13884578]     Ответить | Цитировать Сообщить модератору
 Re: Медленно "работает" таблица  [new]
Crimean
Member

Откуда:
Сообщений: 13148
+ с блобами всегда работа существенно медленнее из-за их природы. особенно если они не in-row
6 фев 13, 14:56    [13884886]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить