วาง Oracle ทำซ้ำบันทึกบน DRAM SSD สำหรับฐานข้อมูลการเขียนจำนวนมากหรือไม่


9

ฉันมี Sun M4000 ที่เชื่อมต่อกับอาร์เรย์ EMC CX4-120 พร้อมฐานข้อมูลที่เขียนหนัก เขียนจุดสูงสุดที่ประมาณ 1200 IO / s และ 12MB / s

ตามที่อีเอ็มซีฉันอิ่มตัวแคชเขียนในอาร์เรย์ EMC

ฉันคิดว่าวิธีที่ง่ายที่สุดคือการย้ายบันทึกทำซ้ำไปยัง SSD ที่ใช้ DRAM สิ่งนี้จะช่วยลดภาระของอาร์เรย์ EMC ลงครึ่งหนึ่งและแอปจะไม่เห็นบัฟเฟอร์ของบันทึกรอ ใช่ DBWR อาจกลายเป็นคอขวด แต่แอปจะไม่รอ (เหมือนที่ทำในการทำซ้ำ!)

ขณะนี้ฉันวนรอบบันทึกการทำซ้ำประมาณ 4 4GB ดังนั้นแม้แต่ 20GB หรือมากกว่านั้นของ SSD ก็สร้างความแตกต่างอย่างมาก เนื่องจากนี่เป็นที่เก็บข้อมูลระยะสั้นและถูกเขียนทับอย่างต่อเนื่อง SSD ที่ใช้ Flash จึงอาจไม่ใช่แนวคิดที่ยอดเยี่ยม

M4000 ไม่มีไดรฟ์พิเศษใด ๆ ดังนั้นการ์ด PCI-E จะสมบูรณ์แบบฉันสามารถไปภายนอกหรือย้ายปริมาณการบูตไปยัง EMC และเพิ่มไดรฟ์ในเครื่อง

Sun ขายการ์ด Flash Accelerator F20 PCIe แต่ดูเหมือนว่าจะเป็นแคชสำหรับดิสก์ SATA บางตัวไม่ใช่โซลูชัน DRAM SSD มีรายละเอียดที่ชัดเจนไม่ได้ระบุว่า M4000 รองรับและฉันเบื่อที่จะต่อกรกับสายโทรศัพท์ของซันเพื่อขอความช่วยเหลือจากมนุษย์ :(

คนอื่น ๆ เห็นด้วยหรือไม่ว่า DRAM SSD เป็นวิธีที่จะไปไหม? คำแนะนำฮาร์ดแวร์ใด ๆ

อัปเดต นอกเหนือจากข้อมูลในความคิดเห็นด้านล่างแล้วฉันได้ลองตั้งค่าต่างๆสำหรับ "commit_write" และมันก็ไม่ได้สร้างความแตกต่าง


คุณกำลังเก็บบันทึกไว้ที่ไหนสักแห่ง? หากในที่สุดพวกเขาจำเป็นต้องคัดลอกออกจาก SSD ไปยังดิสก์จากนั้นคุณอาจย้ายคอขวดไปยังที่เก็บถาวร
Gary

ใช่ ... บันทึกการทำซ้ำจะถูกเก็บถาวรและจริง ๆ แล้ว IO เพิ่มขึ้นเป็นประมาณ 80MB / s ในระหว่างการคัดลอกบันทึกการทำซ้ำเพราะเป็นการเขียนตามลำดับ ฉันมักจะคิดว่าการทำซ้ำบันทึกเป็นลำดับ แต่ไม่เดา
rmeden

คำตอบ:


9

ครั้งแรก - ฉันคิดว่าคุณมีดิสก์น้อยมากในอาเรย์ สามารถรองรับ 1200IOPS ได้อย่างง่ายดายคือดิสก์หมุน 12 แผ่น (100 IOPS ต่อดิสก์เหมาะสมมาก) หากแคชไม่สามารถจัดการได้แสดงว่าอัตราการเขียนที่ยั่งยืนของคุณที่ 1200 IOPS เป็นวิธีที่มากกว่าที่ดิสก์ของคุณสามารถรองรับได้

อย่างไรก็ตาม SSD สำหรับบันทึกการทำซ้ำไม่น่าจะช่วยได้ ก่อนอื่นเซสชันของคุณรอเป็นส่วนใหญ่ในคำสั่ง COMMIT หรือไม่ ตรวจสอบกิจกรรมการรออันดับสูงสุดใน statspack / AWR เพื่อตรวจสอบ ฉันเดาว่า 95% ของ I / O ของคุณไม่ใช่การทำซ้ำบันทึกเลย ตัวอย่างเช่นการแทรกแถวเดียวในตารางที่มี 5 ดัชนีสามารถทำ 1 I / O เพื่ออ่านบล็อกตาราง (ที่มีพื้นที่ว่างสำหรับแถว) อ่านบล็อกดัชนี 5 (เพื่ออัปเดต) เขียน 1 data block, 1 เลิกทำ บล็อกและบล็อกดัชนี 5 บล็อก (หรือมากกว่านั้นหากอัพเดตบล็อกที่ไม่ใช่บล็อก) และบล็อกทำซ้ำ 1 บล็อก ดังนั้นตรวจสอบ statspack และดูเหตุการณ์การรอคอยของคุณคุณน่าจะรอทั้งการอ่านและการเขียนสำหรับข้อมูล / ดัชนี การรอการอ่านจะทำให้ INSERT ช้าลงและกิจกรรมการเขียนทำให้การอ่านช้าลง - เป็นดิสก์เดียวกัน (BTW - คุณต้องการดัชนีทั้งหมดจริง ๆ หรือไม่การดร็อปคนที่ไม่ต้องมีจะเร่งการแทรก)

สิ่งที่ต้องตรวจสอบอีกอย่างคือนิยามของ RAID - คือ RAID1 (การทำมิรเรอร์ - แต่ละการเขียนคือสองการเขียน) หรือ RAID 5 (การเขียนแต่ละครั้งคือ 2 อ่านและสองเขียนเพื่อคำนวณการตรวจสอบ) RAID 5 ช้าลงในการโหลดแบบเขียนมาก

BTW - หากดิสก์ไม่สามารถแฮนโหลดการเขียนได้ DBWR จะเป็นคอขวด SGA ของคุณจะเต็มไปด้วยบล็อกสกปรกและคุณจะไม่มีห้องเหลือให้อ่านบล็อกใหม่ (เช่นบล็อกดัชนีที่ต้องดำเนินการ / อัปเดต) จนกว่า DBWR จะสามารถเขียนบล็อกสกปรกบางส่วนลงในดิสก์ได้ ตรวจสอบ statspack / awr report / addm อีกครั้งเพื่อตรวจสอบสิ่งที่เป็นปัญหาคอขวดโดยทั่วไปจะขึ้นอยู่กับเหตุการณ์รอ 5 อันดับแรก


1
+1 - และฉันจะให้ +10 ถ้าทำได้
Helvick

2
+1 สำหรับคำแนะนำเพื่อดูว่าขวดอยู่ตรงไหน
DCookie

การรอคือ "ซิงค์ไฟล์บันทึก" และ "พื้นที่บัฟเฟอร์การบันทึก" ฉันจะได้ปริมาณประมาณ 150MB / s โดยใช้ DD ฉันสงสัยว่า LGWR กำลังรอให้ IO เสร็จสมบูรณ์ก่อนที่จะส่งอันถัดไป เวลาบริการ IO ประมาณ 1 มิลลิวินาที EMC มีแคชขนาดมหึมา 500MB ซึ่งเป็นไปตาม EMC ที่ไม่สามารถเพิ่มได้โดยไม่ต้องอัปเกรดทั้งกล่อง เรามี 22 TB อยู่ในอาร์เรย์ทำไมพวกเขาถึงเสนออะไรบางอย่างที่มีแคชเล็ก ๆ น้อย ๆ อยู่เหนือฉัน บันทึกการทำซ้ำอยู่ในขณะนี้ใน RAID 5 แบบกว้าง 5 แต่ไม่มีความแตกต่างกับ RAID 10 (เหตุผลอื่นที่น่าสงสัยว่าแคช)
rmeden

BTW หากมีแคชมากขึ้นดิสก์ยังคงไม่สามารถติดตามได้ ด้วยการย้าย REDO ออกจากอาร์เรย์ EMC ซึ่งจะเพิ่มความจุให้กับดิสก์ข้อมูลและลด I / O ลงครึ่งหนึ่ง DRAM SSD ขนาดเล็กอาจเป็นดิสก์ที่มีราคาถูกและมีประสิทธิภาพสูงเนื่องจากมีขนาดเล็ก
rmeden

meden - Oracle เขียนต่อวินาทีได้เท่าไหร่? คุณบอกว่า I / O ทั้งหมดคือ 12 MB / s และ 1200 IOPS มันหมายถึง IOs ขนาดเล็กจำนวนมาก (เฉลี่ย 10KB) หากคุณย้ายบันทึกการทำซ้ำไปยัง SSD คุณจะเห็นเหตุการณ์รอที่แตกต่างกันเนื่องจาก DBWR จะกลายเป็นคอขวดและ INSERT จะรอบัฟเฟอร์ว่างใน SGA โปรดตรวจสอบ - คุณมี RAID ประเภทใดขนาดสไทรพ์และขนาดบล็อกของออราเคิลคืออะไร ตรวจสอบใน statspack แหล่งที่มาของ I / O ส่วนใหญ่ - ทำซ้ำหรืออย่างอื่น - ตรวจสอบ I / O ต่อ tablespace
Ofir Manor

2

ววไม่มีอะไรเทียบกับ block i / o

สำหรับมุมมองอื่นตรวจสอบ anandtech.com ทำการทดสอบ exaustive (ให้กับเซิร์ฟเวอร์ MS SQL) กับ SAS การหมุน vs SSD ในชุดต่าง ๆ และโลก Solaris มี ZFS กับ SSD ทำส่วนต่าง ๆ (ล็อกแคช ฯลฯ )

แต่ใช่ถ้า RAID 5 กับ RAID 10 เหมือนกัน (สำหรับเขียน) แสดงว่าคุณกำลังทำอะไรผิดพลาด ด้วยการเขียนเชิงเส้น heck RAID 5 อาจเร็วกว่า (นั่นคือสามารถทำพาริตี้ในหน่วยความจำแล้วเขียนแถบและความเท่าเทียมกันทั้งหมดในครั้งเดียว) แต่ด้วยการสุ่มบล็อกเล็ก ๆ (4-8k) คุณจะถูกฆ่าโดยอัปเดตสไทรป์ บันทึกโดยผู้อื่น) การจู่โจม 10 ควรมากกว่า 2x เร็วกว่าถ้าไม่ใช่มีบางอย่างผิดปกติ

