Thứ Ba, 27 tháng 9, 2011

Tạo một vùng bảng trong DB2 - P3

Vùng bảng (Table Spaces) là một tầng lôgíc, nơi lưu trú của một số đối tượng cơ sở dữ liệu như các bảng, các khung nhìn và các chỉ mục. Một cơ sở dữ liệu có thể có nhiều vùng bảng. Khi một cơ sở dữ liệu được tạo ra lần đầu tiên, một tập hợp các vùng bảng được DB2 tạo ra một cách tự động.

Từ Trung tâm điều khiển, mở rộng HELLOWLD và nhấn phím Table Spaces. Bạn sẽ nhìn thấy ba vùng bảng khác nhau liệt kê trong cửa sổ hiển thị bên phải của Trung tâm điều khiển như Hình 7.

Hình 7. Khung nhìn vùng bảng trong Trung tâm điều khiển 

Các vùng bảng này được DB2 tạo ra khi tạo cơ sở dữ liệu HWLD. Cả hai SYSCATSPACE và TEMPSPACE1 là vùng bảng hệ thống và không thể hủy đi (drop) hoặc khởi tạo lại được. SYSCATSPACE là vùng bảng danh mục hệ thống, dùng để lưu trữ thông tin meta về cơ sở dữ liệu. TEMPSPACE1 dùng để lưu trữ kết quả tạm thời khi thực hiện một số thao tác cơ sở dữ liệu.
USERSPACE1 là vùng bảng mặc định của người sử dụng để lưu dữ liệu của người sử dụng như các bảng, khung nhìn và chỉ mục. Bất kỳ người sử dụng DB2 nào có đủ thẩm quyền đều có thể hủy đi và khởi tạo lại USERSPACE1 hoặc tạo ra nhiều hơn các vùng bảng của người sử dụng. Trong các phần sau sẽ trình bày nhiều hơn về thẩm quyền.

1. Vùng bảng SMS hay DMS

Khi bạn tạo ra một vùng bảng, bạn có thể lựa chọn để vùng bảng này là loại SMS hay DMS. 

SMS là viết tắt của System Managed Space (không gian do hệ thống quản lý) còn DMS là viết tắt của Database Managed Space (không gian do cơ sở dữ liệu quản lý). 

Trong một vùng bảng SMS, không gian được quản lý bởi hệ thống tệp của hệ điều hành và được cấp phát theo yêu cầu. Vùng bảng SMS cần cài đặt ban đầu ít hơn để tạo ra nó, cần xem xét quản lý ít hơn và nói chung là dễ dàng tạo ra và sử dụng do không gian nhớ được cấp phát một cách tự động khi cần thiết. 

Trong một vùng bảng DMS, không gian nhớ được DB2 quản lý. Một vùng bảng DMS đòi hỏi không gian nhớ phải được cấp phát trước, vào lúc tạo lập nó, và như vậy đòi hỏi công việc cài đặt ban đầu nhiều hơn, cần xem xét quản lý nhiều hơn. Tuy nhiên nó cung cấp tính linh hoạt cao hơn cho người sử dụng để điều khiển việc xếp đặt dữ liệu và cải tiến hiệu quả truy nhập dữ liệu. 

Nói chung, một vùng bảng DMS được thiết kế và điều chỉnh tốt sẽ đạt hiệu quả tốt hơn một vùng bảng SMS tương tự.

Từ khung nhìn các vùng bảng, nhấn lên tên từng vùng bảng. Hãy quan sát thông tin chi tiết hiển thị trong cửa sổ nằm ở đáy bên phải. SYSCATSPACE và USERSPACE1 cả hai đều là vùng bảng SMS, còn TEMPSPACE1 là một vùng bảng DMS. Bạn cũng có thể tạo ra được vùng bảng của chính mình.

2. Vùng đệm

Vùng đệm (Bufferpool) là một tập hợp các khối nhớ dưới dạng các trang bộ nhớ. Khi một cơ sở dữ liệu được tạo ra lần đầu, một vùng đệm mặc định là IBMDEFAULTBP cũng được tạo ra. Bạn có thể tạo ra một vùng đệm mới khi bạn tạo một vùng bảng hoặc sử dụng thủ thuật tạo vùng đệm mới (Create New Vùng đệm wizard) từ khung nhìn các vùng đệm.

Vai trò quan trọng nhất của vùng đệm là ở chỗ nó giúp giảm bớt chi phí nhập/xuất (I/O cost) khi cơ sở dữ liệu đang đọc và ghi dữ liệu lên đĩa và từ đĩa. Điều này đạt được thông qua tiền nạp nhập/xuất (I/O pre-fetching) và qua các bộ lọc trang (page cleaners). Tiền nạp nhập/xuất giảm bớt chi phí nhập/xuất để đọc một trang bằng cách xác định trước những trang khả dĩ nào có thể cần đến cho một truy vấn cụ thể và sau đó đọc chúng vào trong vùng đệm để cho khi truy vấn cần đến thì chúng sẵn sàng sử dụng được. Bộ lọc trang đảm bảo rằng bất kỳ trang nào không còn cần đến cho các giao dịch nữa thì được ghi lên đĩa trước tiên nếu các trang đó đã được cập nhật, và sau đó được dọn đi khỏi vùng đệm. Điều này đảm bảo có đủ không gian sạch để đọc vào bộ nhớ các trang trong vùng đệm.

