หน่วยความจำสูงสุดของ SQL Server, ไฟล์หน้า, ความเท่าเทียมระดับสูงสุด


15

คำถามสามข้อหวังว่าคุณอาจารย์ DBA แห่งจักรวาลสามารถตอบคำถาม:


  1. ฉันรู้ว่ามันเป็นวิธีปฏิบัติที่ดีที่สุดในการตั้งค่าหน่วยความจำสูงสุดของ SQL Server ดังนั้นหากเซิร์ฟเวอร์ที่มี RAM ขนาด 44 GB ได้ติดตั้ง SQL Server ไว้เราควรตั้งค่าหน่วยความจำสูงสุดของเซิร์ฟเวอร์ SQL ให้อยู่ที่ประมาณ 37GB

แต่เราควรตั้งค่าอะไรถ้าบริการวิเคราะห์ SQL และบริการรายงานของ SQL ติดตั้งอยู่บนเซิร์ฟเวอร์เดียวกันกับ SQL Server ถ้าอย่างนั้นจะเป็นการดีกว่าถ้าตั้งค่าหน่วยความจำสูงสุดของ SQL Server เป็น 22GB RAM ดังนั้นการวิเคราะห์สามารถใช้ RAM ขนาด 22GB อื่นได้หรือไม่


  1. บนเซิร์ฟเวอร์ที่ใช้ SQL Server พร้อม RAM ขนาด 44 GB วิธีปฏิบัติที่ดีที่สุดในการตั้งค่าขนาดไฟล์ของหน้าคืออะไร ฉันอ่าน Brent Ozar ( http://www.brentozar.com/archive/2014/06/sql-server-setup-checklist-free-ebook-download/ ) ดังต่อไปนี้:

SQL Server ไม่จำเป็นต้องมีไฟล์เพจขนาดยักษ์ หากคุณกำลังติดตั้งแอปพลิเคชั่นอื่น ๆ บนเซิร์ฟเวอร์ (ซึ่งเราไม่แนะนำ - ควรแยก SQL Server) คุณอาจต้องการไฟล์หน้าขนาดใหญ่ ถ้า SQL Server เป็นบริการหลักเพียงตัวเดียวที่ทำงานอยู่ในกล่องเรามักจะสร้างไฟล์เพจขนาด 2GB บนไดรฟ์ระบบ

Microsoft กล่าวว่าเราควรตั้งค่าระบบไฟล์ของเพจที่มีการจัดการเป็น RAM ที่ 1.5x ซึ่งตรงกับคำแนะนำที่ได้รับจาก Remus (ดู -> http://rusanu.com/2009/11/22/system-pagefile-size-on-machines-with -large-ram / )

ดังนั้นบนเซิร์ฟเวอร์ของเราที่มี RAM ขนาด 44GB เรามี SQL Server ติดตั้งอยู่ถัดจาก SQL Analysis Service และ SQL Reporting Services เราควรตั้งค่าไฟล์หน้าอะไร


  1. สำหรับ SharePoint เซิร์ฟเวอร์ SQL ที่เป็นส่วนหนึ่งของฟาร์ม SharePoint และที่เก็บ SharePoint เป็นฐานข้อมูลควรจะตั้งค่าระดับความขนานสูงสุดในวันนี้เมื่อเรามีเซิร์ฟเวอร์ที่ไม่ได้เป็นส่วนหนึ่งของฟาร์ม SharePoint (เรียกว่า sql2) เซิร์ฟเวอร์เรามี SQL Server, การวิเคราะห์และการรายงาน SQL ที่ติดตั้ง SharePoint ไม่ได้จัดเก็บฐานข้อมูลบนเซิร์ฟเวอร์นี้ แต่เรามีการรายงานและการวิเคราะห์ฐานข้อมูล / คิวบ์ที่ SharePoint สร้างขึ้นเพื่ออ่านและเขียน

Brent Ozar พูดว่า:

Rule of thumb: ตั้งค่านี้เป็นจำนวนของฟิสิคัลคอร์ในซ็อกเก็ต NUMA โหนด (โปรเซสเซอร์) เดียวบนฮาร์ดแวร์ของคุณหรือน้อยกว่า

สิ่งที่เราควรกำหนดค่าบนอินสแตนซ์ของ SQL Server นี้สำหรับระดับความขนานสูงสุดเมื่อมี 4 VCPU


หวังว่าพวกคุณจะไม่เพียง แต่ให้ฉัน แต่ผู้ดูแลระบบ sql มากขึ้นเข้าใจในการปฏิบัติที่ดีกว่าป่าใน interwebs

คำตอบ:


12

3 คำถามของคุณสัมผัสmax memory, และpage filemax dop setting

หน่วยความจำสูงสุด


ถ้าเซิร์ฟเวอร์ทุ่มเท SQL Server เพียง แต่ไม่มีบริการการวิเคราะห์ (ตั้งแต่ SSAS เป็นสัตว์อีก) แล้วแนะนำปฏิบัติที่ดีที่สุดของเกล็นเป็นจุดเริ่มต้นที่ดี สำหรับส่วนประกอบเพิ่มเติมคุณควรดูที่บล็อกของโจนาธานในการกำหนดค่าหน่วยความจำสูงสุด

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

แฟ้มเพจ


ปกติฉันจะตั้งให้ห่างจากC:\ไดรฟ์บนไดรฟ์ที่มีพื้นที่ดิสก์เพียงพอ ฉันเห็นด้วยกับข้อเสนอแนะของ Remus และ Brent PAGE FILE FOR SQL SERVER = 1.5 * RAMมันควรจะเป็น ไฟล์หน้าจะมีประโยชน์เมื่อคุณพบตัวเองในสถานการณ์ที่คุณต้องใช้การถ่ายโอนข้อมูลแบบเต็มหน่วยความจำ (Microsoft CSS ถามโดยปกติ) สำหรับการแก้ไขปัญหา

อ่านวิธีการตรวจสอบขนาดไฟล์หน้าเว็บที่เหมาะสมสำหรับรุ่น 64 บิตของ Windows KB 889654 อย่างทั่วถึงและบั๊กวู้ดดี้พูดคุยเกี่ยวกับไฟล์ของหน้าเว็บที่นี่

การตั้งค่าสูงสุด DOP


สำหรับ sharepoint แนะนำให้maxdop = 1ตั้งค่าอินสแตนซ์กว้าง สำหรับเซิร์ฟเวอร์ sql ปกติฉันขอแนะนำให้คุณทำตาม - วิธีที่ดีและทำซ้ำในการคำนวณ MAXDOP บน SQL Server คืออะไร ฉันมีสคริปต์ที่เขียนซึ่งจะคำนวณให้คุณ

ส่วนสำคัญอยู่ด้านล่าง ( KB 2806535ยังกล่าวถึงสิ่งเดียวกัน):

8 or less processors    ===> 0 to N (where N= no. of processors)
More than 8 processors  ===> 8
NUMA configured         ===> MAXDOP should not exceed no of CPUs assigned to each 
                                 NUMA node with max value capped to 8
Hyper threading Enabled ===> Should not exceed the number of physical processors.

ในฐานะที่เป็นหมายเหตุด้านข้างฉันขอแนะนำให้คุณอ่าน - ตัวเลือกการปรับปรุงและตัวเลือกการกำหนดค่าที่แนะนำสำหรับ SQL Server 2012 และ SQL Server 2014 ที่มีเวิร์กโหลดประสิทธิภาพสูง


สิ่งหนึ่งที่ควรทราบคือในโพสต์บล็อกของ Buck Woody ที่อ้างถึงข้างต้น Remus ความคิดเห็น "สิ่งที่ช่วยประหยัดวันนี้คือ AWE: หน่วยความจำที่จองผ่าน AWE ไม่จำเป็นต้องมีการจองไฟล์หน้า (ตั้งแต่ถูกล็อคใน RAM จริงดังนั้นจึงไม่ paged) การใช้ AWE นั้นอัตโนมัติใน x64 " ซึ่งดูเหมือนว่าจะเห็นด้วย AWE เราไม่ต้องการไฟล์หน้าขนาดใหญ่
Jason Carter

@Kin คุณพูดว่า "ฉันเห็นด้วยกับคำแนะนำของ Remus และ Brent" แต่หลังจากผ่านคู่มือการติดตั้งของ Brent (อ้างอิงจาก OP ข้างต้น) และ Remus Article พวกเขาขัดแย้งกัน ดังนั้นให้ฉันคำตอบของคุณเกี่ยวกับไฟล์หน้าออกคำถามที่ค้างอยู่
Magier

1
@Magier ฉันมักจะแนะนำ MS เพราะฉันได้เข้าสู่สถานการณ์ที่เราจำเป็นต้องใช้การถ่ายโอนข้อมูลหน่วยความจำแบบเต็มเพื่อวิเคราะห์ปัญหา - เราไม่ทราบว่าเป็น windows หรือ sql server ในสถานการณ์นั้นคำแนะนำ MS นั้นดีที่สุด หากคุณไม่เข้าใจสถานการณ์นั้นคำแนะนำของเบรนต์ก็มีผลเช่นกัน PAGE FILE FOR SQL SERVER = 1.5 * RAMฉันมักจะเป็นในด้านความปลอดภัยเพื่อให้ฉันไปกับ นั่นตอบคำถามของคุณหรือไม่
Kin Shah

3

ดังนั้นบนเซิร์ฟเวอร์ของเราที่มี RAM ขนาด 44GB เรามี SQL Server ติดตั้งอยู่ถัดจาก SQL Analysis Service และ SQL Reporting Services เราควรตั้งค่าไฟล์หน้าอะไร

เพิ่มสิ่งที่ Kin พูดถึงไปแล้วผมขอแนะนำให้คุณใช้ Perfmon Countersเพื่อคำนวณขนาดหน้าไฟล์ของคุณ ฉันยังเห็นด้วยกับข้อเสนอแนะรีมัสของไฟล์หน้าควรจะเป็น 1.5 เท่าของ RAM ในระบบ แต่ข้อเสนอแนะนี้กำลังพิจารณาประเด็นและสถานการณ์ที่เป็นไปได้ทั้งหมดและ 'คำแนะนำทั่วไป' ฉันคิดว่าคุณสนใจคุณค่าที่เป็นรูปธรรมมากขึ้น ดังนั้นนี่คือ

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

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

หน่วยความจำ: จำกัด การใช้งาน:จำนวนไบต์ของหน่วยความจำเสมือนที่สามารถยืนยันได้โดยไม่ต้องขยายไฟล์เก็บเพจ

แฟ้มเพจจิ้ง:% การใช้งานเปอร์เซ็นต์ของไฟล์เพจจิ้ง

แฟ้มเพจจิ้ง:% Usage Peakเปอร์เซ็นต์สูงสุดของไฟล์เพจจิ้งที่กำหนดไว้

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

ถ้าอย่างนั้นจะเป็นการดีกว่าถ้าตั้งค่าหน่วยความจำสูงสุดของ SQL Server เป็น 22GB RAM ดังนั้นการวิเคราะห์สามารถใช้ RAM ขนาด 22GB อื่นได้หรือไม่

ไม่ฉันไม่คิดว่าคุณจะพลาดข้อกำหนดของระบบปฏิบัติการที่นี่ คุณต้องตั้งค่าหน่วยความจำเซิร์ฟเวอร์สูงสุดที่เหมาะสมที่สุดสำหรับเซิร์ฟเวอร์ SQl เธรด SEนี้มีรายละเอียดเพิ่มเติมเกี่ยวกับการตั้งค่าหน่วยความจำเซิร์ฟเวอร์สูงสุดที่ถูกต้อง อีกครั้งฉันอย่างหนักและมักจะตอบกลับในเคาน์เตอร์ perfmon เพื่อดูว่าจะเป็นค่าที่เหมาะสม ฉันแนะนำให้คุณอ่านบทความนี้และรับความช่วยเหลือจากเคาน์เตอร์เพื่อกำหนดค่าที่เหมาะสมสำหรับ SSAS ฉันเคยใช้บล็อกนี้เพื่อตั้งค่าหน่วยความจำสำหรับ SSAS ฉันไม่ได้เป็น SSAS มากนักดังนั้นความคิดเห็นของฉันจะ จำกัด เฉพาะบทความนี้เท่านั้น

คุณควรเก็บ MAXDOP = 1 ไว้สำหรับอินสแตนซ์ของ Sharepoint ซึ่งเป็นพารามิเตอร์ที่ได้รับการยอมรับอย่างกว้างขวาง หาก IIRC การแนะนำอีกครั้งกลายเป็นที่ยอมรับอย่างกว้างขวางหลังจากพบการหยุดชะงักบ่อยครั้งเมื่อระดับสูงสุดของความขนานเป็นค่าเริ่มต้น


3

คำตอบอื่น ๆ ทั้งหมดที่ให้ไว้สำหรับการอ้างอิงขนาดไฟล์ของหน้าบทความที่ค่อนข้างล้าสมัย โพสต์บล็อกของ Technetนี้มีความทันสมัยมากขึ้น (ตุลาคม 2015) และให้วิธีการที่ละเอียดยิ่งขึ้นในการคำนวณขนาดหน้าไฟล์ที่เหมาะที่สุดในระบบที่ทันสมัย

พวกเขาระบุอย่างชัดเจนว่าไม่ใช้กฎเดิมของแรม 1.5 x RAM อีกต่อไป

ฉันได้วางเนื้อหาหลักของบทความด้านล่างนี้เพื่อหลีกเลี่ยงการเน่าลิงก์

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


เมื่อปรับขนาดไฟล์หน้าเราจำเป็นต้องพิจารณาความต้องการหน่วยความจำแอปพลิเคชันของเราและการตั้งค่าการถ่ายโอนข้อมูลผิดพลาด

คุณรู้ได้อย่างไรว่าแอปพลิเคชันของคุณต้องการหน่วยความจำเท่าใด วิธีที่ดีที่สุดคือการใช้พื้นฐาน

Run Performance Monitor (Perfmon)
Go to Data Collector Sets\User Defined
Right click on User Defined and select New
Select Create Manually and next
Check Performance counter
Add the following counters:

        Memory\Committed Bytes - Committed Bytes is the amount of committed virtual memory, in bytes.
        Memory\Committed Limit - Amount of virtual memory that can be committed without having to extend the paging file
        Memory\% Committed Bytes In Use - Ratio of Memory\Committed Bytes to the Memory\Commit Limit 

หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณรวบรวมข้อมูลเป็นเวลานาน (อย่างน้อยหนึ่งสัปดาห์) และเซิร์ฟเวอร์กำลังทำงานเมื่อมีการใช้งานสูงสุด

สูตรขนาดไฟล์ของหน้าควรเป็น:

(ค่าสูงสุดของไบต์ที่ตกลงไว้ + บัฟเฟอร์ 20% เพิ่มเติมเพื่อรองรับปริมาณงานที่ระเบิด) ขนาด -RAM

ตัวอย่างเช่น: หากเซิร์ฟเวอร์มี RAM 24 GB และจำนวนไบต์ที่กำหนดสูงสุดคือ 26 GB ไฟล์หน้าแนะนำจะเป็น: (26 * 1.2) -24) = 7.2 GB

สิ่งที่เกี่ยวกับปัจจัยที่สอง: ขนาดที่เราต้องการบันทึกข้อมูลเมื่อระบบล่ม

ขนาดของการดัมพ์หน่วยความจำถูกกำหนดโดยชนิดของมัน:

Complete Memory Dump  RAM Size + 257 MB
Kernel Memory Dump  The amount of kernel-mode memory in use (on 32-bit maximum is 2 GB, on 64-bit the maximum can go up until 8 TB)
Small Memory Dump  64KB  512 KB

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

จากประสบการณ์ของฉันขนาดของ Kernel Memory Dump มักจะเป็นดังนี้:

On System with up to 256GB RAM =  8-12 GB size for Kernel Memory dump
On System with up to 1.5TB RAM = 8-32 GB size for Kernel Memory dump

อย่างไรก็ตามตัวเลขเหล่านี้ไม่ใช่คำแนะนำอย่างเป็นทางการของ Microsoft และอาจแตกต่างกันในเซิร์ฟเวอร์ของคุณดังนั้นควรทดสอบก่อนใช้งานเสมอ


2

ตอบเนื่องจากฉันเป็นหนึ่งในคนที่คุณอ้างถึงเฮ้

1. ฉันควรตั้งค่าหน่วยความจำสูงสุดเป็นอย่างไรเมื่อฉันเรียกใช้บริการการวิเคราะห์เช่นกัน

คุณจะไม่พบคำแนะนำที่นั่นเพราะ SSAS นั้นเหมือนกับแอพอื่น ๆ ที่ติดตั้งบน SQL Server ของคุณ: เราแค่ไม่รู้ว่าคุณจะใช้หน่วยความจำเท่าใด ปฏิบัติต่อ SSAS / SSIS / SSRS เป็นแอปพลิเคชันบุคคลที่สาม - พวกเขาเพิ่งจะรวมเป็น "ฟรี" ในกล่อง SQL Server พวกเขามีความต้องการซีพียูหน่วยความจำและการจัดเก็บที่แตกต่างกันโดยสิ้นเชิง

2. ฉันควรตั้งค่าขนาดไฟล์ของหน้าเป็นเท่าไหร่?

คำแนะนำของฉันคือเพื่อให้ Windows สามารถถ่ายโอนข้อมูลขนาดเล็ก หากคุณพบปัญหาที่คุณต้องโทรติดต่อฝ่ายสนับสนุนของ Microsoft คุณสามารถเริ่มด้วย mini-dump หากปัญหาเกิดขึ้นอีกและพวกเขาไม่สามารถหาได้จาก mini-dump (หรือแหล่งข้อมูลอื่น ๆ เช่นบันทึกข้อผิดพลาด) พวกเขาอาจขอให้คุณใช้ขนาด RAM 1.5x

คำแนะนำ RAM 1.5x ของ Microsoft คือเพื่อให้ Windows สามารถทำการถ่ายโอนข้อมูลหน่วยความจำแบบเต็มเมื่อระบบของคุณขัดข้อง

วันนี้กับเซิร์ฟเวอร์ที่มี RAM 64-128-256GB โดยปกติแล้วคุณไม่ควรหยุด Windows เพื่อเขียนเนื้อหาทั้งหมดของหน่วยความจำระหว่างเกิดความผิดพลาด คุณควรให้ SQL Server สำรองและเรียกใช้และจัดการกับเนื้อหา mini-dump แทนที่จะเป็นแบบเต็ม บันทึกการถ่ายโอนข้อมูลเต็มรูปแบบไว้เพื่อใช้ในภายหลัง - โดยปกติคุณสามารถไปประกอบอาชีพทั้งหมดโดยไม่จำเป็นต้องอัปโหลดไฟล์ดัมพ์ 64 + GB ไปยัง Microsoft (ขอให้โชคดีในอันนั้น)

3. ฉันจะตั้งค่า MAXDOP เป็นอะไรสำหรับ SharePoint

สิ่งที่คุณเรียกคำแนะนำ "ของฉัน" จากไมโครซอฟท์ KB 2806535 เริ่มต้นโดยทั่วไป แต่เมื่อแอปพลิเคชันเฉพาะบอกคุณบางอย่างที่แตกต่างกันพวกเขารู้บางอย่างเกี่ยวกับแอปพลิเคชันของพวกเขาที่แตกต่างจาก SQL Server โดยทั่วไป - ทำตามนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.