0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hướng Dẫn Chi Tiết Loại Bỏ Phân Mảnh Trong Cơ Sở Dữ Liệu Oracle

Đăng vào 6 ngày trước

• 3 phút đọc

1. Vấn Đề Phân Mảnh Dữ Liệu Trong Cơ Sở Dữ Liệu Oracle

Extent là đơn vị lưu trữ trong cơ sở dữ liệu Oracle, chứa một hoặc nhiều block dữ liệu liền kề trên đĩa, được cấp phát cho đối tượng như bảng hoặc chỉ mục. Khi bảng hoặc chỉ mục cần thêm không gian, Oracle sẽ cấp phát một extent mới.

Mối Quan Hệ Giữa Segment, Extent, Block: Một segment bao gồm nhiều extent, và mỗi extent chứa nhiều block dữ liệu liền kề trên đĩa.

Hiểu Lầm Về Phân Mảnh Dữ Liệu và Hiệu Suất:

  • Số lượng extent không luôn luôn gây ảnh hưởng đến hiệu suất. Có hai quan niệm sai lầm: một là số lượng extent luôn ảnh hưởng đến hiệu suất, và hai là nó không bao giờ ảnh hưởng. Thực tế, ảnh hưởng của nó phụ thuộc vào tình huống cụ thể và cách quản lý không gian của hệ thống.

Tác Động Của Chỉ Mục Bitmap Với Nhiều Extent Không Liền Kề:

  • Chỉ mục bitmap không nên chứa nhiều extent không liền kề, vì điều này sẽ gây ra vấn đề nghiêm trọng về hiệu suất. Dữ liệu bị phân tán khiến việc truy xuất chậm hơn.

Quản Lý Tablespace Để Giảm Phân Mảnh:

  • Tablespace quản lý cục bộ (locally managed tablespace) là phương pháp hiệu quả giúp giảm thiểu các vấn đề liên quan đến extent, cải thiện hiệu suất và quản lý không gian tốt hơn.

Tái Tổ Chức Dữ Liệu:

  • Tái tổ chức không luôn cần thiết, nhưng khi cần thiết, người quản trị cơ sở dữ liệu (DBA) có thể thực hiện mà không làm gián đoạn hoạt động hệ thống.

Các Bước Để Tránh Vấn Đề Liên Quan Đến Extent

  1. Sử Dụng Tablespace Có Quản Lý Cục Bộ Với Kích Thước Đơn Giản:
    Sử dụng tablespace với kích thước extent đồng nhất giúp tối ưu hóa quản lý không gian lưu trữ và giảm phân mảnh.

  2. Chọn Kích Thước Extent Là Bội Số Của Kích Thước Block:
    Chọn kích thước extent phù hợp giúp tối ưu hóa việc lưu trữ dữ liệu và giảm thiểu lãng phí.

  3. Di Chuyển Bảng Sang Tablespace Phù Hợp:
    Khi một bảng phát triển lớn hơn, di chuyển nó đến tablespace có kích thước extent lớn hơn để hạn chế phân mảnh.

  4. Sử Dụng Quản Lý Không Gian Phân Đoạn Tự Động (ASSM):
    ASSM giúp tự động phân phối không gian, ngăn chặn hiện tượng row chaining, từ đó cải thiện hiệu suất truy xuất.

  5. Giám Sát Thường Xuyên Cơ Sở Dữ Liệu:
    Theo dõi các segment lớn để đảm bảo hiệu suất không bị giảm do quá nhiều extent.

MẸO
Thường xuyên truy vấn bảng DBA_SEGMENTS để phát hiện sớm các vấn đề liên quan đến extent, tránh ảnh hưởng đến hiệu suất.

2. Kích Thước Extent Phù Hợp

Khi truy cập một bảng, dữ liệu thường được truy cập thông qua ROWID. Phương pháp này hoạt động hiệu quả hơn và không bị ảnh hưởng nhiều bởi số lượng extent trong segment. Kích thước block thường từ 4K đến 32K. Việc sử dụng extent là bội số của kích thước block giúp tối ưu hóa việc lưu trữ và truy xuất dữ liệu.

Nếu một segment có hơn 4096 extent, xem xét chuyển sang một tablespace với kích thước extent phù hợp hơn để giảm tải trong quá trình lưu trữ.

3. Tránh Hiện Tượng Chaining Bằng Cách Đặt PCTFREE Đúng Cách

Khi một hàng được tạo trong bảng, dữ liệu sẽ được lưu vào block. Nếu một hàng không đủ không gian để lưu trữ sau khi cập nhật, hiện tượng chaining sẽ xảy ra, làm giảm hiệu suất. Kiểm tra tình trạng chaining bằng cách sử dụng tập lệnh mà Oracle cung cấp.

Để khắc phục tình trạng này, cần đặt PCTFREE (tỷ lệ không gian dành riêng trong một block để cập nhật) một cách hợp lý:

  • Đối với bảng có nhiều cập nhật, nên tăng PCTFREE lên 20% hoặc 30%.
  • Đối với các bảng ít cập nhật, có thể giảm xuống 5% hoặc 0%.

4. Thông Tin Kết Nối

Nếu bạn muốn thảo luận thêm về bài viết này, hãy kết nối với tôi trên LinkedIn và Facebook:

Rất mong được kết nối và cùng thảo luận!
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào