Chào mừng đến với bài viết "Quản lý không gian trống như thế nào? – Quản lý db oracle block". Trong thế giới số ngày nay, việc quản lý cơ sở dữ liệu là một phần quan trọng của nhiều doanh nghiệp và tổ chức. Để đảm bảo sự hiệu quả và độ tin cậy của cơ sở dữ liệu, việc quản lý không gian trống là một nhu cầu cấp bách.
Với các lợi ích được cung cấp bởi db oracle server, bài viết này sẽ giúp cho người đọc hiểu rõ hơn về cách quản lý không gian trống trong cơ sở dữ liệu Oracle. Từ việc sử dụng chức năng nén dữ liệu đến quản lý việc phân bổ không gian tạm dừng, các kỹ thuật này sẽ được giải thích một cách chi tiết và dễ hiểu để đáp ứng nhu cầu quản lý không gian trống trong cơ sở dữ liệu của người đọc.
Với sự hiểu biết về các kỹ thuật này, người đọc sẽ có thể quản lý cơ sở dữ liệu của mình một cách hiệu quả và đáng tin cậy hơn.
Khái quát về quản lý không gian - db oracle block management
“DB Oracle tự động quản lý không gian và cung cấp cảnh báo cho các vấn đề tiềm ẩn, đồng thời đề xuất các giải pháp khả thi. Điều này bao gồm tính năng quản lý tập tin OMF, quản lý không gian trống bằng bảng bitmaps, quản lý không gian chủ động với ngưỡng mặc định và cảnh báo được tạo bởi máy chủ, khôi phục không gian bằng cách co giãn đoạn và định nghĩa lại bảng trực tuyến, cùng với tính năng lập kế hoạch năng lực với báo cáo tăng trưởng.”
Bạn có thể sử dụng Oracle Managed Files (OMF) để thực hiện các thao tác với đối tượng cơ sở dữ liệu thay vì tên tập tin. Máy chủ cơ sở dữ liệu Oracle có thể quản lý không gian trống trong tablespace với bitmaps. Điều này được gọi là "quản lý cục bộ" tablespace.
Bên cạnh đó, không gian trống trong các đoạn được đặt trong tablespace được quản lý cục bộ có thể được quản lý bằng bitmaps. Điều này được gọi là "Quản lý Không Gian Đoạn Tự Động". Sử dụng bitmaps sẽ giảm thiểu việc tinh chỉnh không gian cho các bảng và cải thiện hiệu suất trong thời điểm tải cao.
Máy chủ cơ sở dữ liệu Oracle cũng cung cấp chức năng mở rộng tập tin dữ liệu tự động, để tập tin có thể tự động mở rộng dựa trên lượng dữ liệu trong tập tin. Khi tạo cơ sở dữ liệu, giám sát không gian chủ động được kích hoạt mặc định và máy chủ cơ sở dữ liệu Oracle sẽ giám sát việc sử dụng không gian trong quá trình phân bổ và thu hồi không gian và cảnh báo nếu không gian trống dưới ngưỡng đã định nghĩa trước.
Ngoài ra, có các trợ lý và trình hướng dẫn giúp bạn khôi phục không gian và cơ sở dữ liệu Oracle cung cấp ước tính không gian dựa trên cấu trúc bảng và số hàng, cũng như báo cáo xu hướng tăng dựa trên việc sử dụng lịch sửu không gian được lưu trữ trong Automatic Workload Repository (AWR) để lập kế hoạch về khả năng.
Quản lý không gian trống của db oracle block
Quản lý không gian(db oracle block) bao gồm việc quản lý không gian trống ở mức khối (block). Với Quản lý Segment Space, mỗi block được chia thành bốn phần, được gọi là FS1 (giữa 0% và 25% không gian trống), FS2 (25% đến 50% không gian trống), FS3 (50% đến 75% không gian trống) và FS4 (75% đến 100% không gian trống).
Tùy thuộc vào mức độ không gian trống trong khối, trạng thái của khối sẽ được cập nhật tự động. Như vậy, tùy thuộc vào độ dài của một hàng(row) được insert vào, bạn có thể xác định khối nào có thể được sử dụng để thực hiện hoạt động insert.
Lưu ý rằng trạng thái "Full" có nghĩa là một khối không còn khả dụng để insert hàng mới vào. Trong ví dụ trên, khối bên trái là một khối FS3 vì nó có giữa 50% và 75% không gian trống. Sau một số lệnh insert và update, PCTFREE đã đạt đến (đường gạch) và không còn thể chèn hàng mới vào khối đó. Khối này được xem như là một khối "Full" hoặc khối FS1.
Khối sẽ được xem xét để insert row lại ngay khi mức không gian trống của nó giảm xuống dưới phần tiếp theo. Trong trường hợp trước đó, nó sẽ được xếp hạng FS2 ngay khi không gian trống vượt quá 25%.
Lưu ý: Loại dữ liệu đối tượng lớn (LOB) (BLOB, CLOB, NCLOB và BFILE) không sử dụng tham số lưu trữ PCTFREE. Khối nén chưa nén và OLTP có giá trị PCTFREE mặc định là 10; khối nén cơ bản có giá trị PCTFREE mặc định là 0.
Quá trình Row Chaining và Migration
Quá trình "Row chaining and migration" trong hệ quản trị cơ sở dữ liệu Oracle. Khi độ dài của một hàng trong block vượt quá khả năng lưu trữ của block hiện tại, dữ liệu sẽ được lưu trữ trong một block mới, trong khi định danh vật lý ban đầu (ROWID) của hàng vẫn được giữ nguyên.
Tuy nhiên, để truy xuất dữ liệu, hệ thống sẽ cần phải đọc hai block. Để giải quyết vấn đề này, Segment Advisor được sử dụng để tìm kiếm các đoạn chứa các hàng đã di chuyển. Việc này cho phép tự động gộp các khoảng trống không gian trong block, giúp cải thiện hiệu suất của cơ sở dữ liệu.
Khi dữ liệu của một hàng trong bảng quá lớn để chứa trong một khối dữ liệu duy nhất, db oracle sẽ phân chia dữ liệu cho hàng đó thành nhiều khối dữ liệu. Điều này thường xảy ra với các hàng có kích thước lớn, ví dụ như hàng chứa các dữ liệu kiểu LONG hoặc LONG RAW. Đây là trường hợp không thể tránh được.
Tuy nhiên, trong một trường hợp khác, khi một hàng ban đầu có thể chứa trong một khối dữ liệu nhưng sau khi cập nhật thì kích thước hàng tăng lên, và không còn khối dữ liệu trống nào để chứa thêm dữ liệu của hàng đó.
Trong trường hợp này, db oracle sẽ di chuyển dữ liệu cho toàn bộ hàng sang một khối dữ liệu mới, miễn là hàng đó có thể chứa trong khối dữ liệu mới đó. Database sẽ lưu giữ phần hàng ban đầu để trỏ đến khối dữ liệu mới chứa hàng được di chuyển. ROWID của hàng di chuyển sẽ không thay đổi.
Khi một hàng bị phân chia hoặc di chuyển, hiệu suất nhập/xuất (I/O) của hàng đó sẽ giảm do Oracle Database phải quét nhiều hơn một khối dữ liệu để lấy thông tin cho hàng. Segment Advisor sẽ tìm các phân đoạn chứa hàng bị di chuyển do UPDATE để giúp tổng hợp khối dữ liệu và cải thiện hiệu suất của database.
Điều này có nghĩa là khi một truy vấn INSERT hoặc UPDATE cố gắng sử dụng một khối dữ liệu có đủ không gian trống cho một mảnh dữ liệu mới hoặc không gian trống bị phân mảnh, thì Oracle Database sẽ tự động và trong suốt ghép lại không gian trống của khối dữ liệu. Sau khi ghép lại, lượng không gian trống sẽ giống như trước thao tác, nhưng không gian sẽ được sắp xếp liền kề nhau.