• Trang chủ
  • Bài viết
  • Developer store
  • 022. [Phần 4] Quản lý không gian trống như thế nào? | Monitoring tablespace – Giám sát việc sử dụng không gian trống của tablespace
Qui Truong

Ngày Đăng:

24/05/2023 18:12

Ngày Cập Nhật:

24/05/2023 18:12

Tác giả: Qui Truong
Ngày đăng: 24/05/2023 18:12

Xin chào! Bài viết này sẽ mang đến cho bạn một cái nhìn chi tiết về cách quản lý không gian trống một cách thông minh trong hệ thống cơ sở dữ liệu. Với sự ra đời của Table Shrinking - một công cụ giám sát đáng tin cậy, việc tối ưu hóa sử dụng không gian trống trong tablespace trở nên dễ dàng và hiệu quả hơn bao giờ hết.

Trên hành trình tìm hiểu cách giảm thiểu sự lãng phí không gian và tăng cường hiệu suất hệ thống, chúng ta sẽ khám phá những phương pháp quản lý tiên tiến để xác định, giám sát và kiểm soát không gian trống trong các bảng dữ liệu. Bằng cách sử dụng Table Shrinking, bạn sẽ có khả năng quản lý không gian trống một cách tự động và hiệu quả, giúp tối ưu hóa tài nguyên và giảm thiểu tác động đến hiệu suất hệ thống.

Dù bạn là một quản trị viên hệ thống, nhà phát triển phần mềm hay chuyên gia về cơ sở dữ liệu, bài viết này sẽ mang đến cho bạn kiến thức thực tế và hữu ích để nắm bắt bản chất của không gian trống trong tablespace và cách tiếp cận chúng một cách chuyên nghiệp.

Chủ động theo dỗi tablespace – Proactive tablespace monitoring

Việc quản lý việc sử dụng không gian đĩa cho tablespace được cơ sở dữ liệu thực hiện thông qua các phương pháp sau đây.

Đầu tiên, hệ thống sẽ thông báo cho bạn khi một tablespace sắp cạn kiệt không gian đĩa hoặc khi các đoạn(segment) cụ thể trong tablespace đó gần như hết không gian. Thông báo này giúp bạn nhanh chóng có biện pháp xử lý bằng cách cung cấp thêm không gian đĩa cho tablespace đó, tránh tình trạng không có đủ không gian.

Hơn nữa, thông tin được thu thập được lưu trữ trong Automatic Workload Repository (AWR) và được sử dụng để phân tích xu hướng tăng trưởng và lập kế hoạch năng lực của cơ sở dữ liệu. Điều này giúp bạn đánh giá và dự đoán tình trạng tăng trưởng của cơ sở dữ liệu, từ đó đưa ra kế hoạch phát triển phù hợp.

Để xem và chỉnh sửa thông tin tablespace trong Enterprise Manager Cloud Control, bạn có thể chọn Administration > Storage > Tablespaces. Sau đó, chọn tablespace mà bạn muốn và nhấp vào Edit để thực hiện các thay đổi cần thiết.

Ngưỡng và giải quyết các vấn đề không gian trống – Threshold and Resolving Space Prolems

Ngưỡng tablespace được xác định dựa trên việc đầy hoặc không gian khả dụng trong tablespace.

Có hai ngưỡng quan trọng và cảnh báo áp dụng cho một tablespace. Package DBMS_SERVER_ALERT chứa các thủ tục để thiết lập và lấy giá trị ngưỡng.

Khi đạt đến giới hạn của tablespace, một cảnh báo tương ứng được kích hoạt. Ngưỡng được biểu thị dưới dạng tỷ lệ phần trăm kích thước tablespace hoặc tổng số byte còn trống.

Nó được tính toán trong bộ nhớ. Bạn có thể định nghĩa cả ngưỡng dựa trên tỷ lệ phần trăm và dựa trên byte cho một tablespace. Cả hai ngưỡng này đều có thể tạo ra một cảnh báo hoặc cả hai đều có thể tạo ra một cảnh báo.

Thiết lập lý tưởng cho giá trị kích hoạt ngưỡng cảnh báo đảm bảo rằng cảnh báo được kích hoạt đủ sớm để đảm bảo có đủ thời gian giải quyết vấn đề trước khi trở nên khó khăn.

Cảnh báo cho thấy vấn đề có thể được giải quyết bằng cách thực hiện một hoặc nhiều trong các hành động sau:

  • Thêm không gian vào tablespace bằng cách thêm tệp hoặc điều chỉnh kích thước các tệp hiện có, hoặc làm cho một tệp hiện có tự mở rộng(Auto Extend).
  • Giải phóng không gian trên đĩa chứa các tệp tự mở rộng.
  • Thu nhỏ các đối tượng trống rải rác trong tablespace.

Giám sát không gian tablespace có khả năng sử dụng – Monitoring tablespace space usable

Trong quá trình thực hiện các hoạt động quản lý không gian, máy chủ cơ sở dữ liệu theo dõi việc sử dụng không gian. Thông tin này được tổng hợp bởi quy trình MMON. Khi đạt đến hoặc vượt qua ngưỡng của một tablespace, hệ thống sẽ kích hoạt một cảnh báo.

Tuy nhiên, không nên gửi cảnh báo cho các tablespace đang ở chế độ chỉ đọc hoặc các tablespace đã bị tắt vì không có nhiều hoạt động để thực hiện cho chúng.

Đối với các tablespace tạm(Temp), ngưỡng được định nghĩa dựa trên không gian đã sử dụng trong tablespace.

Trong trường hợp của các tablespace undo, một phạm vi có thể tái sử dụng nếu nó không chứa undo đang hoạt động hoặc undo đã hết hạn. Để tính toán vi phạm ngưỡng, tổng của các phạm vi undo đang hoạt động và undo đã hết hạn được xem như là không gian đã sử dụng.

Đối với các tablespace có tệp tự mở rộng, các ngưỡng được tính toán dựa trên kích thước tối đa mà bạn đã chỉ định hoặc kích thước tệp tối đa của hệ điều hành.

Shrinking Segments

Trong biểu đồ trên, mô tả hai giai đoạn của quá trình thu hẹp (shrink) một bảng.

Giai đoạn đầu tiên là giai đoạn compact (nén). Trong giai đoạn này, các hàng được di chuyển về phần trái của segment một cách tối đa. Để di chuyển hàng, hệ thống sử dụng gói tin để tránh vấn đề khóa dữ liệu.

Sau khi các hàng đã được di chuyển, giai đoạn thứ hai của quá trình shrink bắt đầu. Trong giai đoạn này, mức nước cao nhất (HWM) được điều chỉnh và không gian không sử dụng được giải phóng.

Câu lệnh COMPACT rất hữu ích khi bạn có các truy vấn dài ngày chạy qua quá trình shrink và cố gắng đọc từ các khối đã được thu hồi. Khi bạn sử dụng câu lệnh SHRINK SPACE COMPACT, tiến trình của quá trình shrink được lưu trữ trong các khối bitmap của đoạn tương ứng.

Điều này có nghĩa là khi bạn thực hiện lại quá trình shrink trên cùng một đoạn, máy chủ cơ sở dữ liệu Oracle sẽ ghi nhớ những gì đã được thực hiện trước đó. Bạn có thể thực hiện lại câu lệnh SHRINK SPACE mà không cần sử dụng câu lệnh COMPACT trong thời gian không sử dụng để hoàn thành giai đoạn thứ hai.

Kết quả của hoạt động shrinking – Results Shrinking Operation

Thu hẹp (shrink) một đoạn (segment) có kích thước thưa thớt cải thiện hiệu suất của các hoạt động quét và DML trên đoạn đó. Điều này xảy ra vì sau khi đoạn đã được thu hẹp, có ít khối hơn để xem xét. Điều này đặc biệt đúng với:

  • Quét toàn bộ bảng (ít khối hơn và dày đặc hơn)
  • Truy cập chỉ mục tốt hơn (ít I/O trong các truy vấn theo khoảng ROWID do cây chỉ mục được nén gọn hơn)

Bên cạnh đó, bằng cách thu hẹp các đoạn thưa thớt, bạn tăng cường hiệu suất sử dụng không gian bên trong cơ sở dữ liệu của bạn vì có nhiều không gian trống được cung cấp cho các đối tượng cần thiết.

Quá trình thu hẹp đoạn được quản lý để xử lý phụ thuộc chỉ mục trong quá trình thu hẹp bảng tương ứng. Các chỉ mục sẽ ở trạng thái có thể sử dụng sau khi thu hẹp bảng. Do đó, không cần thực hiện bất kỳ công việc bảo trì nào khác.

Quá trình thu hẹp thực tế được xử lý nội bộ như một hoạt động INSERT/DELETE. Tuy nhiên, các trigger DML không được thực thi vì dữ liệu chính nó không thay đổi.

Kết quả của quá trình thu hẹp đoạn có thể là giảm số hàng đã di chuyển. Tuy nhiên, bạn không nên luôn tin rằng số hàng đã di chuyển sẽ giảm sau khi một đoạn đã được thu hẹp. Điều này xảy ra vì quá trình thu hẹp đoạn có thể không chạm vào tất cả các khối trong đoạn. Do đó, không đảm bảo rằng tất cả các hàng đã di chuyển đã được xử lý.

Lưu ý: Đề nghị xây dựng lại các chỉ mục phụ trên một bảng tổ chức chỉ mục (IOT) sau một quá trình thu hẹp.

Thu hồi lại không gian trong các ASSM Segments - Reclaiming space within ASSM segments

Một thao tác thu hẹp (shrink) là một thao tác trực tuyến và được thực hiện tại chỗ vì nó không yêu cầu thêm không gian cơ sở dữ liệu để thực thi.

  1. Bạn không thể thực hiện thao tác thu hẹp trên các đoạn được quản lý bởi danh sách không gian trống (free lists). Nhưng bạn có thể thu hẹp các đoạn trong các tablespace tự động quản lý không gian đoạn (automatic segment space-managed).

    Tuy nhiên, các đối tượng sau không thể được thu hẹp khi chúng được lưu trữ trong các tablespace ASSM: 

    • Bảng trong các cụm (clusters)
    • Bảng có cột LONG
    • Bảng có materialized view thực hiện ngay khi commit (on-commit materialized views)
    • Bảng có materialized view dựa trên ROWID (ROWID-based materialized views)
    • Bảng ánh xạ IOT (IOT mapping tables)
    • Bảng có chỉ mục dựa trên hàm (function-based indexes)
  2. Đối với các đoạn heap-organized, ROW MOVEMENT phải được kích hoạt để thu hẹp có thể thực hiện.

Chia sẽ bài viết này

{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Qui Truong

Thông tin tác giả:

Xin chào mọi người, mình là Qui Trương. Hiện tại, ngoài công việc là một DBA thì mình còn là một người sáng tạo nội dung trên trang blog caitrang.com. Mỗi ngày, mình luôn tìm kiếm cách để chia sẻ những nội dung độc đáo, ý nghĩa và mang tính cảm hứng tới mọi người. Mình tin rằng qua từng dòng viết, mình có thể kết nối và tạo dựng một cộng đồng đọc giả thú vị và ý nghĩa.

Page [tcb_pagination_current_page] of [tcb_pagination_total_pages]

>