BLOB'ların sadece başka bir masada olması gerektiğine katılmıyorum - veritabanında hiç olmamalıdır . Dosyanın diskte bulunduğu yere bir işaretçi koyun ve ardından bunu veritabanından alın ...
Neden oldukları ilk sorun (benim için) endekslemeyle ilgili. Sorgu planları ile XML kullanmak, çünkü herkes var, bir tablo yapalım:
SELECT TOP 1000
ID = IDENTITY(INT,1,1),
deq.query_plan
INTO dbo.index_test
FROM sys.dm_exec_cached_plans AS dec
CROSS APPLY sys.dm_exec_query_plan(dec.plan_handle) AS deq
ALTER TABLE dbo.index_test ADD CONSTRAINT pk_id PRIMARY KEY CLUSTERED (ID)
Sadece 1000 satır, ama boyutlarını kontrol etmek ...
sp_BlitzIndex @DatabaseName = 'StackOverflow', @SchemaName = 'dbo', @TableName = 'index_test'
Sadece 1000 satır için 40 MB'ın üzerinde. Her 1000 satıra 40 MB eklediğinizi varsayalım, bu oldukça çabuk bir şekilde çirkinleşebilir. 1 milyon satıra çarptığınızda ne olur? Orada sadece 1 TB veri var.
Kümelenmiş dizininizi kullanması gereken tüm sorguların artık tüm bu BLOB verilerini belleğe okuması gerekir açıklamasına : BLOB veri sütunu referans alındığında.
SQL Server belleği kullanmanın BLOB'ları depolamaktan daha iyi bir yol olduğunu düşünebiliyor musunuz? Çünkü yapabilirim.
Kümelenmemiş dizinlere genişletme:
CREATE INDEX ix_noblob ON dbo.index_test (ID)
CREATE INDEX ix_returnoftheblob ON dbo.index_test (ID) INCLUDE (query_plan)
Kümelenmemiş dizinlerinizi BLOB sütununu büyük ölçüde önlemek için tasarlayabilirsiniz, böylece düzenli sorgular kümelenmiş dizini engelleyebilir, ancak o BLOB sütununa ihtiyaç duyduğunuz anda kümelenmiş dizine ihtiyacınız vardır.
Olarak eklerseniz, INCLUDED
Önemli bir arama senaryosundan kaçınmak için, kümelenmemiş bir dizine sütun , devasa kümelenmemiş dizinlerle bitirdiniz:
Neden oldukları daha fazla sorun:
- Kimse çalışırsa
SELECT *
sorgu , tüm bu BLOB verilerini alırlar.
- Yedekleme ve geri yükleme işlemlerinde yer kaplar ve onları yavaşlatır
- Yavaşlarlar
DBCC CHECKDB
, çünkü yolsuzluğu kontrol ettiğinizi biliyorum, değil mi?
- Ve herhangi bir indeks bakımı yaparsanız, bunu da yavaşlatırlar.
Bu yardımcı olur umarım!