1 Minute 4 Change

Menu
  • Home
  • Code & Discover
    • Data Engineer
    • SQL
    • Flutter
    • Web Developer
  • Learn something
    • Languages
      • English
  • Chill Zone
    • Novels
      • Giả làm thần linh ở xã hội nguyên thủy
    • Games
    • Videos
  • About
  • Contact
Menu

Phân biệt Index và Partition trong cơ sở dữ liệu

Posted on Tháng 12 14, 2024Tháng 12 20, 2024 by Daisy

Mục lục

Toggle
  • 1. Định nghĩa
  • 2. Mục đích
  • 3. Cách hoạt động
  • 4. Ưu và nhược điểm
  • 5. Ví dụ minh họa
  • 6. Kết hợp Index và Partition

Index và Partition đều là các kỹ thuật trong cơ sở dữ liệu để tối ưu hóa hiệu suất truy vấn, nhưng chúng hoạt động theo những cách khác nhau và được sử dụng với mục đích khác nhau. Dưới đây là sự phân biệt chi tiết:

1. Định nghĩa

Index (Chỉ mục):

• Là một cấu trúc dữ liệu được xây dựng trên các cột của bảng nhằm tăng tốc độ truy vấn dữ liệu.

• Hoạt động như một bảng tra cứu giúp cơ sở dữ liệu tìm kiếm dữ liệu nhanh hơn thay vì quét toàn bộ bảng.

Ví dụ: Giống như mục lục của một cuốn sách, index giúp bạn nhanh chóng tìm được vị trí thông tin cần tìm mà không phải lật từng trang.

Partition (Phân vùng):

• Là cách chia nhỏ dữ liệu trong bảng thành các phân vùng (partition) dựa trên một tiêu chí nhất định, chẳng hạn như giá trị cột hoặc phạm vi ngày.

• Mỗi phân vùng là một phần vật lý độc lập của bảng và có thể được lưu trữ ở các vị trí khác nhau.

Ví dụ: Giống như chia sách thành các chương, mỗi chương lưu trữ thông tin liên quan đến một chủ đề cụ thể.

2. Mục đích

Đặc điểm Index Partition
Tăng tốc truy vấn Giảm thời gian truy vấn bằng cách tra cứu nhanh Phân chia dữ liệu để xử lý song song, cải thiện hiệu năng
Tối ưu hiệu suất Hữu ích với bảng lớn khi chỉ cần truy vấn một phần dữ liệu Tối ưu hóa khi dữ liệu quá lớn hoặc yêu cầu truy vấn theo nhóm dữ liệu
Tăng khả năng quản lý Không thay đổi cấu trúc bảng, chỉ thêm thông tin tra cứu Quản lý bảng lớn dễ hơn bằng cách chia thành nhiều phân vùng nhỏ

3. Cách hoạt động

Index:

1.Cơ sở dữ liệu tạo ra một bảng tra cứu (index table) chứa:

• Giá trị cột được index.

• Con trỏ (pointer) trỏ đến vị trí lưu trữ dữ liệu thực tế.

2. Khi thực hiện truy vấn, cơ sở dữ liệu sử dụng index để tìm vị trí dữ liệu nhanh hơn, thay vì duyệt toàn bộ bảng.

Partition:

1.Dữ liệu trong bảng được chia thành nhiều phân vùng dựa trên các tiêu chí như:

• Range Partitioning: Phân vùng dựa trên khoảng giá trị (ví dụ: dữ liệu năm 2023 ở một phân vùng, năm 2024 ở phân vùng khác).

• Hash Partitioning: Sử dụng hàm băm để chia dữ liệu ngẫu nhiên vào các phân vùng.

• List Partitioning: Chia theo danh sách giá trị cụ thể (ví dụ: phân vùng theo từng quốc gia).

• Composite Partitioning: Kết hợp nhiều phương pháp phân vùng.

2. Mỗi phân vùng có thể được lưu trữ trên các ổ đĩa khác nhau để giảm tải I/O.

4. Ưu và nhược điểm

Index:

Ưu điểm Nhược điểm
Tăng tốc độ truy vấn dữ liệu Tốn thêm không gian lưu trữ cho bảng index
Thích hợp cho truy vấn các bảng lớn Làm chậm các thao tác ghi (INSERT, UPDATE, DELETE)
Dễ dàng tạo và quản lý Index không hiệu quả nếu bảng chứa quá ít dữ liệu

Partition:

Ưu điểm Nhược điểm
Tăng hiệu năng truy vấn dữ liệu lớn Cấu hình phức tạp hơn so với index
Giảm tải I/O bằng cách đọc/ghi từng phân vùng nhỏ Không tối ưu cho truy vấn không theo tiêu chí phân vùng
Hữu ích trong quản lý bảng lớn với dữ liệu theo thời gian Yêu cầu lưu trữ phức tạp và quản lý nhiều tablespace

5. Ví dụ minh họa

Index – Tìm kiếm nhanh hơn

• Bảng KHACH_HANG có 10 triệu dòng, bạn muốn tìm khách hàng có MA_KHACH_HANG = ‘KH1234’.

• Nếu không có index, cơ sở dữ liệu phải quét toàn bộ bảng để tìm dòng chứa KH1234.

• Nếu tạo index trên cột MA_KHACH_HANG, cơ sở dữ liệu chỉ cần tra cứu index và truy xuất dòng đó nhanh hơn.

Partition – Chia nhỏ dữ liệu

• Bảng GIAO_DICH có 10 tỷ dòng, lưu trữ các giao dịch từ năm 2010 đến 2024.

• Bạn muốn truy vấn tất cả giao dịch trong năm 2023.

• Nếu dữ liệu được chia thành các phân vùng theo năm (2010, 2011, …, 2024), truy vấn sẽ chỉ quét phân vùng năm 2023 thay vì toàn bộ bảng.

6. Kết hợp Index và Partition

• Index trên Partition:

  • Mỗi phân vùng có thể có riêng một index để tăng tốc độ truy vấn trong phân vùng đó.
  • Ví dụ: Bảng GIAO_DICH được chia phân vùng theo năm và tạo index trên cột MA_KHACH_HANG cho từng phân vùng.

• Global Index trên Partition:

  • Khi cần tìm kiếm toàn bộ bảng (bao gồm nhiều phân vùng), index toàn cục giúp truy vấn nhanh hơn.

Khi nào dùng Index và Partition?

Tình huống Sử dụng Index Sử dụng Partition
Tìm kiếm nhanh một hoặc vài dòng dữ liệu ✅ ❌
Bảng rất lớn, cần tối ưu truy vấn theo nhóm dữ liệu ❌ ✅
Truy vấn không theo tiêu chí cụ thể ✅ ❌
Dữ liệu liên tục tăng theo thời gian, cần quản lý theo thời kỳ ❌ ✅
Tăng tốc cả đọc và ghi trong hệ thống lớn Kết hợp cả Index và Partition Kết hợp cả Index và Partition

Kết luận

• Index tăng tốc độ truy vấn bằng cách giảm thời gian tìm kiếm dữ liệu cụ thể.

• Partition chia nhỏ bảng thành các khối dữ liệu riêng biệt để giảm tải khi xử lý dữ liệu lớn hoặc truy vấn theo nhóm.

• Trong thực tế, chúng thường được kết hợp để tối ưu hóa cả truy vấn và quản lý dữ liệu.

Category: Code & Discover Data Engineer SQL

Điều hướng bài viết

← DevOps là gì?
API là gì? →

1minute4change.

ABOUT ME

One minute for change, mỗi ngày biết thêm một chút.

RECENT POSTS

  • Tháng 1 30, 2025 by Daisy So sánh báo cáo trong Tableau và BI Publisher
  • Tháng 1 21, 2025 by Daisy CDS (Card Data System) là gì?
  • Tháng 1 19, 2025 by Daisy Data Warehouse (DW), Operational Reporting System (ORS), và Operational Data Store (ODS)

CATEGORIES

  • Chill Zone (5)
  • Code & Discover (17)
  • Learn something (0)
  • Uncategorized (1)

TAG

  • API (2)
  • Bigdata (1)
  • CDS (1)
  • CRM (1)
  • DevOps (1)
  • Gialamthanlinhoxahoinguyenthuy (4)
  • HTML (1)
  • Khongcp (3)
  • Oracle (1)
  • Partition (2)
  • Report (1)
  • SQL (8)
  • WebAPI (1)
  • Xaydung (3)
  • Chill Zone (5)
  • Code & Discover (17)
  • Data Engineer (12)
  • Discover (3)
  • Flutter (1)
  • Novels (5)
  • SQL (11)
  • Uncategorized (1)
  • Web Developer (4)
© 2025 1 Minute 4 Change | Powered by Minimalist Blog WordPress Theme