Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
архивариус Member Откуда: Сообщений: 159 |
меняю запрос (оба запроса выводят абсолютно одинаковые результаты) (EstCost уменьшается 99.2% -> 0,8%) (время выполнения увеличилось около +50%)(например 0.9 сек и 1,4 сек ) нелогично? Вижу только что 2 запрос перестал параллелиться, непонимаю почему медленнее, подскажите что почитать по теме... sqlplan (xml) в аттаче. (W2008R2, Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)) 1. WITH dv1_CTE(SnapTime) AS (SELECT TOP 1800 SnapTime FROM dbo.FileStats WHERE SnapTime >= DATEADD(mi,-1801,CONVERT(DATETIME2(3),GETDATE())) GROUP BY SnapTime ORDER BY SnapTime DESC) SELECT M.ID AS MID, M.DatabaseID, M.FileID, FS.DNReads, FS.DNWrites, FS.DBRead, FS.DBWritten, FS.DIOstall, FS.SnapTime,FS.waitReadMS,FS.waitWriteMS FROM dbo.Filestats FS INNER JOIN dbo.DB2Monitor M ON FS.DatabaseID = M.DatabaseID AND FS.FileID = M.FileID WHERE [SnapTime] >= (SELECT TOP 1 SnapTime FROM dv1_CTE ORDER BY SnapTime ASC) AND DNReads > 0 order by SnapTime, DBName OPTION (MAXDOP 6) 2. SELECT M.ID AS MID, M.DatabaseID, M.FileID, FS.DNReads, FS.DNWrites, FS.DBRead, FS.DBWritten, FS.DIOstall, FS.SnapTime,FS.waitReadMS,FS.waitWriteMS FROM dbo.Filestats FS INNER JOIN dbo.DB2Monitor M ON FS.DatabaseID = M.DatabaseID AND FS.FileID = M.FileID WHERE [SnapTime] >= DATEADD(mi,-1800,CONVERT(DATETIME2(3),GETDATE())) AND DNReads > 0 order by SnapTime, DBName OPTION (MAXDOP 6) CREATE TABLE [dbo].[FileStats]( [ID] [int] IDENTITY(1,1) NOT NULL, [DatabaseID] [smallint] NULL, [FileID] [smallint] NULL, [FS_TimeStamp] [int] NULL, [NumberReads] [bigint] NULL, [DNReads] [bigint] NULL, [NumberWrites] [bigint] NULL, [DNWrites] [bigint] NULL, [BytesRead] [bigint] NULL, [DBRead] [bigint] NULL, [BytesWritten] [bigint] NULL, [DBWritten] [bigint] NULL, [IOstallMS] [bigint] NULL, [DIOstall] [bigint] NULL, [IoStallReadMS] [bigint] NULL, [DIoStallReadMS] [bigint] NULL, [waitReadMS] [bigint] NULL, [IoStallWriteMS] [bigint] NULL, [DIoStallWriteMS] [bigint] NULL, [waitWriteMS] [bigint] NULL, [BytesOnDisk] [bigint] NULL, [DBytesOnDisk] [bigint] NULL, [%BytesRead] [smallint] NULL, [%BytesWritten] [smallint] NULL, [%NumberReads] [smallint] NULL, [%NumberWrites] [smallint] NULL, [B] [char](2) NOT NULL DEFAULT (' '), [#] [char](2) NOT NULL DEFAULT (' '), [AverageBytesReads] [bigint] NULL, [AverageBytesWrites] [bigint] NULL, [SnapTime] [datetime] NULL DEFAULT (getdate()) ) ON [PRIMARY] CREATE CLUSTERED INDEX [CX_DBID_FILE_ID] ON [dbo].[FileStats] ( [SnapTime] ASC, [DatabaseID] ASC, [FileID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO CREATE NONCLUSTERED INDEX [IX_ID] ON [dbo].[FileStats] ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO К сообщению приложен файл (q.7z - 5Kb) cкачать ![]() |
6 сен 16, 14:26 [19632959] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
Найдите для этих запросов соответствующие строки в sys.dm_exec_query_stats и сравните worker_time. |
||
6 сен 16, 15:16 [19633249] Ответить | Цитировать Сообщить модератору |
архивариус Member Откуда: Сообщений: 159 |
invm, worker_time больше у 1 запроса, а elapsed у 2, а ещё непонятно почему physical_reads у 1 запроса "стремится" к 0, а у 2 всегда больше. в аттаче select * from sys.dm_exec_query_stats WHERE query_hash = 0xBF7E3015AE5FC24C --2 запрос OR query_hash = 0x7E22E24C363A4807 --1 запрос К сообщению приложен файл (q.csv - 674bytes) cкачать ![]() |
6 сен 16, 16:11 [19633622] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8309 |
архивариус, Вы написали разные запросы и удивляетесь - почему выбраны разные планы выполнения? |
7 сен 16, 11:23 [19636259] Ответить | Цитировать Сообщить модератору |
архивариус Member Откуда: Сообщений: 159 |
нет, вопрос почему запрос c EstCost 0,8 % выполняется медленнее чем запрос с EstCost 99,2% |
||
7 сен 16, 12:06 [19636670] Ответить | Цитировать Сообщить модератору |
SomewhereSomehow Member Откуда: Moscow Сообщений: 2480 Блог |
архивариус, Добрый день. Приведу описание из блога, чтобы не переписывать написанное
После этого, сравните реальное число строк в первом и втором случае, первый просто ближе к реальности и адекватнее оценивает. Строк больше, поэтому стоимость выше, но это не значит, что он в реальности будет выполняться медленнее. К сообщению приложен файл. Размер - 14Kb |
||
7 сен 16, 12:29 [19636844] Ответить | Цитировать Сообщить модератору |
архивариус Member Откуда: Сообщений: 159 |
спасибо, это ответ на мой вопрос |
||
7 сен 16, 12:35 [19636893] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |