พูดจากประสบการณ์ที่เจียมเนื้อเจียมตัว แต่ฉันคิดว่าการแบ่งปันที่คุ้มค่าคอขวดที่สำคัญกับฐานข้อมูล SQL (Sybase และเซิร์ฟเวอร์ SQL ที่นี่) เป็นที่เก็บข้อมูล
แต่ฉันคิดว่ามันยุติธรรมเท่านั้นที่มีคนเปรียบเทียบการตั้งค่าของพวกเขาก่อนที่จะตัดสินใจผิด ๆ ในกรณีของฉันการใช้งาน CPU ไม่สูงขึ้นพอที่จะปรับการอัพเกรดซีพียูได้เร็ว ๆ นี้ ฉันได้อัปเกรดจากไดรฟ์เดียวเป็น RAID 1 แล้วเป็น RAID 10 + การชนจาก 8GB เป็น 16GB ของ RAM
การอัปเกรด RAID ทั้งหมดเหล่านี้ช่วยลดเวลารอคอยก่อนหน้าลงได้ 2 ถึง 6 เท่าฉันสงสัยว่าการอัปเกรดเป็น SSD จะดียิ่งขึ้น หากคุณคิดเกี่ยวกับมันจะสามารถลดแบนด์วิดธ์ (ทางทฤษฎี) ทั้งหมด ลิงก์ [(ความเร็ว RAM + ขนาด RAM + ตัวควบคุมหน่วยความจำ) ของคุณเชื่อมโยงไปยัง CPU] มีขีด จำกัด แบนด์วิดท์ซึ่งจะเป็นปัจจัยที่สำคัญที่สุดในการอ่านเมื่อข้อมูลของคุณควรถูกแคชเสมอ (RAID) ที่เก็บข้อมูลเฉพาะของคุณ ส่งผลต่อการอ่านเมื่อแคชไม่ได้รับและเขียนเมื่อมีการล้างข้อมูลหรือมีลูกค้าจำนวนมากที่เขียนข้อมูลจำนวนมากรวมกัน)
ทำให้ข้อ จำกัด เหล่านั้นกลับสู่ระดับปกติให้มากที่สุด (นำมาใกล้ให้มากขึ้นโดยที่คุณไม่ต้องสูญเสียทรัพยากร) และยกระดับให้มากที่สุด (อัปเกรดเมื่อจำเป็นและถ้าจำเป็นเท่านั้นอย่าปล่อยให้ทรัพยากรสูญเปล่าหากระบบชนะ ' ไม่สามารถใช้งานได้เพราะมีบางคอขวดอยู่ในทาง) ในท้ายที่สุดคอขวดที่เลวร้ายที่สุดของคุณจะเป็นระบบย่อยเซิร์ฟเวอร์ที่มีประสิทธิภาพน้อยที่สุด (พร้อมแบนด์วิดธ์น้อย) ในการกำหนดค่าเฉพาะของคุณ
ฉันอาจเพิ่มในกระบวนการอัพเกรดฉันได้สร้างการกำหนดค่า RAID แยกต่างหากสำหรับไฟล์ฐานข้อมูลและไฟล์บันทึกฐานข้อมูล เหตุผลก็คือไฟล์บันทึกฐานข้อมูลมีแนวโน้มที่จะเขียนมาก ไฟล์บันทึกจะใช้ในการกู้คืนฐานข้อมูลจากความผิดพลาดและจะถูกเขียนลงในทันทีตามธุรกรรมที่เกิดขึ้นก่อนที่ข้อมูลใด ๆ จะถูกเขียนลงในไฟล์ฐานข้อมูล
ล็อกไฟล์ยังถูกใช้โดยเซิร์ฟเวอร์การเรพลิเคทฐานข้อมูลบางตัว แต่การเรพลิเคทส่วนใหญ่ไม่ได้ทำในทันที แต่บ่อยครั้งดังนั้นผลกระทบต่อประสิทธิภาพการอ่านจึงน้อยที่สุด อย่างน้อยฉันก็คิดอย่างนั้น ฉันทำการเปรียบเทียบน้อยที่สุดในขณะที่ทำการอัพเกรดนี้อีกครั้งฉันขอแนะนำให้ทุกคนทำการเปรียบเทียบการกำหนดค่าที่แตกต่างกันของพวกเขาและทำการอัปเกรดที่เก็บข้อมูลของพวกเขาก่อนจากนั้นจึงเชื่อมโยง RAM และเครือข่ายก่อนที่จะคิดถึงการอัพเกรด CPU
หลังจากการอัพเกรดที่ครอบคลุมมากขึ้นบนเซิร์ฟเวอร์มากกว่า 5 ตัวฉันกลับมาแชร์ประสบการณ์ของฉัน ฉันยังคงสนับสนุนการอัปเกรดที่เก็บข้อมูลครั้งแรกจากนั้น RAM และ CPU เหตุผลคือความไม่เท่าเทียมกันของแบนด์วิดท์ในระบบระหว่างหน่วยความจำ RAM และ CPU ตามลำดับต่ำสุดถึงสูงสุด ดังนั้นฉันจึงอัพเกรดเซิร์ฟเวอร์จำนวนมากจาก RAID10 และ RAID1 คู่เป็น SSD
วิธีที่ฉันทำเนื่องจากความกังวลด้านต้นทุน (ฉันมีเซิร์ฟเวอร์เพิ่มอีก 20 เครื่องสำหรับการอัปเกรด) คือการย้ายข้อมูลฐานข้อมูลและไฟล์วัตถุไปยัง SSD (ใช่เพียง SSD เดียวใน RAID0) และย้ายบันทึกธุรกรรมพร้อม tempdb ไปเป็น 4xHDD RAID10 องค์ประกอบ ฉันทดสอบกับ tempdb บน SSD ด้วยผลลัพธ์ที่ยอดเยี่ยม (อันที่จริงแล้วผลลัพธ์ที่ดีมากที่มีการสืบค้นได้เร็วกว่า 15 เท่าบางครั้งให้รายงานบางเรื่องโดยใช้เวลาไม่กี่วินาทีแทนที่จะเป็นนาทีที่ผ่านมา) แต่ภายหลังย้าย tempdb ไปยังดิสก์ RAID10 เพราะ ความกังวลเรื่องการสึกหรออย่างเข้มข้นสำหรับ SSD
ตอนนี้โดยทั่วไปฉันสังเกตเห็นเวลาตอบสนองที่เร็วขึ้น 10-15 ครั้งต่อหนึ่งข้อความค้นหาที่ยาวที่สุด SSD นั้นยอดเยี่ยมสำหรับการอ่านข้อมูลลงใน RAM อย่างรวดเร็วเนื่องจาก SQL Server ไม่ได้นำข้อมูลไปสู่ RAM จนกว่าจะมีการร้องขอและแน่นอนว่าข้อมูลแรกจะต้องโหลดลงใน RAM เพื่อประมวลผลโดย CPU (ภายหลังในแคช L1, L2, L3) ดังนั้น SSD จึงช่วยลดระยะเวลารอคอยเริ่มต้นนั้นได้เป็นอย่างมาก และ SSD ยังช่วยลดเวลาในการแลกเปลี่ยน ... การล้าง RAM และโหลดข้อมูลใหม่โดยเฉพาะถ้าฐานข้อมูลของคุณมีขนาดใหญ่เกินกว่าจะใส่ลงใน RAM ได้
โดยรวมแล้วเรามีความยินดีเป็นอย่างยิ่งและได้รับการดำเนินการอย่างต่อเนื่องเป็นเวลาหลายเดือนในกระบวนการโยกย้ายที่ช้าเพื่ออนุญาตให้เซิร์ฟเวอร์ทำงานเพื่อให้ฉันสามารถรวบรวมข้อมูลระดับการสวมใส่ก่อนที่ฉันจะเปลี่ยนเซิร์ฟเวอร์ทั้งหมดเป็นการกำหนดค่านี้ และนี่เป็นเพียง SQL Server Express! : D - ตรวจสอบให้แน่ใจว่า SSD ของคุณสามารถให้บริการ IOPS คงที่เพราะนั่นเป็นอีกสิ่งหนึ่งที่สร้างความแตกต่างอย่างมาก (เพียงแค่ google มัน) นั่นเป็นเหตุผลที่ฉันเลือก Intel DC (DataCenter) SSDs series