Aşağıdaki gibi çok temel bir SQL tablosu oluşturduk
CREATE TABLE [dbo].[TickData](
[Date] [varchar](12) NULL,
[Time] [varchar](12) NOT NULL,
[Symbol] [varchar](12) NOT NULL,
[Side] [varchar](2) NOT NULL,
[Depth] [varchar](2) NOT NULL,
[Quote] [varchar](12) NOT NULL,
[Size] [varchar](18) NOT NULL
) ON [PRIMARY]
Daha sonra 3 Gig Toplu Toplu Yerleştirdim
BULK
INSERT TickData
FROM
'C:\SUMO.csv'
GO
Sonra SQL sunucusu için RAM kullanımı Skyrocking gitti, ~ 30Go RAM yemek:
Bunun anormal bir davranış olduğunu ve bunu önlemek için önlem alınabileceğini düşünmeyi tercih ediyorum.
EDIT:
Tamam, bu varsayılan davranış gibi görünüyor. Yeterince adil.
Ancak, Toplu Ekleme tamamlandıktan sonra bellek neden uzun süre boşalmıyor?
Birkaç ek husus:
SQL sunucusunun işletim sistemi tarafından "söylendiğinde" belleği serbest bırakmasıyla ilgili yorumlardan dolayı, 24 Çekirdekli 32 Gb Xeon Sunucusundaki uygulamalı deneyimim bunun doğru olmadığını kanıtlıyor: Veri işleme uygulamamın ayıklanan verileri işlemesi gereken bir havuzu var ve SQL Server açıldığında daha uzun süren faaaaar süren işlerini gerçekleştirmek için kalan belleği paylaşmak için boğuluyor / savaşıyorlar. kapalı ve bellek tüm uygulamalar paylaşmak için kullanılabilir. Her şeyin yolunda gitmesi ve uygulamaların OutOfMemmroy Exception'a neden olan Articiallt için çökmesini önlemek için SQL Server Agent'ı durdurmam gerekiyor. Yapay Brutal Bellek Sınırlama / Sınırlama ile ilgili olarak, Boş Bellek varsa, neden kullanmıyorsun? İdeal olarak, zorla "rastgele" sınırlanmaktan ziyade, mevcut olana uyum sağlamak için dinamik olarak ayarlanmış olmayı tercih eder. Ama sanırım bu yan tasarım, bu yüzden bu son noktada dava kapandı.