ฐานข้อมูลการเปรียบเทียบ


14

ฉันเห็นการสนทนามากมายเกี่ยวกับประสิทธิภาพของ db 'x' หรือการเปลี่ยนจาก 'x' เป็น 'y' เพื่อปรับปรุงประสิทธิภาพไซต์ของเรา

ฉันยังไม่เห็นการเปรียบเทียบที่เหมาะสมซึ่งทำงานกับฐานข้อมูลประเภทต่างๆ

  1. เป็นไปได้ไหมที่จะเขียนเบนช์มาร์กที่มีความหมายซึ่งสามารถใช้ได้กับหลาย ๆ db db เช่น Relational, Document-oriented เป็นต้น

  2. คุณจะออกแบบมาตรฐานอย่างไร


เป็นตัวอย่างของระดับรายละเอียดที่ฉันต้องการเพื่อใช้เป็นเกณฑ์มาตรฐานฐานข้อมูลใด ๆ อย่างจริงจังดูที่บทความนี้โดย Yahoo Research ฉันไม่ได้คำตอบที่ดีสำหรับคุณอื่น ๆ ที่ฉันยังสงสัยว่าการประนีประนอม CAP และ assymetries เป็นเหตุผลหลักที่ฐานข้อมูลการเปรียบเทียบนั้นยากมาก
yannis

คำตอบ:


19

คำตอบสั้น ๆ

ใช่คุณสามารถเขียนมาตรฐานที่มีความหมายของกรณีศึกษาหากคุณทำด้วยความระมัดระวังและเข้าใจว่าถ้ามันเกี่ยวข้องกับกรณีเฉพาะอาจเป็นกรณีอื่น สิ่งนี้เป็นจริงอย่างเท่าเทียมกันเมื่อเปรียบเทียบฐานข้อมูลประเภทเดียวกัน (ฐานข้อมูลเชิงสัมพันธ์กับฐานข้อมูลเชิงสัมพันธ์อื่น) หรือฐานข้อมูลประเภทอื่น

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

คำตอบที่ยาว

เป็นไปได้แน่นอนที่จะกล่าวว่า "การย้ายจากฐานข้อมูลไปยังอีกการปรับปรุงประสิทธิภาพเว็บไซต์ของเรา"

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

  2. คุณย้ายแอปพลิเคชันไปยังฐานข้อมูลใหม่

  3. คุณทำมาตรการเดียวกัน

  4. คุณเปรียบเทียบ

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

ตอนนี้ในฐานะที่เป็นตัวชี้วัดประสิทธิภาพใด ๆ มันลำเอียง:

  • ตกลงแบบสอบถามใหม่เร็วกว่า แต่รอDBA ของคุณไม่ได้รู้วิธีการใช้ฐานข้อมูลที่คุณมีมาก่อนดังนั้นแบบสอบถามซึ่งโหลดผลิตภัณฑ์ทั้งหมดจะไม่เหมาะ หากคุณเขียนซ้ำเช่นนั้นคุณจะสามารถโหลดผลิตภัณฑ์เหล่านั้นใน 0.855 วินาที แทน 2.834

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

  • แบบสอบถามบางรายการเร็วกว่า บางคนช้ากว่า คุณคำนวณผลลัพธ์เฉลี่ยอย่างไรเพื่อทราบว่าคุณได้รับประสิทธิภาพโดยรวมเมื่อย้ายไปยังฐานข้อมูลใหม่ ตกลงเวลาที่คุณโหลดผลิตภัณฑ์ 3 182 432 ทั้งหมดนั้นเร็วขึ้น แต่มันสำคัญหรือไม่ในขณะที่การสืบค้นนั้นดำเนินการบนเว็บไซต์เฉพาะในกรณีที่ไม่ค่อยเกิดขึ้นเมื่อผู้ดูแลระบบกำลังทำงานบางอย่างที่เขาทำเพียงสองครั้งในช่วงสิบปีที่ผ่านมา ในทางตรงกันข้ามการดำเนินการค้นหาทั้งหมดในหน้าแรกสำหรับผู้ใช้ใหม่เสีย 0.281 s กับฐานข้อมูลใหม่เมื่อมันเป็น 0.207 วินาที ด้วยฐานข้อมูลเก่า ผลลัพธ์นี้มีความสำคัญมากกว่าโดยเฉพาะอย่างยิ่งเนื่องจากแบบสอบถามเหล่านั้นไม่สามารถแคชได้เป็นเวลานานและมีการดำเนินการหลายหมื่นครั้งต่อวัน

  • ฐานข้อมูลทั้งสองจะต้องทดสอบบนเซิร์ฟเวอร์เดียวกันฮาร์ดแวร์เดียวกันโครงสร้างเดียวกัน ตัวอย่างเช่นคุณไม่สามารถทดสอบหนึ่งฐานข้อมูลบนฮาร์ดไดรฟ์เดียวและอีกหนึ่งฐานข้อมูลใน RAID1 ของ SSD สองตัว เมื่อคุณโอนย้ายโปรเจ็กต์ขนาดใหญ่ไปยังฐานข้อมูลใหม่มีโอกาสที่คุณจะเพิ่งโฮสต์ฐานข้อมูลใหม่บนแร็คเซิร์ฟเวอร์ที่ปรับใช้ใหม่อื่น ๆ นับร้อยเมื่อฐานข้อมูลก่อนหน้านี้จะยังคงอยู่บนเครื่องก่อนหน้านี้

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

ข้อผิดพลาดที่แย่ที่สุดคือการหาข้อสรุปจากเกณฑ์มาตรฐานและเพื่อสรุปความโง่เขลาเช่น "Microsoft SQL Server เร็วกว่า Oracle สามเท่า": การพูดแบบนี้เป็นการบอกว่า "Java ดีกว่า PHP" กำหนดได้ดีขึ้น ดีกว่าในกรณีอะไร? สำหรับแอปพลิเคชันประเภทใด สำหรับทีมพัฒนา

ยิ่งคุณตีความและพูดคุยทั่วไปมากขึ้นสิ่งต่าง ๆ ก็จะไม่เกี่ยวข้องและไร้ความหมาย

แบบสอบถามที่select [...]คุณสามารถหาได้ในการแก้ไข # 832 ในไฟล์ProductFactory.csบรรทัด 117 ดำเนินการภายใต้ 0.5 วินาที ด้วยฐานข้อมูลใหม่เมื่อทดสอบภายใต้เงื่อนไขที่ระบุในข้อกำหนดที่ไม่ใช้งานได้ภาคผนวก M กรณีที่ 3 ทำให้สามารถผ่านข้อกำหนดที่ไม่ใช้งานได้ 527 (ดูหน้า 80, การแก้ไข 9) ข้อกำหนดเดียวกันไม่เป็นที่พอใจกับฐานข้อมูลก่อนหน้านี้เมื่อผลการทดสอบอยู่ในช่วง 0.9..1.3 s ในสภาพเดียวกัน

มีความหมายสำหรับนักพัฒนาและแม่นยำพอที่จะรู้ว่าสิ่งใดที่ถูกทดสอบวิธีและผลลัพธ์คืออะไร นี่จะตอบคำถามหมายเลข 2 ของคุณ

น่าเศร้าที่มันไม่สมเหตุสมผลสำหรับการจัดการ แทน:

การโอนย้ายผลิตภัณฑ์ของเราจาก MySQL ไปเป็น Microsoft SQL Server รุ่นล่าสุดปรับปรุงประสิทธิภาพโดยรวมของผลิตภัณฑ์ของเราห้าประการลดค่าใช้จ่ายลงสองเท่าและลดผลกระทบต่อสิ่งแวดล้อมโดยรวมในเวลาเดียวกัน เราเชื่อว่าการโยกย้ายแอปพลิเคชันทั้งหมดของเราไปยัง Microsoft SQL Server ในปีหน้าจะให้ผลลัพธ์ที่ดียิ่งขึ้นและเพิ่มความสามารถในการแข่งขันในตลาดของเรา

เป็นนักการตลาดที่มีความเชี่ยวชาญเฉพาะทางและไม่ได้มีความหมายใด ๆ แต่ในทางเทคนิคแล้วนั้นมีค่าสำหรับฝ่ายบริหารและการตลาด

สุดท้ายเราสามารถเปรียบเทียบฐานข้อมูลประเภทต่าง ๆ ได้หรือไม่ ฉันจะบอกว่ามันเป็นไปได้โดยสิ้นเชิง สมมติว่าฉันมีเว็บไซต์ที่โฮสต์รูปภาพขนาดใหญ่ ภาพถ่ายเหล่านั้นถูกเก็บไว้ในvarbinary(max)Microsoft SQL Server 2005 (ดังนั้นฉันไม่สามารถใช้filestream) ฉันกังวลเกี่ยวกับประสิทธิภาพเมื่อโหลดรูปภาพเหล่านั้นดังนั้นฉันตัดสินใจที่จะเก็บรูปภาพเป็นไฟล์แทนโดยใช้ระบบไฟล์เป็นฐานข้อมูลใหม่ของฉัน ก่อนไฟล์เหล่านั้นจะถูกเก็บไว้ในเครื่องเดียวกันกว่าฐานข้อมูล ฉันโปรไฟล์โซลูชันใหม่และรับผลลัพธ์ที่แสดงว่าในกรณีของฉันไฟล์จะถูกโหลดเร็วกว่าระบบไฟล์จาก Microsoft SQL Server 4% มาตรฐานมีความชัดเจนมาก ตอนนี้ฉันสามารถนึกถึงการปรับใช้เซิร์ฟเวอร์เฉพาะที่ได้รับการปรับให้เหมาะสมสำหรับการจัดเก็บไฟล์โดยตรงแทนที่จะใช้เซิร์ฟเวอร์ที่ปรับให้เหมาะสมสำหรับ Microsoft SQL Server


2
  1. ด้วยเงินทั้งหมดที่มีกับ บริษัท ฐานข้อมูลหลักและกลุ่มนักพัฒนาขนาดใหญ่บนแอพโอเพนซอร์ส db หากมีวิธีที่จะทำพวกเขาจะได้คิดออกแล้วตอนนี้ (และทำลายผลลัพธ์ทั่วอินเทอร์เน็ต )

  2. ฉันจะไม่ สร้างเกณฑ์มาตรฐานเฉพาะสำหรับความต้องการและสภาพแวดล้อมที่เฉพาะเจาะจงแทน

ในบางจุดจำนวนเงินที่มีอยู่และความเชี่ยวชาญของนักออกแบบที่มีฐานข้อมูลเฉพาะอาจกำหนดข้อ จำกัด มากกว่าสิ่งใด Oracle dba ที่ดีจะทำงานได้ดีที่สุดกับผู้พัฒนารุ่นเยาว์ไม่ว่าจะเลือกแพลตฟอร์มใด


1

ไม่ความแตกต่างระหว่างสิ่งเหล่านี้เป็นสิ่งที่ทำให้คนคนหนึ่งมีมาตรฐาน

ที่กล่าวว่าการพัฒนาเว็บไซต์เช่นComputer Language Benchmarks Gameซึ่งรวมถึงการทดสอบที่หลากหลายและทำให้ง่ายต่อการเปรียบเทียบการทดสอบ (การทดสอบเฉพาะภาษากับภาษาหรือคอมโพสิตของหลายภาษา) จะเป็นประโยชน์บางอย่าง (ที่ อย่างน้อยก็ในสายตาของฉัน) โดยเฉพาะอย่างยิ่งหากมีการตั้งค่าเพื่อให้ชุมชนสามารถส่งคำตอบและปรับปรุงการเรียกสั้น ๆ ในสคีมาหรือการสืบค้น

ในกรณีของไซต์มาตรฐาน DB แทนที่จะใช้อัลกอริธึม (เช่นในกรณีของการยิงภาษา) การทดสอบอาจประกอบด้วยข้อมูลดิบที่ต้องจัดเก็บและดึงข้อมูลแล้วตามข้อ จำกัด เฉพาะ ตัวอย่างเช่นอาจมีชุดของข้อมูลดิบที่มีข้อมูลซึ่งเป็นตัวแทนของสคีมาอย่างง่าย ๆ ว่าห้องสมุดชุมชนอาจใช้อะไรในการติดตามลูกค้าและหนังสือ แต่ละฐานข้อมูลจะต้องเก็บบันทึกทั้งหมด 1 ล้านระเบียนจากนั้นดึงข้อมูลชุดย่อยบางส่วนของข้อมูลที่ตรงตามข้อ จำกัด จากนั้นอาจมีชุดข้อมูลที่แสดงถึงโครงสร้าง / ความสัมพันธ์ที่เรียบง่าย (อาจเป็นระบบความคิดเห็นที่ใช้สำหรับไซต์เช่น ESPN และอื่น ๆ ) ที่มี 100 ล้านเรคคอร์ดและมีชุดการสืบค้นที่ต้องดำเนินการ . เป็นต้น

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


0

ฉันต้องการเพิ่มเหตุผลอีกสองสามข้อทำไมคุณไม่สามารถเปรียบเทียบฐานข้อมูลทุกประเภทได้

  1. ระบบฐานข้อมูลมีสองทิศทางที่สำคัญ: OLAP และ OLTP (ดูการเปรียบเทียบ )

  2. ดังที่คุณกล่าวว่ายังมีระบบฐานข้อมูลเชิงสัมพันธ์และเชิงเอกสาร ในขณะที่ RDBS ปฏิบัติตามหลักการของกรดอย่างเคร่งครัดใน DBS เชิงเอกสารส่วนใหญ่คุณสามารถตัดสินใจได้ว่าข้อมูลที่อ่อนแอนั้นเพียงพอสำหรับการใช้งานของคุณ ทำให้การล็อคและการตั้งเวลาทำได้ง่ายขึ้นมาก

ในระยะสั้น:คุณจะไม่เถียงว่า Lamborghini เป็นรถที่ดีที่สุดในโลก นึกถึงปริมาณของลำตัวจำนวนที่นั่งหรือระยะทาง

ในฐานะที่เป็นหมายเหตุด้านข้าง: นี่คือมาตรฐานสำหรับระบบฐานข้อมูล OLTP

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