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

Откуда:
Сообщений: 55
Запустил удаление в таблицы, примерно 50% от объема всей БД.

Но такое впечатление что ничего не происходит
12 фев 18, 12:35    [21185071]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
DBCC SQLPERF(LOGSPACE);

Сначала показывал что лог растет и % его использования.

Сейчас рост остановился.



Удаление еще не выполнелось. Висит уже очень давно.
12 фев 18, 12:36    [21185079]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Свободное место в БД сначала тоже росло, сейчас свободное место не меняется уже минут 20.


К БД подключен 1 пользоватлель - я.
12 фев 18, 12:37    [21185088]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
блокировки отсутствуют.
12 фев 18, 12:39    [21185099]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Сессия удаления висит в SUSPENDED
12 фев 18, 12:40    [21185103]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
дампер
Сессия удаления висит в SUSPENDED

ну раз в ,suspended значит ждет.
смотрите, что именно ждет: sys.dm_os_waiting_tasks
но наверное, лог растет, а ждете зануление лога.

50% проще перелить с мининальным логированием,
удаление же всегда логируется полно
12 фев 18, 12:45    [21185116]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Yasha123
дампер
Сессия удаления висит в SUSPENDED

ну раз в ,suspended значит ждет.
смотрите, что именно ждет: sys.dm_os_waiting_tasks
но наверное, лог растет, а ждете зануление лога.

50% проще перелить с мининальным логированием,
удаление же всегда логируется полно



Тоже думаю уже перезалить (((



Ждет вот что:

PAGEIOLATCH_SH
12 фев 18, 12:48    [21185123]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

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

Если тут ничео не выводит

SELECT * FROM sys.sql_expression_dependencies
WHERE referencing_id = OBJECT_ID(N'my_big_table'); 


Получается что зависимостей у теблицы нет и если из нее удалять - из других таблиц по внешним ключам не удаляется?
12 фев 18, 12:52    [21185136]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
дампер
Ждет вот что:

PAGEIOLATCH_SH

учитался значит
12 фев 18, 12:53    [21185139]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Yasha123
дампер
Ждет вот что:

PAGEIOLATCH_SH

учитался значит


Не понял

Диск слабый, инфа 100%
12 фев 18, 12:54    [21185141]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
дампер
Получается что зависимостей у теблицы нет и если из нее удалять - из других таблиц по внешним ключам не удаляется?

в плане можно посмотреть,
только эта таблица или еще что-то
12 фев 18, 12:55    [21185149]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Yasha123
дампер
Получается что зависимостей у теблицы нет и если из нее удалять - из других таблиц по внешним ключам не удаляется?

в плане можно посмотреть,
только эта таблица или еще что-то


Хорошая идея.

Но пока удаление идет не дает удалить даже одну строчку и даже в другом диапазоне (
12 фев 18, 13:02    [21185165]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
зачем еще что-то удалять,
когда надо всего лишь глянуть план?
---
учитался = много с диска читает, ожидания на чтении и диска
12 фев 18, 13:06    [21185175]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Yasha123
зачем еще что-то удалять,
когда надо всего лишь глянуть план?
---
учитался = много с диска читает, ожидания на чтении и диска



Отменил запрос.

Затем кильнул сессию.


Пока блокировка висит.

Жду ролбэка. Чтобы 1 строчку удалить. И план глянуть.
12 фев 18, 13:07    [21185182]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
дампер
Yasha123
зачем еще что-то удалять,
когда надо всего лишь глянуть план?
---
учитался = много с диска читает, ожидания на чтении и диска



Отменил запрос.

Затем кильнул сессию.


Пока блокировка висит.

Жду ролбэка. Чтобы 1 строчку удалить. И план глянуть.

заставь *** богу молиться, он лоб расшибет
12 фев 18, 13:14    [21185200]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
дампер
Member [заблокирован]

Откуда:
Сообщений: 55
Yasha123
дампер
пропущено...



Отменил запрос.

Затем кильнул сессию.


Пока блокировка висит.

Жду ролбэка. Чтобы 1 строчку удалить. И план глянуть.

заставь *** богу молиться, он лоб расшибет



АХАХАХХААХАХАХАХАХАХА!!! жжешь.
12 фев 18, 13:16    [21185215]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7641
дампер, удаляйте порциями по 1-3 млн записей, иначе наступите на конкуренцию за диск между сбросом буфера на диск и чтениями.
12 фев 18, 13:48    [21185382]     Ответить | Цитировать Сообщить модератору
 Re: Как происходит удаление в огромной таблице?  [new]
Тяп-ляп
Member

Откуда: Москва
Сообщений: 797
Вот тебе скрипт посмотреть план:
/*
запросы,  СЕЙЧАС выполняющиеся. План - крайняя колонка слева.
*/
SELECT
	 p.query_plan
	, req.command command_type
	, sqltext.TEXT command_text
	, SUBSTRING(sqltext.text,  (req.statement_start_offset/2) + 1,
        ((CASE req.statement_end_offset
          WHEN -1 THEN DATALENGTH(sqltext.text)
         ELSE req.statement_end_offset
         END - req.statement_start_offset)/2) + 1) AS statement_text
	, db_name(req.database_id) db_name
	, req.session_id
	, req.blocking_session_id
	, req.status as req_status
	, req.cpu_time req_cpu_time_ms
	, ses.cpu_time ses_cpu_time_ms
	, req.total_elapsed_time / 1000.0 AS req_elapsed_sec
	, ses.original_login_name
	, ses.host_name
	, ses.program_name
	, ses.host_process_id
	, ses.client_interface_name
	, ses.memory_usage
	, ses.reads
	, ses.writes
	, ses.logical_reads
FROM sys.dm_exec_requests AS req with(nolock)
   JOIN sys.dm_exec_sessions AS ses with(nolock) on req.session_id = ses.session_id
   CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 
   CROSS APPLY	sys.dm_exec_query_plan(req.plan_handle) AS p
WHERE 1 = 1
   and req.database_id > 4
   and req.session_id <> @@SPID
   -- AND req.session_id = 78                   -- задать SPID
   -- AND ses.[host_name] = 'SRV-01'            -- задать хост
ORDER BY req.total_elapsed_time DESC
12 фев 18, 13:57    [21185421]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить