QUẢN LÝ TEMPORARY SEGMENTS

Một phần của tài liệu KIẾN TRÚC và QUẢN TRỊ cơ sở dữ LIỆU ORACLE (Trang 138 - 143)

Temporary segments ủược sử dụng khi Oracle server thực cỏc hiện cõu lệnh sắp xếp mà khụng thể sử dụng vựng khụng gian trong bộ nhớ do khụng ủủ, vớ dụ như:

SELECT. . . ORDER BY CREATE INDEX

SELECT DISTINCT SELECT. . . GROUP BY SELECT. . . UNION

Dung lượng bộ nhớ cần thiết cho tiến trỡnh sắp xếp ủược xỏc ủịnh dựa trờn tham số khởi tạo SORT_AREA_SIZE. Trong một số trường hợp, nhiều thao tỏc sắp xếp cựng ủược sử dụng và cần nhiều bộ nhớ hơn. Khi này bộ nhớ trong của mỏy là khụng thể ủỏp ứng ủược và kết quả của việc sắp xếp ủú cần phải ủược tạm thời lưu lờn ủĩa. Vựng ủĩa lưu trữ cỏc dữ liệu trung gian này chính là temporary segments.

Temporary segments trong tablespace ủược Oracle server tạo lập với mục ủớch sử dụng làm vùng nhớ trung gian hỗ trợ thao tác sắp xếp.

Hình vẽ 58. Temporary segment

12.1.1. Phân loi temporary segments

Cỏc temporary segments cú thể ủược tạo trờn một permanent tablespace hoặc trờn một temporary tablespace. User cú thể sử dụng một trong cỏc kiểu tablespaces này ủể sắp xếp.

Hình vẽ 59. Phân loại temporary segment

Temporary Tablespace

Một temporary tablespace ủược sử cho cỏc temporary segments tương ứng và khụng chứa bất kỳ segment nào có kiểu khác. Ta có thể tạo các temporary tablespace theo câu lệnh SQL sau:

CREATE TABLESPACE tablespace_name TEMPORARY DATAFILE filespec [autoextend_clause]

[ , filespec [autoextend_clause]] ...

Một permanent tablespace cú thể chuyển ủổi thành dạng temporary tablespace bằng cỏch sử dụng câu lệnh:

ALTER TABLESPACE tablespace_name TEMPORARY

Lưu ý: với cõu lờnh trờn, tablespace khụng ủược phộp chứa bất kỳ một ủối tượng thường trỳ nào (như: table, store procedure, ...). Một temporary tablespace cú thể chuyển ủổi lại thành permanent tablespace thụng qua cõu lệnh SQL dưới ủõy:

ALTER TABLESPACE tablespace_name PERMANENT

Oracle server có thể tạo một temporary segment trong một permanent tablespace với số ủiều kiện sau:

User thực hiện cõu lệnh sắp xếp cần ủến vựng khụng gian trờn ủĩa.

User chạy cõu lệnh mà nú ủó ủược gỏn cho một permanent tablespace ủể thực hiện sắp xếp.

Khi một permanent tablespace ủược sử dụng cho việc sắp xếp, một instance cú thể cú một hoặc nhiều temporary segment trong tablespace.

Một temporary segment sẽ ủược hủy bởi tiến trỡnh nền SMON khi kết thỳc cõu lệnh sắp xếp và vựng khụng gian ủó cấp phỏt sẽ ủược giải phúng ủể cho cỏc ủối tượng khỏc của database

sử dụng. Permanent tablespaces ủược sử dụng cho việc sắp xếp, cú ba vựng khụng gian trong tablespace cú thể ủược phõn vựng khỏc nhau. Thụng thường, mỗi tablespace nờn ủược sử dụng cho từng tiến trỡnh sắp xếp khỏc nhau.

Khi một temporary tablespaces ủược sử dụng cho cỏc temporary segments, Instance chỉ tạo một segment dựng ủể sắp xếp cho tablespace. Một vài transactions cần ủến sắp xếp trờn ổ ủĩa cú thể sử dụng cựng segment. Tuy nhiờn, một extent thỡ khụng thể cựng chia sẻ ủồng thời cho nhiều transactions khác nhau.

12.1.2. S dng các Sort Segments