คุณต้องขุดให้ลึกก่อนที่จะใช้จ่ายเงินกับฮาร์ดแวร์


2

ฉันเห็นโพสต์เกี่ยวกับการติดตั้งพาร์ติชัน UFS โดยใช้ตัวเลือก "บังคับทิศทาง" และการตั้งค่าพารามิเตอร์ Oracle "filesystemio_options" เป็น "setall"

ฉันลองและเห็นการปรับปรุง 4-5 เท่าใน Oracle เขียน! ใช่!

อาการสำคัญคือปริมาณงานต่ำ แต่เวลาตอบสนองที่ดีบนดิสก์ ดูเหมือนว่าจะช่วยคนบางคน แต่ไม่ใช่คนอื่น มันทำงานให้ฉันอย่างแน่นอน

ฉันอาจพิจารณา SSD สำหรับเซิร์ฟเวอร์ใหม่ แต่เซิร์ฟเวอร์นี้ทำงานได้ดีในขณะนี้

โรเบิร์ต


ส่วนใหญ่แล้วการเพิ่มความเร็วที่คุณพบไม่ได้เกิดจากการเปิดใช้งาน I / O โดยตรง แต่โดยการเปิดใช้ I / O อะซิงโครนัส ใน Oracle setall หมายถึง direct + async
kubanczyk

1

หากกล่องนี้เป็นเพียงกล่อง x86 / 64 ที่ใช้ linux ฉันขอแนะนำการ์ดไดรฟ์ FusionIO PCIe อย่างใดอย่างหนึ่งอย่างมีความสุขอย่างรวดเร็วและไม่ 'ตาย' ด้วยการเขียนที่หนักเหมือน SSD น่าเสียดายที่พวกเขาไม่ได้รับการสนับสนุนด้วย Sparc หรือ Solaris คุณอาจต้องการติดต่อพวกเขาเพื่อหารือเกี่ยวกับเรื่องนี้


1

การ์ด F20e PCIe นั้นคล้ายกับ Fusion I / O ในฟังก์ชั่น มันเป็นเพียงแค่ PCIe ที่แนบกับ Flash SSD ด้วยภาระงานด้านการเขียนที่หนักหน่วงคุณจะต้องกังวลเกี่ยวกับการบำรุงรักษาบล็อกที่ว่างเพียงพอ (ผ่านชุดเก็บขยะตามประเภทของไดรฟ์) ดังนั้นคุณจึงไม่ต้องกังวลกับวงจรการลบ / โปรแกรมบน SSD กลายเป็นปัญหาคอขวด รอบการเขียนที่ จำกัด มีอยู่บน SSD ที่ใช้ Flash มันเร็วอย่างแน่นอน แต่อาจไม่ใช่ชุดที่ดีที่สุดสำหรับงานนี้


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