ฉันเคยดำน้ำในเรื่องนี้เช่นกันและถึงแม้ว่าฉันจะอ้างถึงเรื่องนี้มานาน แต่ก็มีข้อเท็จจริงที่สำคัญบางประการที่ฉันได้รวบรวมและจุดที่ฉันต้องการแบ่งปัน:
พาร์ทิชันที่เป็นส่วนของฐานข้อมูลเชิงตรรกะหรือองค์ประกอบของมันเข้าไปในส่วนที่เป็นอิสระที่แตกต่างกัน โดยปกติการแบ่งพาร์ติชันฐานข้อมูลจะทำเพื่อความสามารถในการจัดการประสิทธิภาพหรือเหตุผลด้านความพร้อมใช้งานสำหรับการทำโหลดบาลานซ์
https://en.wikipedia.org/wiki/Partition_(database)
Shardingเป็นประเภทของการแบ่งพาร์ติชันเช่นHorizontal Partitioning (HP)
นอกจากนี้ยังมีVertical Partitioning (VP) โดยที่คุณแบ่งตารางออกเป็นส่วนย่อย ๆ การนอร์มัลไลซ์ยังเกี่ยวข้องกับการแบ่งคอลัมน์ข้ามตารางนี้ แต่การแบ่งพาร์ติชันตามแนวตั้งนอกเหนือไปจากคอลัมน์นั้น
https://en.wikipedia.org/wiki/Shard_(database_architecture)
ฉันชอบคำตอบของ Tony Baco เกี่ยวกับ Quora ที่เขาทำให้คุณคิดในแง่ของสคีมา (แทนที่จะเป็นคอลัมน์และแถว) เขากล่าวว่า ...
"การแบ่งพาร์ติชันในแนวนอน " หรือการแบ่งส่วนกำลังจำลอง [คัดลอก] สคีมาแล้วหารข้อมูลตามคีย์ชาร์ด
"การแบ่งพาร์ติชันตามแนวตั้ง " เกี่ยวข้องกับการแบ่งสคีมา (และข้อมูลดำเนินต่อไปตามการขับขี่)
https://www.quora.com/Whats-the-difference-between-sharding-DB-tables-and-partitioning-them
คู่มือการแบ่งพาร์ติชันของฐานข้อมูลของออราเคิลมีตัวเลขที่ดี ฉันได้คัดลอกบางตอนของบทความ
https://docs.oracle.com/cd/B28359_01/server.111/b32024/partition.htm
เมื่อพาร์ทิชันตาราง
ต่อไปนี้เป็นคำแนะนำสำหรับการแบ่งพาร์ติชันตารางเมื่อ:
- ตารางที่มากกว่า 2 GB ควรได้รับการพิจารณาว่าเป็นตัวเลือกสำหรับการแบ่งพาร์ติชันเสมอ
- ตารางที่มีข้อมูลประวัติซึ่งข้อมูลใหม่ถูกเพิ่มลงในพาร์ติชันใหม่ล่าสุด ตัวอย่างทั่วไปคือตารางประวัติที่มีเพียงข้อมูลของเดือนปัจจุบันเท่านั้นที่สามารถอัปเดตได้และอีก 11 เดือนเป็นแบบอ่านอย่างเดียว
- เมื่อเนื้อหาของตารางจะต้องมีการกระจายไปทั่วอุปกรณ์เก็บข้อมูลประเภทต่างๆ
การตัดแต่งพาร์ติชัน
การตัดพาร์ติชันเป็นวิธีที่ง่ายที่สุดและสำคัญที่สุดในการปรับปรุงประสิทธิภาพโดยใช้การแบ่งพาร์ติชัน การตัดพาร์ติชันมักจะสามารถปรับปรุงประสิทธิภาพการสืบค้นได้ด้วยคำสั่งหลายขนาด ตัวอย่างเช่นสมมติว่าแอปพลิเคชันมีตารางคำสั่งซื้อที่มีบันทึกประวัติของคำสั่งซื้อและตารางนี้ได้รับการแบ่งพาร์ติชันเป็นสัปดาห์ แบบสอบถามที่ขอคำสั่งซื้อสำหรับสัปดาห์เดียวจะเข้าถึงพาร์ติชันเดียวของตารางคำสั่งซื้อ หากตาราง Orders มีข้อมูลประวัติ 2 ปีเคียวรีนี้จะเข้าถึงหนึ่งพาร์ติชันแทน 104 พาร์ติชัน เคียวรีนี้อาจเรียกใช้งานเร็วขึ้น 100 เท่าเนื่องจากการตัดพาร์ติชัน
กลยุทธ์การแบ่งพาร์ติชัน
คุณสามารถอ่านข้อความและเห็นภาพของพวกเขาซึ่งอธิบายทุกอย่างได้ดี
และท้ายที่สุดสิ่งสำคัญคือต้องเข้าใจว่าฐานข้อมูลนั้นต้องใช้ทรัพยากรอย่างมาก:
- ซีพียู
- ดิสก์
- I / O
- หน่วยความจำ
DBA หลายแห่งจะแบ่งพาร์ติชันในเครื่องเดียวกันโดยที่พาร์ติชันจะแบ่งใช้ทรัพยากรทั้งหมด แต่ให้การปรับปรุงในดิสก์และ I / O โดยแยกข้อมูลและ / หรือดัชนี
ในขณะที่กลยุทธ์อื่น ๆ จะใช้สถาปัตยกรรม "ไม่มีอะไรที่แชร์" ซึ่งส่วนจะอยู่ในหน่วยการคำนวณที่แยกและชัดเจน (โหนด) ซึ่งมี CPU, ดิสก์, I / O และหน่วยความจำ 100% ให้ข้อดีและความซับซ้อนเป็นของตัวเอง
https://en.wikipedia.org/wiki/Shared_nothing_architecture