Uyarı Operator used
tempdb ile bir sorgu planı sıralama işlemi maliyetini en aza indirmek için mücadele ediyorumto spill data during execution with spill level 2
Birkaç ilgili yayınları bulduk dökmek seviye 1 ile yürütülürken dökmek verilerine 2. seviye değil, Seviye 1 kaynaklandığı met modası geçmiş istatistiklerini görünüyor , hangi seviyede yaklaşık 2? İle ilgili hiçbir şey bulamadım level 2
.
Bu makaleyi Sıralama uyarılarıyla ilgili çok ilginç buldum:
SQL Server'da bir sıralama uyarısını asla yoksay
SQL Server?
Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) 17 Haziran 2016 19:14:09 Telif Hakkı (c) Windows NT 6.3 üzerinde Microsoft Corporation Enterprise Edition (64 bit) (Derleme 9600:) (Hipervizör)
Donanımım?
harware'i bulmak için aşağıdaki sorguyu çalıştırmak:
- SQL Server 2012'den donanım bilgileri
SELECT cpu_count AS [Logical CPU Count], hyperthread_ratio AS [Hyperthread Ratio],
cpu_count/hyperthread_ratio AS [Physical CPU Count],
physical_memory_kb/1024 AS [Physical Memory (MB)], affinity_type_desc,
virtual_machine_type_desc, sqlserver_start_time
FROM sys.dm_os_sys_info WITH (NOLOCK) OPTION (RECOMPILE);
tahsis edilmiş bellek
SELECT
(physical_memory_in_use_kb/1024) AS Memory_usedby_Sqlserver_MB,
(locked_page_allocations_kb/1024) AS Locked_pages_used_Sqlserver_MB,
(total_virtual_address_space_kb/1024) AS Total_VAS_in_MB,
process_physical_memory_low,
process_virtual_memory_low
FROM sys.dm_os_process_memory;
sorgumu bir yıl kapsamı ile çalıştırdığımda aşağıdaki resme göre herhangi bir uyarı almıyorum:
Ama sadece 1 günlük kapsam için çalıştırdığımda bu uyarıyı alıyorum on the sort operator
:
bu sorgu:
DECLARE @FromDate SMALLDATETIME = '19-OCT-2016 11:00'
DECLARE @ToDate SMALLDATETIME = '20-OCT-2016 12:00'
SELECT DISTINCT
a.strAccountCode ,
a.strAddressLine6 ,
a.strPostalCode ,
CASE WHEN a.strCountryCode IN ('91','92') THEN 'GB-Int'
ELSE a.strCountryCode
END AS [strCountryCode]
FROM Bocss2.dbo.tblBAccountParticipant AS ap
INNER JOIN Bocss2.dbo.tblBAccountParticipantAddress AS apa ON ap.lngParticipantID = apa.lngParticipantID
AND apa.sintAddressTypeID = 2
INNER JOIN Bocss2.dbo.tblBAccountHolder AS ah ON ap.lngParticipantID = ah.lngParticipantID
INNER JOIN Bocss2.dbo.tblBAddress AS a ON apa.lngAddressID = a.lngAddressID
AND a.blnIsCurrent = 1
INNER JOIN Bocss2.dbo.tblBOrder AS o ON ap.lngParticipantID = o.lngAccountParticipantID
AND o.sdtmOrdCreated >= @FromDate
AND o.sdtmOrdCreated < @ToDate
OPTION(RECOMPILE)
Sorular: 1) sorgu planında şunu görüyorum:
StatementOptmEarlyAbortReason="GoodEnoughPlanFound" CardinalityEstimationModelVersion="70"
neden 70? Sql server 2014 kullanıyorum
2) bu tür operatörden nasıl kurtulurum (mümkünse)?
3) Bu sunucuya daha fazla bellek ekleyerek sayfa ömrü beklentisini oldukça düşük gördüm, bu uyarıyı önleyip önleyemeyeceğimi görmek için bakabileceğim başka bir şey var mı?
şerefe
Shanky ve Paul White'ın cevabından sonra güncelleme
İstatistiklerimi aşağıdaki senaryoya göre kontrol ettim ve hepsi doğru ve güncel görünüyor.
bunların hepsi bu sorguda kullanılan dizinler ve tablolardır.
DBCC SHOW_STATISTICS ('dbo.tblBAddress','IDXF_tblBAddress_lngAddressID__INC')
GO
DBCC SHOW_STATISTICS ('dbo.tblBOrder','IX_tblBOrder_sdtmOrdCreated_INCL')
GO
DBCC SHOW_STATISTICS ('dbo.tblBAccountHolder','PK_tblAccountHolder')
GO
DBCC SHOW_STATISTICS ('dbo.tblBAccountParticipant','PK_tblBAccountParticipants')
GO
DBCC SHOW_STATISTICS ('dbo.tblBAccountParticipantAddress','IDXF_tblBAccountParticipantAddress_lngParticipantID')
GO
Ben geri döndü budur:
Bu kısmi bir sonuç, ama hepsini tekrar ziyaret ettim.
İstatistik güncellemesi için şu anda Ola Hallengren var
Haftada bir kez çalışması planlanan Endeks Optimizasyon İşi - Pazar günleri
EXECUTE [dbo].[IndexOptimize]
@Databases = 'USER_DATABASES,-%Archive',
@Indexes = 'ALL_INDEXES' ,
@FragmentationLow = NULL,
@FragmentationMedium = NULL,
@FragmentationHigh = NULL,
@PageCountLevel=1000,
@StatisticsSample =100
,@UpdateStatistics = 'Index',
@OnlyModifiedStatistics = 'Y',
@TimeLimit=10800,
@LogToTable = 'Y'
İstatistikler güncellenmiş gibi görünse de Aşağıdaki komut dosyasını çalıştırdıktan sonra, sıralama operatörü hakkında hiçbir uyarı almadım.
UPDATE STATISTICS [Bocss2].[dbo].[tblBOrder] WITH FULLSCAN
--1 hour 04 min 14 sec
UPDATE STATISTICS [Bocss2].[dbo].tblBAddress WITH FULLSCAN
-- 45 min 29 sec
UPDATE STATISTICS [Bocss2].[dbo].tblBAccountHolder WITH FULLSCAN
-- 26 SEC
UPDATE STATISTICS [Bocss2].[dbo].tblBAccountParticipant WITH FULLSCAN
-- 4 min
UPDATE STATISTICS [Bocss2].[dbo].tblBAccountParticipantAddress WITH FULLSCAN
-- 7 min 3 sec