DB2 hỗ trợ các kích cỡ trang khác nhau: 2K, 4K, 8K, 16K, và 32K. IBMDEFAULTBP sử dụng cỡ trang 4K. Nếu bạn muốn tạo ra một vùng bảng mà sử dụng cỡ trang khác với 4K, đầu tiên hãy chắc chắn rằng bạn đang có một vùng đệm sử dụng cỡ trang đó trong cơ sở dữ liệu. Nhiều vùng bảng có thể sử dụng cùng một vùng đệm. Bạn có thể chỉ rõ vùng đệm nào sẽ sử dụng khi tạo hoặc thay đổi vùng bảng. Việc lựa chọn và tạo ra vùng đệm thích hợp là rất quan trọng đối với hiệu năng của cơ sở dữ liệu. Bạn có thể tạo ra một vùng đệm mới hoặc thay đổi một vùng đệm hiện tại để phù hợp với nhu cầu của mình.

Từ Trung tâm điều khiển, nhấn Buffer Pools. Bạn có thể trông thấy tất cả các vùng đệm trong cơ sở dữ liệu. Hãy chọn tạo ra một vùng đệm mới hoặc thay đổi một vùng đệm hiện có.

Hình 8. Khung nhìn vùng đệm của Trung tâm điều khiển 

3. Bảng và khung nhìn danh mục hệ thống DB2

DB2 tạo ra nhiều bảng và khung nhìn danh mục hệ thống trong vùng bảng danh mục khi nó tạo ra một cơ sở dữ liệu mới. Các bảng và khung nhìn danh mục hệ thống này dùng để lưu vết các thông tin quan trọng mà người quản lý cơ sở dữ liệu cần biết về các đối tượng, các thông tin kiểm soát truy nhập và các công cụ của cơ sở dữ liệu của mình. Các khung nhìn danh mục hệ thống dựa trên các bảng danh mục hệ thống cơ sở. Người sử dụng quan tâm đến dữ liệu bảng danh mục hệ thống thường hay truy vấn các khung nhìn danh mục hệ thống này.

Từ Trung tâm điều khiển, trong khung nhìn All Database, hãy mở rộng HELLOWLD, rồi chọn Table Spaces. Chọn SYSCATSPACE xuất hiện trong cửa sổ phía trên bên phải. Bạn có thể nhìn thấy thông tin tóm tắt của vùng bảng này trong cửa sổ phía dưới bên phải:

Hình 9. Khung nhìn các vùng bảng của Trung tâm điều khiển 

Nhấn Show Related Objects. Một trang mới xuất hiện cho thấy tất cả các bảng và các chỉ mục cùng với lược đồ SYSIBM của chúng trong vùng bảng SYSCATSPACE. Nhấn Indexes tất cả các chỉ mục trong SYSCATSPACE sẽ được liệt kê. Show SQL cho bạn biết lệnh Select để nhận được danh sách các bảng hoặc các chỉ mục trong vùng bảng này.

Bảng, chỉ mục, lược đồ và khung nhìn, tất cả đều là các đối tượng DB2 quan trọng và sẽ được bàn thảo chi tiết sau trong hướng dẫn này. Tuy nhiên, trước hết bạn hãy thử tạo một vùng bảng:

B1. Nhấn Create New Tablespace (tạo vùng bảng mới) từ trung tâm điều khiển để bắt đầu thủ thuật tạo vùng bảng (Create Table Space Wizard). Gõ nhập TBSP_DATA1 là tên vùng bảng, và nhập DMS tablespace to hold data trong trường comment.

B2. Đánh dấu Regular để lựa chọn kiểu vùng bảng sử dụng và nhấn Next. Bảng Specify a buffer pool (xác định vùng đệm) xuất hiện, trên đó bạn sẽ chọn vùng đệm được vùng bảng này sử dụng.

B3. Hãy sử dụng vùng đệm IBM mặc định, tuy nhiên bạn cũng có thể tạo ra một vùng đệm mới bằng cách sử dụng nút Create. Nhấn Next

Hình 10. Tạo vùng bảng mới -- Xác định vùng đệm

B4. Bảng này cho phép bạn xác định rõ vùng bảng của bạn sẽ được cơ sở dữ liệu quản lý (DMS) hay được hệ thống quản lý (SMS). Chọn Database-managed space (high performance). Nhấn Next. Trang Containers xuất hiện.

B5. Từ trang Containers, bạn có thể xác định số containers. Container có thể là một thư mục, một tệp hoặc một thiết bị, nơi dữ liệu vùng bảng được lưu giữ. Bạn có thể tạo ra nhiều container cho mỗi vùng bảng, và bạn có thể hủy một container đang có hoặc thêm nhiều container hơn vào một vùng bảng sau khi vùng bảng được tạo ra. Nhấn Add và trang Define Container xuất hiện, cho phép bạn định nghĩa các container cho vùng bảng mới của bạn.

