ถ้าฉันมี RAM 8GB ในเซิร์ฟเวอร์และฉันใช้ SQL Express 4 อินสแตนซ์จะมีการ จำกัด หน่วยความจำทั้งหมดที่ SQL Server ใช้เป็น 1GB หรือ 4GB หรือไม่
แต่ละตัวอย่างเช่นสามารถใช้งานได้ถึงหน่วยความจำ 1GB สำหรับสระว่ายน้ำบัฟเฟอร์ แต่ละอินสแตนซ์สามารถใช้ผลรวมมากกว่า 1GB ได้เล็กน้อยเนื่องจากการจัดสรรหน่วยความจำทั้งหมดไม่สามารถทำได้ผ่านบัฟเฟอร์พูล ในกรณีของคุณหน่วยความจำสูงสุดที่ใช้โดยสี่อินสแตนซ์สำหรับบัฟเฟอร์พูลจะเป็น 4GB
เพื่อยืนยันฉันเริ่มต้นสองอินสแตนซ์ของ SQL Server 2008 Express Database Engine ดำเนินกิจกรรมบางอย่างเพื่อโหลดพูลบัฟเฟอร์ (แยก) ขึ้นและดูที่การใช้งานหน่วยความจำต่ออินสแตนซ์ในหลายวิธีตัวอย่างเช่นการใช้DBCC MEMORYSTATUSหรือ โดยการนับจำนวนบัฟเฟอร์โดยใช้sys.dm_os_buffer_descriptors DMV
ใช้หน่วยความจำทางกายภาพตัวเลขด้านล่างที่ได้รับโดยใช้คำสั่งพร้อมกันกับระบบ DMV sys.dm_os_process_memoryในตัวอย่างของโปรแกรมฐานข้อมูลแต่ละ
SELECT
dopm.physical_memory_in_use_kb
FROM sys.dm_os_process_memory AS dopm;
เอาท์พุท:
╔═══════════╦═══════════╗
║ Instance1 ║ Instance2 ║
╠═══════════╬═══════════╣
║ 1102872 ║ 1059812 ║
╚═══════════╩═══════════╝
แต่ละสิ่งเหล่านี้มีขนาดเกิน 1GB เล็กน้อยเนื่องจากการใช้หน่วยความจำฟิสิคัลทั้งหมดมีมากกว่าแค่การใช้บัฟเฟอร์พูลดังที่กล่าวไว้ก่อนหน้านี้
ขอแนะนำให้เรียกใช้หลาย ๆ กรณีเช่นนี้เพื่อให้แต่ละฐานข้อมูลใช้ทรัพยากรได้ดีขึ้นหรือไม่ (สมมติว่าเซิร์ฟเวอร์มีทรัพยากรมากมาย)
หากฐานข้อมูลในแต่ละอินสแตนซ์นั้นมีความเป็นอิสระในการใช้งานดังนั้นอย่างน้อยก็สามารถใช้งานได้กับหลายอินสแตนซ์ของ Express ด้วยวิธีนี้แม้ว่าคุณจะต้องให้ความสนใจกับการกำหนดค่าและการบำรุงรักษาอย่างระมัดระวัง
คุณอาจได้รับการบริการที่ดีขึ้นเมื่อใช้รุ่นอื่นเช่น Developer Developer ที่มีคุณลักษณะครบถ้วน (และราคาถูกมาก) หากการใช้งานที่ตรงตามความต้องการใช้งานตรงกับสิทธิ์ใช้งาน) คุณจะต้องพูดมากขึ้นเกี่ยวกับสถานการณ์เพื่อให้ได้คำตอบที่ชัดเจนในประเด็นนี้
SQL Server Database Engine
A Single Instance
ทุกครั้งที่คุณต้องเปลี่ยนเซิร์ฟเวอร์กล่องโต้ตอบการเชื่อมต่อที่คุณกำลังเชื่อมต่อ (เช่นlocalhost\dev
vslocalhost\test
) นั่นคือ "อินสแตนซ์" ใหม่หรือ "เครื่องมือ" ใหม่ แค่คิดว่าฉันจะชัดเจนขึ้น