ฉันมีเว็บไซต์ ASP.NET ที่เป็นเจ้าของแคชข้อมูลและข้อมูลไม่เปลี่ยนแปลงเป็นเวลานานดังนั้นจึงไม่จำเป็นต้องสืบค้น SQL Server ครั้งที่สองด้วยแบบสอบถามเดียวกัน ฉันต้องปรับปรุงประสิทธิภาพของแบบสอบถามครั้งแรก (บริสุทธิ์) ที่ไปยัง SQL Server นั้น แบบสอบถามบางแห่งประมวลผลข้อมูลมากจนอาจทำให้ SQL Server ใช้งานtempdb
ได้ ฉันไม่ใช้ตัวแปร temp table หรือ temp tables ดังนั้น SQL Server ตัดสินใจที่จะใช้tempdb
ด้วยตนเองทุกครั้งที่ต้องการ
ขนาดฐานข้อมูลของฉันคือ 16Gb ฉันมี RAM จริง 32Gb อยู่ในเครื่องเซิร์ฟเวอร์
ฉันเข้าใจว่ากลยุทธ์การแคช MS SQL Server พยายามเก็บข้อมูลใน RAM เพื่อเพิ่มความเร็วของการค้นหาที่คล้ายกันหากต้องการโหลดข้อมูลเดียวกันอีกครั้ง นอกจากนั้นมันจะพยายามใช้ RAM ที่มีอยู่แทน tempdb เพื่อเพิ่มความเร็วในการทำงานโดยไม่ทำให้เกิดการเข้าถึงดิสก์
ฉันคิดว่าเมื่อแบบสอบถามที่ต้องการเก็บบางสิ่งใน tempdb SQL Server มาและมี RAM ไม่เพียงพอ SQL Server มี 2 ตัวเลือก:
1) เพื่อยกเลิกการโหลดข้อมูลแคชและใช้ spared RAM แทน tempdb เพื่อหลีกเลี่ยงการเขียนดิสก์
2) เก็บข้อมูลที่แคชไว้สำหรับการสืบค้นในอนาคตและเริ่มใช้ tempdb ซึ่งทำให้การเขียนลงดิสก์ช้า
ฉันไม่รู้ว่า SQL Server ตัวเลือกใดที่จะทำให้ในสถานการณ์นี้ แต่ฉันต้องการเลือก # 1 เพราะฉันสนใจเฉพาะประสิทธิภาพของแบบสอบถามครั้งแรก (บริสุทธิ์) เนื่องจากฉันไม่เคยส่งแบบสอบถามเดียวกันไปยัง SQL Server อีก (แม้ว่าฉันอาจส่งข้อความค้นหาที่คล้ายกัน)
กลยุทธ์การแคช SQL Server สำหรับสถานการณ์นี้คืออะไร
มันสมดุลการใช้ RAM ระหว่างการหลีกเลี่ยง tempdb สำหรับการสอบถามบริสุทธิ์และความเร็วของการสอบถามครั้งที่สองได้อย่างไร
เป็นไปได้หรือไม่ที่จะกำหนดค่า SQL Server ในแบบที่จะเลือก # 1 ถ้าใช่แล้วได้อย่างไร
ฉันจะเพิ่มประสิทธิภาพของการสืบค้น SQL บริสุทธิ์ทั้งหมดได้อย่างไร
เนื่องจากฉันไม่รู้เกี่ยวกับกลยุทธ์การแคช SQL Server ฉันต้องการวางฐานข้อมูลบน RAM Disk สิ่งนี้จะทำให้แน่ใจได้ว่าข้อความค้นหาใด ๆ ล้วนมีความเร็วสูงในการโหลดข้อมูลที่ไม่ถูกตรวจจับแม้ว่า SQL Server จะทำการเลือก # 1 เสมอ ความเสี่ยงของมันก็คือ SQL Server อาจเริ่มใช้ tempdb มากขึ้นกับ RAM ที่มีน้อย (เฉพาะ 16Gb เหลือหลังจากผมใช้ 16Gb สำหรับ RAM ดิสก์) ถ้ามันช่วยให้การเลือก # 2 tempdb
ซึ่งจะชะลอตัวลงคำสั่งบริสุทธิ์ผู้ที่ก่อให้เกิดการรั่วไหลเข้า
ฉันสนใจวิธีแก้ปัญหาสำหรับ SQL 2008 R2 แต่ฉันเดาว่ามันคงเหมือนกันสำหรับ SQL 2008, SQL 2005 และอาจเป็น SQL 2000
ชี้แจง:
ไม่มีโปรแกรมอื่น ๆ ที่ทำงานอยู่บนกล่องที่มีก็ทุ่มเทให้กับ SQL Server เว็บไซต์ทำงานบนกล่องแยกต่างหาก
มันเป็น SQL Server 2008 R2 Standard Edition 64 บิตบน Windows Server 2008 R2 Enterprise 64 บิต
ผมทำงานเพียงอ่านอย่างเดียวและฐานข้อมูลคำสั่งเป็นชุดที่จะอ่านอย่างเดียว
สมมติว่ามีดัชนีที่ดีอยู่แล้ว คำถามนี้เกี่ยวกับ SQL Server ที่สร้างทางเลือก # 1 กับตัวเลือก # 2 วิธีที่ทำให้มันหากมีวิธีการควบคุมและถ้า RAM Disk ช่วยให้มันเป็นทางเลือกที่เหมาะสมสำหรับการค้นหาบริสุทธิ์