ฉันได้สร้างตาราง SQL พื้นฐานมากดังต่อไปนี้
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]
จากนั้นฉันก็ทำการแทรก 3 Gig Bulk
BULK
INSERT TickData
FROM
'C:\SUMO.csv'
GO
จากนั้นการใช้ RAM สำหรับเซิร์ฟเวอร์ SQL ทำให้ Skyrocking กิน RAM ขึ้น ~ 30Go:
ฉันชอบที่จะคิดว่านี่เป็นพฤติกรรมที่ผิดปกติและสามารถดำเนินการเพื่อหลีกเลี่ยงปัญหานี้ได้
แก้ไข:
ตกลงนี่น่าจะเป็นพฤติกรรมเริ่มต้น ยุติธรรมพอสมควร
อย่างไรก็ตามเหตุใดหน่วยความจำจึงไม่เพิ่มขึ้นหลังจากการแทรกจำนวนมากเสร็จสิ้นแล้ว
ข้อควรพิจารณาเพิ่มเติมสองประการ:
จากความคิดเห็นเกี่ยวกับเซิร์ฟเวอร์ SQL ที่เพิ่มหน่วยความจำเมื่อมีการ "บอก" โดยระบบปฏิบัติการประสบการณ์บนมือของฉันบนเซิร์ฟเวอร์ 24-Core 32 Gb Xeon พิสูจน์ได้ว่าสิ่งนี้ไม่แน่นอน: เมื่อสารสกัด BCP หน่วยความจำไม่รู้จักจบ ฉันมีกลุ่มของ. Net อินสแตนซ์ของแอปพลิเคชันการประมวลผลข้อมูลของฉันที่ต้องการประมวลผลข้อมูลที่แยกออกมาและพวกเขาถูกทิ้งให้สำลัก / ต่อสู้เพื่อแบ่งปันหน่วยความจำที่เหลือเพื่อพยายามทำงานของพวกเขาซึ่งใช้เวลานานกว่านั้น ปิดและหน่วยความจำพร้อมใช้งานสำหรับแอปพลิเคชันทั้งหมดเพื่อแบ่งปัน ฉันต้องหยุด SQL Server Agent เพื่อให้ทุกอย่างดำเนินไปอย่างราบรื่นและป้องกันไม่ให้แอปหยุดทำงานสำหรับ Articiallt ทำให้เกิดข้อยกเว้น OutOfMemmroy สำหรับการ จำกัด / จำกัด หน่วยความจำแบบ Brutal Memory หากมีหน่วยความจำว่าง ทำไมไม่ใช้ เป็นการดีที่มันค่อนข้างจะถูกตั้งค่าแบบ dinamically เพื่อปรับให้เข้ากับสิ่งที่มีอยู่มากกว่าเพียงแค่การ จำกัด การบังคับโดยการ "สุ่ม" แต่ฉันเดาว่านี่คือการออกแบบดังนั้นกรณีปิดในจุดสุดท้ายนี้