การแบ่งพาร์ติชันตาราง

การออกแบบฐานข้อมูล

Lis Sulmont

Curriculum Manager

ทำไมต้องแบ่งพาร์ติชัน?

ตารางขยายใหญ่ขึ้น (หลักร้อย GB / TB)

ปัญหา: คิวรีและการอัปเดตช้าลง

สาเหตุ: เช่น อินเดกซ์ใหญ่เกินกว่าจะโหลดในหน่วยความจำ

วิธีแก้: แบ่งตารางออกเป็นส่วนย่อย (= การแบ่งพาร์ติชัน)

ภาพไฟล์เอกสารจัดเก็บตามวันที่

การออกแบบฐานข้อมูล

ทบทวน Data Modeling

 

1. Conceptual data model

2. Logical data model

สำหรับการแบ่งพาร์ติชัน logical data model จะเหมือนเดิม

3. Physical data model

การแบ่งพาร์ติชันเป็นส่วนหนึ่งของ physical data model

การออกแบบฐานข้อมูล

การแบ่งพาร์ติชันในแนวตั้ง

การแบ่งพาร์ติชันในแนวตั้ง

แบ่งตารางได้แม้จะนอร์มัลไลซ์แล้วอย่างสมบูรณ์

การออกแบบฐานข้อมูล

การแบ่งพาร์ติชันในแนวตั้ง: ตัวอย่าง

ตัวอย่างการแบ่งพาร์ติชันในแนวตั้ง

เช่น เก็บ long_description ไว้บนสื่อบันทึกที่ช้ากว่า

การออกแบบฐานข้อมูล

การแบ่งพาร์ติชันในแนวนอน

การแบ่งพาร์ติชันในแนวนอน

การออกแบบฐานข้อมูล

การแบ่งพาร์ติชันในแนวนอน: ตัวอย่าง

การแบ่งพาร์ติชันในแนวนอน: ตารางตัวอย่าง

การออกแบบฐานข้อมูล

การแบ่งพาร์ติชันในแนวนอน: ตัวอย่าง

 

การแบ่งพาร์ติชันในแนวนอน: ตัวอย่าง

 

CREATE TABLE sales (
    ...
    timestamp DATE NOT NULL
)
PARTITION BY RANGE (timestamp);

CREATE TABLE sales_2019_q1 PARTITION OF sales FOR VALUES FROM ('2019-01-01') TO ('2019-03-31'); ... CREATE TABLE sales_2019_q4 PARTITION OF sales FOR VALUES FROM ('2019-10-01') TO ('2020-01-31');
CREATE INDEX ON sales ('timestamp');
การออกแบบฐานข้อมูล

ข้อดี/ข้อเสียของการแบ่งพาร์ติชันในแนวนอน

ข้อดี

  • อินเดกซ์ของพาร์ติชันที่ใช้งานหนักโหลดได้พอดีในหน่วยความจำ
  • ย้ายข้อมูลไปยังสื่อบันทึกที่เหมาะสม: ช้าหรือเร็ว
  • ใช้ได้ทั้ง OLAP และ OLTP

ข้อเสีย

  • การแบ่งพาร์ติชันตารางที่มีอยู่แล้วอาจยุ่งยาก
  • ข้อจำกัดบางอย่างไม่สามารถกำหนดได้
การออกแบบฐานข้อมูล

ความสัมพันธ์กับ Sharding

Sharding

การออกแบบฐานข้อมูล

มาฝึกกันเถอะ!

การออกแบบฐานข้อมูล

Preparing Video For Download...