หน่วยความจำ SQL Server Express และ CPU จำกัด ต่ออินสแตนซ์หรือไม่


32

ถ้าฉันมี RAM 8GB ในเซิร์ฟเวอร์และฉันเรียกใช้อินสแตนซ์ 4 รายการของ SQL Server Express ขีด จำกัด หน่วยความจำทั้งหมดที่ใช้โดย SQL Server จะเป็น 1GB หรือ 4GB หรือไม่

ขอแนะนำให้เรียกใช้หลาย ๆ กรณีเช่นนี้เพื่อให้แต่ละฐานข้อมูลใช้ทรัพยากรได้ดีขึ้นหรือไม่ (สมมติว่าเซิร์ฟเวอร์มีทรัพยากรมากมาย)

คำตอบ:


27

ถ้าฉันมี RAM 8GB ในเซิร์ฟเวอร์และฉันใช้ SQL Express 4 อินสแตนซ์จะมีการ จำกัด หน่วยความจำทั้งหมดที่ SQL Server ใช้เป็น 1GB หรือ 4GB หรือไม่

แต่ละตัวอย่างเช่นสามารถใช้งานได้ถึงหน่วยความจำ 1GB สำหรับสระว่ายน้ำบัฟเฟอร์ แต่ละอินสแตนซ์สามารถใช้ผลรวมมากกว่า 1GB ได้เล็กน้อยเนื่องจากการจัดสรรหน่วยความจำทั้งหมดไม่สามารถทำได้ผ่านบัฟเฟอร์พูล ในกรณีของคุณหน่วยความจำสูงสุดที่ใช้โดยสี่อินสแตนซ์สำหรับบัฟเฟอร์พูลจะเป็น 4GB

สารสกัด BOL

เพื่อยืนยันฉันเริ่มต้นสองอินสแตนซ์ของ 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 ที่มีคุณลักษณะครบถ้วน (และราคาถูกมาก) หากการใช้งานที่ตรงตามความต้องการใช้งานตรงกับสิทธิ์ใช้งาน) คุณจะต้องพูดมากขึ้นเกี่ยวกับสถานการณ์เพื่อให้ได้คำตอบที่ชัดเจนในประเด็นนี้


3
ยังมีโน้ตสำหรับผู้อ่านที่ชาญฉลาด: หมายถึงSQL Server Database Engine A Single Instanceทุกครั้งที่คุณต้องเปลี่ยนเซิร์ฟเวอร์กล่องโต้ตอบการเชื่อมต่อที่คุณกำลังเชื่อมต่อ (เช่นlocalhost\devvs localhost\test) นั่นคือ "อินสแตนซ์" ใหม่หรือ "เครื่องมือ" ใหม่ แค่คิดว่าฉันจะชัดเจนขึ้น
jcolebrand

7

ทุกอินสแตนซ์จะนับแยกต่างหากเนื่องจากมีกระบวนการแยกต่างหาก


1
ฉันคิดว่าคุณมั่นใจว่า limiter ไม่ได้ใช้กับกระบวนการทั้งหมดใช่ไหม

-8

ใน SQL Express เอ็นจิ้นฐานข้อมูลสามารถใช้ RAM 1 GBเท่านั้นและฐานข้อมูลใด ๆ ต้องไม่ใหญ่กว่า 10 GB

ดังนั้น 4 อินสแตนซ์จะต้องแชร์ RAM ขนาด 1 GB นั้น

คุณสามารถหาข้อมูลอื่น ๆ อีกมากมายที่http://msdn.microsoft.com/en-us/library/cc645993(v=SQL.110).aspx

การอภิปรายที่คล้ายกันที่นี่ใน Stack Overflow บอกว่านี่เป็นคำตอบที่ถูกต้อง BTW ดังนั้นไม่จำเป็นต้องลงคะแนนเสียง: https://stackoverflow.com/questions/1169634/limitations-of-sql-server-express

หน้านี้บอกว่าเหมือนกันแม้ว่าจะเป็นเรื่องเกี่ยวกับ SQL Server Express 2005: http://www.edugeek.net/forums/windows-server-2000-2003/55183-sql-server-express-2005-memory-limit- ต่อ instance.html


3
ไม่จำเป็นต้องติดตาม - มันคือ 1 เอ็นจินต่อเซิร์ฟเวอร์หรือต่ออินสแตนซ์

1
ตกลงนั่นแปลว่ามันเป็นไปได้ แต่ก็เป็นไปได้เช่นกันที่พวกมันพลาดในขีด จำกัด หน่วยความจำ

1
เพียงเพราะมันอยู่บนอินเทอร์เน็ตมันจะต้องเป็นจริง พวกเขาจะไม่ปล่อยให้สิ่งผิดปกติบนอินเทอร์เน็ต ~ การพูดแบบนั้นเพื่อบอกว่าปัญหาที่นี่คือจะต้องมีกระบวนการจัดการหรือบางสิ่งที่ถูกอบเข้าสู่ระบบปฏิบัติการเพื่อจุดประสงค์เดียวในการ จำกัด SQL Express ทั้งหมดตลอดไป ฉันไม่คิดว่ามันจะเกิดขึ้น (AKA มันไม่ได้เกิดขึ้นจริงตามที่ฉันหายใจเอาออกซิเจนและสามารถทำตามตรรกะได้ดีจริงๆ) ดังนั้นความจริงของเรื่องนี้ก็คือกระบวนการนั้นจัดการปริมาณแรมที่ถูก ใช้
jcolebrand

2
การขอร้องผู้คนให้ลบคะแนนโหวตในสิ่งที่เป็นไปตามธรรมชาติคำตอบที่ไม่ดีนั้นไม่น่าเป็นไปได้ที่คุณจะได้รับการโหวตไม่ว่าคุณจะอ้างอิงแหล่งใด หากคุณต้องการอ้างอิงแหล่งข้อมูลให้ไปโหลดหลายอินสแตนซ์และแสดงโหลดจริงในหน่วยความจำ นั่นเป็นวิธีเดียวที่จะรู้ได้อย่างแน่นอน ไม่ว่าจะเป็นหรือแสดงรหัส Microsoft ที่ควบคุมพฤติกรรมของ SQL Express ให้กับเรา เป็นการจัดการตามตัวอย่างเสมอเนื่องจากแต่ละบริการอยู่ในตัวเองจากบนลงล่าง บริการการจัดการทั้งหมดทำงานผ่านพอร์ต
jcolebrand

2
Maximum memory utilized (SQL Server Database Engine)ขอให้สังเกตว่าพวกเขาใช้คำศัพท์เดียวกันกับที่พวกเขาทำในบรรทัด: Maximum Compute Capacity Used by a Single Instance (SQL Server Database Engine)1(สำหรับผู้ที่เล่นที่บ้านจุดที่ว่าพวกเขาเป็นการวัดเดียวกัน) msdn.microsoft.com/en-us/library/ …และฉันยัง รักว่าคำตอบของ SO ที่เชื่อมโยงกับนั้นเป็นอย่างไร เริ่มต้นด้วย "1 คอร์หรือ 4 ซ็อกเก็ต" ผู้แก้ไขไม่สามารถคัดลอกได้อย่างถูกต้อง
jcolebrand
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.