B6. Có thể định nghĩa nhiều container cho vùng bảng mới của bạn. Các containers khác nhau có thể được định vị trong các nút (node) hoặc đường dẫn vật lý khác nhau. Làm theo các hướng dẫn như trong Hình 11 để bổ sung container rồi nhấn OK

Hình 11. Tạo vùng bảng mới -- Thêm Container 

B7. Hãy bổ sung một container nữa có tên là tbsp_data1_c02 trong cùng đường dẫn, sử dụng cùng một cách thao tác.

B8. Bạn sẽ nhìn thấy 2 container được bổ sung như mô tả trong Hình 12. Mỗi container có kích thước 5MB, tổng cộng 10MB. Nếu bạn không hài lòng với các container mà bạn đã định nghĩa, nhấn Change hoặc Remove. Nhấn Next để tiếp tục. 

Hình 12. Tạo vùng bảng mới -- Trang Container 

B9. Trang tiếp theo này giúp bạn xác định kích thước khu vực (extent) và kích thước tiền nạp (prefetch size) sẽ sử dụng cho vùng bảng này. Một khu vực gồm có một số trang liên tiếp nhau. Số lượng các trang này được coi là kích thước khu vực. Nói chung, nên cấp phát nhiều trang một lần để giảm tải việc cấp phát không gian nhớ. Kích thước tiền nạp nghĩa là số lượng trang mà bộ tiền nạp (prefetcher) đọc vào bộ nhớ khi cho phép thực hiện tiền nạp. Khái niệm về tiền nạp sẽ được bàn sau. Chọn Less than 25MB để thay đổi kích thước trung bình của một bảng và kích thước nên dùng của khu vực vùng bảng sẽ tự động được thay đổi đến mức thiết đặt phù hợp.

B10. Nhấn Summary để hiển thị trang tóm tắt. Nhấn Show SQL và lưu các lệnh SQL này thành C:\DB2\hellowld\crt_tbsp.clp. Nhấn Finish để kết thúc quá trình tạo vùng bảng.

B11. Từ khung nhìn vùng bảng của Trung tâm điều khiển bạn sẽ trông thấy vùng bảng mới là TBSP_DATA1. Nếu bạn không hoàn toàn thỏa mãn với vùng bảng TBSP_DATA1 mới tạo ra này, nhấn Alter Tablespace để thay đổi vùng bảng. Nhấn Create New Tablespace nếu bạn muốn tạo ra một vùng bảng SMS. 

Hình 13. Trung tâm điều khiển – khung nhìn vùng bảng 

Sẽ rất có lợi nếu lưu giữ dữ liệu chỉ mục, các đối tượng lớn (LOB - Large Objects) và các trường dài (LF - Long Field) hoặc dữ liệu XML tách biệt khỏi dữ liệu bảng. Tuy nhiên không có dữ liệu LOB/LF trong tài liệu này nên bạn không phải tạo ra các vùng bảng cho chúng. Dữ liệu XML được lưu trong cùng một vùng bảng TBSP_DATA1 như các dữ liệu bảng còn lại, nên bạn cũng không phải tạo một vùng bảng cho chúng. Các phần sau sẽ bàn về chỉ mục.

B12. Từ dòng lệnh DB2, nhập cd C:\DB2\HELLOWLD\ để tạo một vùng bảng. Có thể trước hết bạn cần phải tạo ra thư mục HELLOWLD nếu nó chưa có. Sau đó chạy lệnh notepad crt_tbsp.clp. Dùng bộ soạn thảo notepad, biên soạn lại lệnh Create Tablespace, thay thế nó bằng nội dung sau:

CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING (FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c01' 5120, FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP; 

B13. Thay câu lệnh COMMENT bằng nội dung sau:

COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data'; 

B14. Các lệnh sau đây nay phải nằm trong crt_tbsp.clp:

CONNECT TO HELLOWLD; 
CREATE LARGE TABLESPACE TBSP_INDEX1 PAGESIZE 4 K MANAGED BY DATABASE USING (FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_01' 5120, FILE 'C:\DB2\NODE0000\hellowld\dbdir\tbsp_index1_c02' 5120 ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 16 TRANSFERRATE 0.14 BUFFERPOOL IBMDEFAULTBP ; 
COMMENT ON TABLESPACE TBSP_INDEX1 IS 'tablespace to hold index data'; 
CONNECT RESET; 

B15. Ghi lưu và thoát notepad.

B16. Chạy lệnh db2 -tvf crt_tbsp.clp từ cửa sổ dòng lệnh DB2, và bạn sẽ thấy vùng bảng thực hiện thành công. Các tùy chọn -tvf là các tùy chọn dòng lệnh DB2 cho phép bạn chạy các lệnh DB2 từ một tệp.

B17. Đến Trung tâm điều khiển, nhấn Selected từ trình đơn chính của Trung tâm điều khiển, rồi nhấn Refresh từ trình đơn xổ xuống để xem toàn bộ các vùng bảng bạn đã tạo ra từ trước đến nay.

Source: Ibm.com

Không có nhận xét nào:

Đăng nhận xét