Sort segment ủược tạo bởi cõu lệnh sắp xếp ủầu tiờn sử dụng tới temporary tablespace cho việc sắp xếp. Và sort segment chỉ bị hủy khi tắt (shutdown) database. Việc này làm giảm bớt số lần cấp phát và thu hồi các sort segments phục vụ cho công việc sắp xếp, làm tăng năng suất hệ thống. Oracle không hạn chế số lượng các extents cấp phát cho mỗi sort segment thuộc một temporary tablespace.

12.1.3. Sort Extent Pool

Oracle server lưu lại chi tiết sort segment trong vùng Sort Extent Pool của vùng nhớ SGA, mỗi cõu lệnh cần tới cỏc vựng trống ủể thực hiện sắp xếp cú thể tỡm cỏc extent rỗi trong vùng nhớ này.

12.2.CP PHÁT KHÔNG GIAN CHO TEMPORARY SEGMENT

Temporary tablespaces ủược sử dụng ủể tăng hiệu quả sắp xếp dữ liệu. Kớch thước của cỏc extents trong temporary segment ủược xỏc ủịnh bởi DEFAULT STORAGE clause của tablespace tương ứng.

Do lượng dữ liệu ghi lên temporary segment bằng phần nguyên lần giá trị SORT_AREA_SIZE. Do vậy, ta nờn ủặt INITIAL = NEXT = (n*SORT_AREA_SIZE)+

DB_BLOCK_SIZE

Giỏ trị PCTINCREASE=0, ủể ủảm bảo cỏc extents cú cựng kớch thước.

12.3.THÔNG TIN V CÁC TEMPORARY SEGMENT

Hình vẽ 60. Thu nhận thông tin về database instance

Ta cú thể lấy ủược cỏc thụng tin về temporary segment trong một số bảng từ ủiển dữ liệu:

DBA_SEGMENTS: chứa thông tin về tất cả các loại segments trong database.

V$SORT_SEGMENT: cho biết trạng thái của các sort extent pool (vùng không gian sắp xếp).

Với từ ủiển dữ liệu này, ta cú thể biết ủược những thụng tin sau:

Tên cột Diễn giải

TABLESPACE_NAME Tên temporary tablespace EXTENT_SIZE Kích thước của extent TOTAL_EXTENTS Tổng số các extents TOTAL_BLOCKS Tổng số các blocks

USED_EXTENTS Số lượng extents ủó sử dụng USED_BLOCKS Số lượng blocks ủó sử dụng FREE_EXTENTS Số lượng extents còn trống FREE_BLOCKS Số lượng blocks còn trống

MAX_SORT_SIZE Kớch thước tối ủa của vựng dữ liệu sắp xếp MAX_SORT_BLOCKS Số lượng blocks tối ủa dựng ủể sắp xếp dữ liệu Ví dụ:

SVRMGR> SELECT tablespace_name, extent_size, 2> total_extents, max_sort_blocks

3> FROM v$sort_segment;

TABLESPACE_NAME EXTENT_SIZ TOTAL_EXTE MAX_SORT_B --- --- --- ---

TEMP 128 1 128

1 row selected.

MAX_SORT_SIZE và MAX_SORT_BLOCKS là số lượng các extents và các blocks sử dụng bởi phộp sắp xếp lớn nhất. Thụng tin này là hữu ớch trong việc ủiều chỉnh kớch thước của temporary tablespace

V$SORT_USAGE: cho biết thông tin về các sắp xếp hiện có của instance, ta kết hợp với V$SESSION ủể biết thờm cỏc thụng tin:

Ví dụ:

SVRMGR> SELECT s.username, u."USER", u.tablespace, 2> u.contents, u.extents, u.blocks

3> FROM v$session s,v$sort_usage u 4> WHERE s.saddr=u.session_addr;

USERNAME USER TABLESPACE CONTENTS EXTENTS BLOCKS --- --- --- --- --- --- SYSTEM SYS TEMP TEMPORARY 1 128 1 row selected.

Một phần của tài liệu KIẾN TRÚC và QUẢN TRỊ cơ sở dữ LIỆU ORACLE (Trang 138 - 143)

Tải bản đầy đủ (PDF)

(266 trang)