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

Откуда:
Сообщений: 18
Добрый день.
MS SQL 2012.
на сервере max degree of parallelism установлен в 1. но топ блокировок следующий
CXPACKET более 80% как можно снизить данные блокировки.

К сообщению приложен файл. Размер - 11Kb
9 окт 15, 10:08    [18257036]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Glory
Member

Откуда:
Сообщений: 104760
dosent
CXPACKET более 80% как можно снизить данные блокировки.

Еще больше уменьшив параллелизм
9 окт 15, 10:13    [18257062]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
dosent
Member

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

Как можно еще уменьшить если он в минимальном значении?
9 окт 15, 10:15    [18257072]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Glory
Member

Откуда:
Сообщений: 104760
dosent
Как можно еще уменьшить если он в минимальном значении?

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

Сообщение было отредактировано: 9 окт 15, 10:24
9 окт 15, 10:18    [18257093]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
dosent, и как давно он выставлен? И за какой период собиралась статистика?

После изменения настроек обычно сбрасывают статистику и через некоторое время смотрят снова.

Делали это?
9 окт 15, 10:18    [18257095]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
dosent
Member

Откуда:
Сообщений: 18
статистика собирается в течение суток.
9 окт 15, 10:38    [18257225]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
AnyKey45
Member

Откуда: Ekaterinburg-Moscow-EU
Сообщений: 219
dosent,

может хинты в запросах, которые переопределяют значение, установленное на сервере?
9 окт 15, 10:51    [18257339]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
dosent, каким образом вы обеспечили сбор статистики только за сутки?
9 окт 15, 11:06    [18257452]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Evelion
Member

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

А вы точно сбросили статистику после изменения значения параллелизма ?
9 окт 15, 11:13    [18257504]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Eleanor
Member

Откуда:
Сообщений: 3199
А точно ли есть запросы с параллелизмом?
Можно посмотреть в сохраненных планах приблизительно так:
SELECT DB_NAME(P.database_id) db, OBJECT_NAME(P.object_id, P.database_id) obj, cached_time, last_execution_time, execution_count, query_plan
FROM sys.dm_exec_procedure_stats P
OUTER APPLY sys.dm_exec_query_plan(P.plan_handle) T
where CAST(query_plan as nvarchar(max)) like '%PhysicalOp="Parallelism"%'
9 окт 15, 11:19    [18257555]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Eleanor
Member

Откуда:
Сообщений: 3199
Или dm_exec_query_stats вместо dm_exec_procedure_stats , если у вас логика не на хранимках.

Найдите хоть один запрос с параллелизмом, посмотрите, есть ли у него подсказки.
Попробуйте сами запрос выполнить, добавить подсказку OPTION (MAXDOP 1)
9 окт 15, 11:36    [18257678]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
dosent
Member

Откуда:
Сообщений: 18
1. Очистил статистику
DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);

DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);
2. Периодически за смотрю ее
WITH [Waits] AS
    (SELECT
        [wait_type],
        [wait_time_ms] / 1000.0 AS [WaitS],
        ([wait_time_ms] - [signal_wait_time_ms]) / 1000.0 AS [ResourceS],
        [signal_wait_time_ms] / 1000.0 AS [SignalS],
        [waiting_tasks_count] AS [WaitCount],
        100.0 * [wait_time_ms] / SUM ([wait_time_ms]) OVER() AS [Percentage],
        ROW_NUMBER() OVER(ORDER BY [wait_time_ms] DESC) AS [RowNum]
    FROM sys.dm_os_wait_stats
    WHERE [wait_type] NOT IN (
        N'BROKER_EVENTHANDLER',         N'BROKER_RECEIVE_WAITFOR',
        N'BROKER_TASK_STOP',            N'BROKER_TO_FLUSH',
        N'BROKER_TRANSMITTER',          N'CHECKPOINT_QUEUE',
        N'CHKPT',                       N'CLR_AUTO_EVENT',
        N'CLR_MANUAL_EVENT',            N'CLR_SEMAPHORE',
        N'DBMIRROR_DBM_EVENT',          N'DBMIRROR_EVENTS_QUEUE',
        N'DBMIRROR_WORKER_QUEUE',       N'DBMIRRORING_CMD',
        N'DIRTY_PAGE_POLL',             N'DISPATCHER_QUEUE_SEMAPHORE',
        N'EXECSYNC',                    N'FSAGENT',
        N'FT_IFTS_SCHEDULER_IDLE_WAIT', N'FT_IFTSHC_MUTEX',
        N'HADR_CLUSAPI_CALL',           N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
        N'HADR_LOGCAPTURE_WAIT',        N'HADR_NOTIFICATION_DEQUEUE',
        N'HADR_TIMER_TASK',             N'HADR_WORK_QUEUE',
        N'KSOURCE_WAKEUP',              N'LAZYWRITER_SLEEP',
        N'LOGMGR_QUEUE',                N'ONDEMAND_TASK_QUEUE',
        N'PWAIT_ALL_COMPONENTS_INITIALIZED',
        N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP',
        N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP',
        N'REQUEST_FOR_DEADLOCK_SEARCH', N'RESOURCE_QUEUE',
        N'SERVER_IDLE_CHECK',           N'SLEEP_BPOOL_FLUSH',
        N'SLEEP_DBSTARTUP',             N'SLEEP_DCOMSTARTUP',
        N'SLEEP_MASTERDBREADY',         N'SLEEP_MASTERMDREADY',
        N'SLEEP_MASTERUPGRADED',        N'SLEEP_MSDBSTARTUP',
        N'SLEEP_SYSTEMTASK',            N'SLEEP_TASK',
        N'SLEEP_TEMPDBSTARTUP',         N'SNI_HTTP_ACCEPT',
        N'SP_SERVER_DIAGNOSTICS_SLEEP', N'SQLTRACE_BUFFER_FLUSH',
        N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
        N'SQLTRACE_WAIT_ENTRIES',       N'WAIT_FOR_RESULTS',
        N'WAITFOR',                     N'WAITFOR_TASKSHUTDOWN',
        N'WAIT_XTP_HOST_WAIT',          N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG',
        N'WAIT_XTP_CKPT_CLOSE',         N'XE_DISPATCHER_JOIN',
        N'XE_DISPATCHER_WAIT',          N'XE_TIMER_EVENT')
    )
SELECT
    [W1].[wait_type] AS [WaitType],
    CAST ([W1].[WaitS] AS DECIMAL (16, 2)) AS [Wait_S],
    CAST ([W1].[ResourceS] AS DECIMAL (16, 2)) AS [Resource_S],
    CAST ([W1].[SignalS] AS DECIMAL (16, 2)) AS [Signal_S],
    [W1].[WaitCount] AS [WaitCount],
    CAST ([W1].[Percentage] AS DECIMAL (5, 2)) AS [Percentage],
    CAST (([W1].[WaitS] / [W1].[WaitCount]) AS DECIMAL (16, 4)) AS [AvgWait_S],
    CAST (([W1].[ResourceS] / [W1].[WaitCount]) AS DECIMAL (16, 4)) AS [AvgRes_S],
    CAST (([W1].[SignalS] / [W1].[WaitCount]) AS DECIMAL (16, 4)) AS [AvgSig_S]
FROM [Waits] AS [W1]
INNER JOIN [Waits] AS [W2]
    ON [W2].[RowNum] <= [W1].[RowNum]
GROUP BY [W1].[RowNum], [W1].[wait_type], [W1].[WaitS],
    [W1].[ResourceS], [W1].[SignalS], [W1].[WaitCount], [W1].[Percentage]
HAVING SUM ([W2].[Percentage]) - [W1].[Percentage] < 95; -- percentage threshold
GO
9 окт 15, 11:40    [18257701]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
dosent
Member

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

не запрос возвращает пустой результат.
9 окт 15, 11:41    [18257712]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Александр Гладченко
Member

Откуда:
Сообщений: 10765
Блог
dosent
Добрый день.
MS SQL 2012.
на сервере max degree of parallelism установлен в 1. но топ блокировок следующий
CXPACKET более 80% как можно снизить данные блокировки.


Укажите нужный уровень параллелизма в говернёре (если не настроен, то для дефолтной группы), это "перебъёт" хинты в запросах.
9 окт 15, 11:43    [18257726]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
dosent
Member

Откуда:
Сообщений: 18
я вот что думаю в процентах действительно много, а в абсолюте не много за сутки. Может кто поделиться своими абсолютными показателями. ибо других блокировок нет
9 окт 15, 12:01    [18257868]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8317
CXPACKET более 80%

и что? Это как-то влияет на производительность Ваших запросов? Если другие показатели низки, то этот увеличится. Это совершенно нормально.
9 окт 15, 12:09    [18257939]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
o-o
Guest
ради бога, вот наши ожидания за 11 дней (from 2015-09-28 18:36:46.967)
если еще и параллелизм убрать, попа будет полная.

К сообщению приложен файл. Размер - 78Kb
9 окт 15, 12:19    [18258014]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Владислав Колосов
CXPACKET более 80%

и что? Это как-то влияет на производительность Ваших запросов? Если другие показатели низки, то этот увеличится. Это совершенно нормально.
Наверное ТС наивно надеется, что если он уберет CXPACKET wait, то сервер сразу начнет работать на 80% быстрее.

dosent
на сервере max degree of parallelism установлен в 1. но топ блокировок следующий
CXPACKET более 80%
Наверное кто-то из девелоперов решил не спорить с ДБА, а просто влупил MAXDOP хинт в запросы.

А сколько у вас CPU на сервере?
10 окт 15, 02:41    [18261732]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
dosent
Member

Откуда:
Сообщений: 18
2 физических по 4 ядра
12 окт 15, 10:41    [18266172]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
o-o
Guest
dosent,

а вы проверяли, у вас параллельно выполняющиеся запросы реально тормознее, чем serial?
уменьшить ожидания CXPACKET это же не самоцель,
разве лучше будет, если выполняться будет дольше, но зато никаких CXPACKET?
если бы не наши стремные диски и у нас бы % CXPACKET такой же был бы,
вы пересчитали абсолютные значения для 1-ого дня? у нас же больше,
но если не параллелить, все вообще замрет
12 окт 15, 10:55    [18266249]     Ответить | Цитировать Сообщить модератору
 Re: Как понизить блокировки CXPACKET  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8317
Суть в том, что на всю сумму всех видов блокировок отводится сотня и только сотня. Если мало одной - много другой. Остальные виды на этом сервере просто редки, вот и всё. Скажем на 1 блокировку CLR приходится 80 блокировок CX. Эти цифры ни о чем не говорят.
12 окт 15, 11:12    [18266341]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить