Bir tabloyu SQL Server'ın önbelleğinden nasıl temizlerim?


10

Veritabanımda önbelleğe alınmaması gereken birkaç tablo var.

SQL Server'a bir tablonun sayfalarını önbelleğe almamasını nasıl söyleyebilirim veya tek bir tabloyu önbellekten nasıl temizlerim?

Tüm önbelleği temizlemek bir seçenek değildir.

SQL Server 2008 ve SQL Server 2008 R2 kullanıyorum.


4
Hangi temelde tabloların önbelleğe alınmamasına karar verdiniz?

3
Tablolarınız önbelleğe alınıyorsa sorgulanıyor. Nadiren erişilirlerse, SQL Server Bellek yöneticisi bunları gereken zamanda diğer nesneleri tercih ederek temizler. Buradaki amacınız nedir?
John Sansom

4
@John - OP'nin amacının ne olduğu hakkında hiçbir fikrim yok ama bunun yararlı olacağı zamanlar var. örneğin, tampon havuzunu temizlemeden büyük bir masaya karşı bir kerelik tarama yapmak.

3
Bazı nedenler: düşük öncelikli tablo, sql sunucusu ile aynı makinede iis / rs, güç kullanımı, vb. En önemlisi, bazı tabloların uygulamanın performansı ile ilgili düşük öncelikli tablolar olması ve diskten güvenle okunabilmesidir ne zaman erişilirse. Bu tabloları arabellek havuzunun dışında tutarak bellek analizi biraz daha kolay hale gelir.
Catalin Adler

1
@ user973156: Kodunuz ve tasarımınız , yalnızca daha iyi şeyler yapmak için SQL Server'ı tahmin edebileceğiniz kadar iyi mi?
gbn

Yanıtlar:


12

Bunu yapmanın bir yolu yok.

DBCC DROPCLEANBUFFERSbelirli bir veritabanı veya nesne için herhangi bir parametre kabul etmez. Dahili olarak SQL Server bunu veritabanı düzeyinde yapabilir ancak veritabanı AUTO_CLOSEd olduğunda karşılık gelen tüm sayfalar arabellek önbelleğinden kaldırılır.

Ayrıca dahili olarak SQL Server, tembel yazar tarafından atılan ilk sayfalar olacak şekilde belirli sayfaları işaretleyebilir. Bu, bu makaledesys.dm_db_index_physical_stats belirtildiği gibi tampon havuzunu yıkamaktan kaçınmak gibi DMV'ler tarafından kullanılır, ancak bu işlevsellik bize hiçbir şekilde maruz kalmaz (bir seferde tarama yapıldığında aynı şeyi belirtmek yararlı olsa da) örneğin büyük bir tablonun).


7

Belirli tabloların önbelleğe alınmaması gerektiğini belirtemezsiniz. Tabloları önbellekte istemediğinizi düşündüren nedir?

SQL Server TÜM normal işlemlerini arabellek havuzunda yapar, böylece SQL Server'a önbelleğe tablo yüklememesini söyleyebilseydiniz, bu tabloya normal DML işlemleri için erişilemezdi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.