Saya telah membuat tabel SQL yang sangat mendasar sebagai berikut
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]
Saya kemudian melakukan Insert Massal 3 Gig
BULK
INSERT TickData
FROM
'C:\SUMO.csv'
GO
Kemudian penggunaan RAM untuk server SQL pergi Skyrocking, memakan ~ 30Go RAM:
Saya lebih suka berpikir ini adalah perilaku abnormal dan tindakan dapat diambil untuk menghindari hal ini.
EDIT:
Ok, Ini tampaknya menjadi perilaku default. Cukup adil.
Namun, mengapa memori tidak dibebaskan lama setelah Sisipan Massal selesai?
Beberapa pertimbangan ekstra:
Pada komentar tentang SQL server yang membebaskan memori ketika "disuruh" oleh OS, pengalaman langsung saya pada Server 24-Core 32 Gb Xeon membuktikan ini tidak eksak: Setelah ekstrak BCP Memory-Voracious selesai Saya memiliki kumpulan .Net Instances dari aplikasi pemrosesan data saya yang perlu memproses data yang diekstraksi, dan mereka dibiarkan tersedak / berjuang untuk berbagi memori yang tersisa untuk mencoba melakukan pekerjaan mereka, yang membutuhkan waktu lebih lama ketika SQL Server diaktifkan mati dan memori tersedia untuk semua aplikasi untuk dibagikan. Saya harus menghentikan Agen SQL Server untuk membuat semuanya berjalan lancar dan mencegah Aplikasi dari crash untuk Articiallt yang menyebabkan Pengecualian OutOfMemmroy. Adapun Pembatasan / Pembatasan Memori Brutal buatan, jika Memori Gratis tersedia, mengapa tidak menggunakannya? Idealnya ia lebih suka diatur secara dinamis untuk beradaptasi dengan apa yang tersedia daripada hanya secara paksa dibatasi "secara acak". Tapi saya kira ini adalah desain, jadi case ditutup pada poin terakhir ini.