1. Trang chủ
  2. » Công Nghệ Thông Tin

Chuẩn bị kỳ thi số 731 lấy chứng chỉ DBA (Quản trị cơ sở dữ liệu) DB2 9, Phần 3: Truy cập cơ sở dữ liệu pdf

66 321 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 66
Dung lượng 307,4 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bắt đầu Trung tâm Tác vụ Bắt đầu Trung tâm Tác vụ với lệnh db2tc từ cửa sổ dòng lệnh, hoặc nhấn vào Trung tâm Tác vụ từ bất kỳ công cụ DB2 nào: Ngoài ra, Trung tâm Tác vụ còn có thể khởi

Trang 1

Chuẩn bị kỳ thi số 731 lấy chứng chỉ DBA (Quản trị cơ sở dữ liệu) DB2 9,

Phần 3: Truy cập cơ sở dữ liệu

George Baklarz, Giám đốc DB2, IBM

Tóm tắt: Hướng dẫn này dẫn dắt bạn qua các bước khác nhau cần có để quản lý

một số đối tượng trong DB2® Nó gồm thông tin tổng quát về chỉ mục, ràng buộc, tính toàn vẹn tham chiếu, và khung nhìn Đây là bài thứ ba trong loạt bảy bài hướng dẫn mà bạn có thể sử dụng nhằm giúp chuẩn bị lấy chứng chỉ Quản trị Cơ

sở dữ liệu DB2 9 dùng cho Linux®, UNIX® và Windows™ (Bài thi số 731)

Trước khi bạn bắt đầu

Về loạt bài này

Nếu bạn đang chuẩn bị dự thi bài số 731 lấy chứng chỉ DB2 DBA, bạn đã đến đúng chỗ Loạt bảy bài hướng dẫn chuẩn bị thi lấy chứng chỉ DB2 này gồm các khái niệm chính mà bạn cần biết để làm bài kiểm tra Hãy làm bài tập ở nhà của bạn tại đây và hãy làm dịu bớt căng thẳng trong ngày kiểm tra đó

Về tài liệu hướng dẫn này

Hướng dẫn này sẽ đưa bạn qua các bước khác nhau cần có để quản lý một số đối tượng trong DB2 Các chủ đề sau đây gồm:

 Tạo các tác vụ DB2 bằng cách sử dụng công cụ GUI

 Tạo và quản lý các chỉ mục

 Tạo các ràng buộc trên bảng (ví dụ, RI, thông tin, tính duy nhất)

 Tạo các khung nhìn trên các bảng

Trang 2

 Kiểm tra nội dung của các bảng danh mục hệ thống

 Áp đặt tính duy nhất của dữ liệu

Đây là bài thứ ba trong loạt bảy bài hướng dẫn nhằm giúp bạn chuẩn bị thi lấy Chứng chỉ Quản trị Cơ sở dữ liệu DB2 9 dùng cho Linux, UNIX® và Windows™ (Bài thi số 731) Tư liệu trong hướng dẫn này trước tiên trình bày các mục tiêu trong Phần 3 của bài thi, có tiêu đề “Truy cập Cơ sở dữ liệu.” Bạn có thể xem các mục tiêu này tại địa chỉ trang web: http://www-

03.ibm.com/certify/tests/obj731.shtml

Việc cài đặt DB2 không nêu trong hướng dẫn này Nếu bạn chưa cài đặt, chúng tôi hết sức khuyên bạn tải về và cài đặt một bản IBM DB2 9 Việc cài đặt DB2 sẽ giúp bạn hiểu nhiều khái niệm được trắc nghiệm trên bài thi lấy Chứng chỉ Quản trị Cơ sở dữ liệu DB2 9

Các điều kiện tiên quyết

Do bạn đang đọc hướng dẫn này, rõ ràng là bạn muốn được học tập về các khía cạnh của việc quản trị DB2, hoặc có thể nâng cấp kỹ năng hiện tại của bạn để phản ánh các khía cạnh mới tìm thấy trong phát hành mới nhất của sản phẩm Bạn cũng

có thể quan tâm đến việc lấy chứng chỉ về quản trị DB2 và cần điểm lại những gì chúng tôi trình bày trong bài thi!

Dù lý do của bạn là gì đi nữa, vẫn có một vài điều bạn phải làm để nhận được nhiều nhất từ bài này và các hướng dẫn khác:

Trang 3

1 Hãy lấy một bản DB2 9 Không có cái gì để thực hành, bạn sẽ không thể thử các ví dụ hoặc khám phá các đặc điểm khác nhau của sản phẩm

2 Lấy các hướng dẫn chuẩn bị bài thi Cơ sở về DB2 9 Các bài hướng dẫn này cho bạn một nền tảng cơ sở về DB2 và sẽ làm nó sáng tỏ hơn một số thuật ngữ được sử dụng trong hướng dẫn này Có lẽ không phải là một ý tưởng tồi nếu bạn đã qua được bài kiểm tra đó trước khi thử bài này!

3 Thực hành và thử các thứ của chính bạn Trong khi hướng dẫn này cố gắng trình bày nhiều chủ đề mà bạn cần để nhận được chứng chỉ, không có gì đánh đổi được kinh nghiệm

4 Đọc tài liệu Quản trị DB2 (DB2 Administration) Chúng có thể cho bạn nhiều thứ bên trong về cách DB2 làm việc Cũng có các nguồn thông tin khác về DB2 mà có thể tìm thấy ở phần cuối của hướng dẫn này (xem Tài nguyên)

Tạo các tác vụ DB2 bằng cách sử dụng các công cụ GUI

Trung tâm tác vụ DB2 (DB2 Task Center)

Một trong những công cụ DB2 được sử dụng để điều khiển cơ sở dữ liệu là Trung

tâm Tác vụ Trung tâm Tác vụ được sử dụng để chạy các tác vụ, hoặc tức khắc

hoặc theo lịch, và thông báo cho con người về tình trạng của tác vụ đã hoàn tất

Trung tâm Tác vụ gồm tất cả các chức năng thấy trong Trung tâm Kịch bản lệnh (Script Center) trong các phiên bản trước của DB2, cộng với các đặc điểm bổ sung

mới Một tác vụ là một kịch bản lệnh, cùng với các điều kiện thành công, lịch

biểu, và các thông báo kết hợp với nhau Bạn có thể tạo một tác vụ trong Trung tâm Tác vụ, tạo một kịch bản lệnh trong công cụ khác và lưu nó vào Trung tâm

Trang 4

Tác vụ, nhập một kịch bản lệnh hiện hành, hoặc lưu các tuỳ chọn từ một hội thoại hoặc thủ thuật DB2 như thủ thuật Load Một kịch bản lệnh có thể chứa các lệnh DB2, SQL, hoặc lệnh hệ điều hành

Tạo các cơ sở dữ liệu công cụ

Để sử dụng Trung tâm Tác vụ, cần có danh mục công cụ Danh mục công cụ chứa các thông tin về các tác vụ quản trị mà bạn lập cấu hình với các công cụ như vậy như Trung tâm Tác vụ và Trung tâm Điều khiển

Danh mục công cụ có thể đã được tạo ra cho bạn khi bạn đã cài đặt DB2, nhưng trong trường hợp nó chưa sẵn có, bạn có thể tạo ra nó bằng cách sử dụng một lệnh DB2 hoặc trình đơn công cụ (tools menu)

Để tạo ra cơ sở dữ liệu công cụ từ dòng lệnh, mở một cửa sổ lệnh DB2 và chạy lệnh sau đây:

db2 create tools catalog cc create new database toolsdb

Để tạo ra cơ sở dữ liệu bằng cách sử dụng các thiết đặt công cụ, chọn Tools > Tools Settings > Scheduler Settings từ trong Trung tâm Điều khiển:

Trang 5

Bắt đầu Trung tâm Tác vụ

Bắt đầu Trung tâm Tác vụ với lệnh db2tc từ cửa sổ dòng lệnh, hoặc nhấn vào Trung tâm Tác vụ từ bất kỳ công cụ DB2 nào:

Ngoài ra, Trung tâm Tác vụ còn có thể khởi động từ trình đơn DB2 trong một môi trường Windows:

Một khi Trung tâm Tác vụ được khởi động, bạn có thể quản lý, tạo, và chạy các kịch bản lệnh

Chức năng của Trung tâm Tác vụ

Đối với mỗi tác vụ, bạn có thể làm các việc sau:

 Lập lịch biểu tác vụ

 Quy định điều kiện thành công và thất bại

 Quy định các hành động mà sẽ được thực hiện khi tác vụ này thực hiện thành công hoặc khi nó thất bại

 Quy định rõ địa chỉ email (gồm cả các địa chỉ nhắn tin) mà sẽ được thông báo đến, khi tác vụ này thực hiện thành công hoặc khi nó thất bại

Bạn có thể chỉ rõ cách mã hoá có điều kiện (conditional coding) bằng cách tạo các

hành động tác vụ Mỗi hành động tác vụ gồm có một tác vụ và hành động sẽ được

thực hiện về tác vụ đó Ví dụ, tác vụ 1 có thể có các hành động tác vụ sau đây:

Trang 6

 Nếu tác vụ 1 thành công, thao tác tác vụ A cho phép lập lịch biểu tác vụ 2

 Nếu tác vụ 1 thất bại, thao tác tác vụ B cho chạy tác vụ 3

Bạn cũng có thể tạo ra một nhóm tác vụ mà kết hợp một số tác vụ trong một đơn vị

logic của công việc Khi nhóm tác vụ đáp ứng các điều kiện thành công hoặc thất bại mà bạn đã xác định, bất kỳ tác vụ kế tiếp cũng được chạy Ví dụ bạn có thể kết hợp ba kịch bản lệnh sao lưu thành một nhóm tác vụ và sau đó quy định một việc sắp xếp lại như một tác vụ kế tiếp mà sẽ được thực hiện nếu tất cả các kịch bản lệnh sao lưu thực hiện thành công

6 Thiết lập một mức thông báo

7 Chọn các thao tác tác vụ sau khi hoàn thành

8 Đặt bảo mật

Trang 7

Các bước này được mô tả trong bảng điều khiển sau đây Khi Trung tâm Tác vụ được khởi động, nó hiển thị tất cả các tác vụ mà hiện tại được xác định trong hệ thống:

Để tạo một tác vụ mới, nhấn chuột trái vào vùng liệt kê tác vụ, hoặc chọn Task > New từ trình đơn tại đỉnh của bàn điều khiển

Việc này mở ra một cửa sổ cho phép bạn xác định tác vụ mà bạn muốn tạo

Trung tâm Tác vụ được cập nhật với bất kỳ tác vụ mới nào mà bạn tạo ra Lưu ý rằng các tuỳ chọn làm mới lại sẽ được thiết đặt ở một quãng thời gian hợp lý nếu bạn muốn xem bất kỳ thay đổi về các tác vụ mà đã có sẵn trong danh sách

Mô tả và đặt tên tác vụ

Bảng mô tả tác vụ cho phép bạn xác định các đặc tính của chính tác vụ:

Trường Name (tên) gồm tên của tác vụ mà bạn đang tạo ra Tên này có thể chứa bất kỳ ký tự nào, vậy tên mô tả có thể được sử dụng

Kiểu trường báo cho DB2 biết kiểu của hành động mà tác vụ này đang thực hiện

Trang 8

Kịch bản lệnh shell MVS: Kịch bản lệnh shell MVS thực hiện trong một

môi trường chủ MVS hoặc z/OS Kiểu tác vụ này cũng có thể gồm các lệnh JCL (Job Control Language - Ngôn ngữ Điều khiển Công việc)

Nhóm tác vụ: Nhóm tác vụ nhận một vài tác vụ và đặt chúng vào một

nhóm được thực hiện cùng nhau

Trường Description (mô tả) có thể chứa mô tả độ dài của tác vụ được tạo

Trường Task Category (loại tác vụ) được sử dụng để phân loại kiểu của tác vụ đang được tạo ra Đây là một trường tuỳ chọn, nhưng có thể rất hữu ích khi bạn cố gắng tìm một lệnh trước đó, hoặc nhóm các lệnh cùng nhau dựa theo mục đích của chúng Nhấn vào nút chấm lửng lược (ellipsis) ở phần cuối của trường để xem một danh sách các loại tác vụ được xác định:

Một tác vụ có thể có nhiều loại liên kết với nó Các loại tác vụ sẵn có có thể được

sử dụng để phân loại tác vụ bằng cách chọn loại tác vụ và sau đó nhấn nút > Các loại tác vụ bổ sung có thể được tạo ra bằng cách gõ nhập một mục mới dưới New task category và nhấn > Các loại này có thể được sử dụng để sắp xếp các tác vụ

sẵn có trong chính cửa sổ tác vụ vào sau này

Trường Run System (chạy hệ thống) cho biết hệ thống sẽ chạy các lệnh Đây có thể là một hệ thống cục bộ (như trường hợp trong các hình mẫu) hoặc bất kỳ hệ thống ở xa nào mà đã được lên danh mục

Tuỳ chọn DB2 Instance and Partition (cá thể và phân vùng DB2) cho phép bạn chọn ra thể hiện và vùng mà trên đó lệnh sẽ chạy Tuỳ chọn phân vùng chỉ có ý nghĩa đối với các hệ thống có DPF (DB2 Partitioning Feature - đặc tính phân vùng DB2) đã được cài đặt Trong trường hợp như vậy, tác vụ có thể chạy trên các phân vùng riêng trong cơ sở dữ liệu, chứ không phải là qua toàn bộ chúng

Trang 9

Tất cả các trường, trừ trường mô tả và phân loại, cần được đưa dữ liệu vào để tác

vụ được tạo ra

Chọn một kịch bản lệnh

Bảng kịch bản lệnh chứa lệnh DB2 thực hoặc lệnh hệ điều hành mà bạn muốn

chạy đối với cơ sở dữ liệu Cửa sổ chính cho phép bạn gõ nhập lệnh hoặc sử dụng các thao tác cắt và dán để sắp đặt thông tin vào bảng này

Nếu bạn đã tạo ra hoặc lưu một kịch bản lệnh trong một tệp bên ngoài, nhấn nút Import để nạp nó vào

Nếu một kịch bản lệnh cần truy cập dữ liệu hoặc xuất thông tin ra đĩa, quy định rõ thư mục mặc định để DB2 biết vị trí để đặt hoặc tìm thông tin

Cuối cùng, dấu kết thúc lệnh DB2 (DB2 statement terminator) tham chiếu đến ký

tự mà sẽ được sử dụng để phân tách nhiều lệnh DB2 Theo mặc định, đây là dấu chấm phẩy (;), nhưng bạn có lẽ cần thay đổi cái này nếu bạn đang tạo ra các hàm DB2, bộ khởi động (trigger), hoặc bất kỳ lệnh SQL PL nào Các đối tượng DB2 này sử dụng dấu chấm phẩy như là dấu tách lệnh của chúng, do đó một dấu tách DB2 khác sẽ được sử dụng (ký hiệu đô la ($) hoặc ký hiệu a móc (@) là hai ký hiệu được sử dụng phổ biến)

Các thuộc tính chạy

Trang 10

Bảng Run Properties (các thuộc tính chạy) được sử dụng để xác định các tiêu chí thành công hay thất bại của tác vụ Bạn có thể báo cho kịch bản lệnh dừng lại khi

có bất kỳ mã trả lại khác không (dừng thực hiện tại mã trả lại đầu tiên báo thất bại) hoặc xác định một tập các điều kiện mã trả lại

Nếu một tác vụ có thể trả lại nhiều mã trả lại mà được coi là thành công, bạn cần xác định một bộ mã thành công Để hiển thị một danh sách các bộ mã, nhấn vào trường Success code set

Trong trường hợp không có bộ mã thành công nào được hiển thị, hoặc nếu không

có mã nào của chúng phù hợp với các yêu cầu của bạn, hãy tạo ra mã của riêng

bạn bằng cách nhấn New

Bạn có thể tạo ra bộ mã thành công của chính bạn, chúng có thể chứa nhiều giá trị

mã trả lại Sau đó bạn có thể sử dụng bộ mã thành công này cho tác vụ hiện tại của bạn, và sử dụng lại nó cho các tác vụ bổ sung mà bạn tạo ra sau đó Ví dụ đặc biệt này tạo ra một bộ mã thành công cho mã trả lại 0 (zero return code), như minh họa trên đây Bạn có thể chỉ cần sử dụng hộp đánh dấu chọn mã trả lại mặc định trên bảng thứ nhất để đạt được cùng một mục đích

Nhóm các tác vụ

Sử dụng chức năng nhóm để chạy hoặc lập lịch biểu với nhau một số lớn các tác

vụ Thay cho việc tạo một tác vụ lệnh, xác định một nhóm tác vụ Ngay sau khi kiểu tác vụ này được xác định, phiếu Group được kích hoạt và cửa sổ sau đây mở

ra

Trang 11

Trên phiếu này, bạn có thể thêm tất cả các tác vụ mà bạn muốn chạy như là một bộ phận của nhóm này Trong ví dụ này, hai tác vụ đã được thêm vào nhóm Sau khi bạn đã xác định tất cả các tác vụ, lập lịch biểu nhóm và thiết đặt bất kỳ điều kiện thành công hoặc thất bại nào như bạn sẽ thực làm bằng một tác vụ riêng

Thiết đặt thông báo

Trang 12

Phiếu thông báo được sử dụng để báo cho DB2 biết nơi gửi mã hoàn thành khi tác

vụ kết thúc Việc này không gửi đi kết quả thật của tác vụ, mà chỉ là mã trả lại

Nhiều thông báo có thể được gửi đi đối với một tác vụ riêng Các thông báo này có thể dựa trên:

Tác vụ thành công: Khi tác vụ thực hiện thành công, một thông báo có thể

được gửi đi

Tác vụ thất bại: Khi tác vụ không thực hiện thành công, một thông báo có

thể được gửi đi

Bất kỳ điều kiện nào: Dù kết quả gì đi nữa thì một thông báo cũng được

gửi đi

Ngoài mức độ thông báo, bạn cũng có thể quy định cách mà thông báo được gửi

đi Trung tâm tác vụ có thể thông báo các liên hệ hoặc sắp đặt thông tin trong Sổ ghi chép (Journal) (xem Sổ ghi chép) Danh sách liên hệ gồm một tập những người

sử dụng mà bạn có thể gửi đến một trang hoặc các thông báo qua thư điện tử (email notifications)

Lưu ý rằng nếu bạn muốn gửi các thông báo cho người sử dụng, bạn phải thiết lập một một máy chủ SMTP trên máy của bạn Không có khả năng này thì không thể gửi thông báo

Thông báo tự nó có thể được tuỳ biến để chứa bất kỳ văn bản nào mà bạn muốn Một số biến kiểu ký hiệu (symbolic variables) có sẵn trong văn bản, được sử dụng

để trả lại thông tin về tác vụ:

&Categories: Các loại liên kết với tác vụ

Trang 13

&Completionstatus: Trạng thái hoàn thành của tác vụ Giá trị này phụ

thuộc vào bộ mã thành công liên kết với tác vụ

&Description: Mô tả của tác vụ

&Duration: Khoảng thời gian chạy hệ thống để hoàn tất tác vụ từ lúc bắt

đầu đến khi kết thúc

&End: Ngày và thời gian tác vụ hoàn tất

&Howinvoked: Phương thức sử dụng để gọi ra tác vụ

&Name: Tên tác vụ

&Owner: Tên của chủ nhân tác vụ

&Returncode: Mã trả lại cuối cùng của tác vụ

&Runpartitions: Phân vùng mà tác vụ chạy trên đó

&Runsystem: Tên của hệ thống mà tác vụ chạy trên đó

&Schedulersystem: Tên của hệ thống mà tác vụ được lập lịch biểu trên đó

&Start: Ngày và thời gian tác vụ bắt đầu chạy

&Type: Kiểu tác vụ (nghĩa là, nó là một kịch bản lệnh DB2, một kịch bản

lệnh hệ điều hành, một kịch bản lệnh shell MVS, một kịch bản lệnh JCL, hay là một nhóm)

&Userid: Mã nhận dạng người sử dụng cho tác vụ đó

Trang 14

 Thất bại tại bất kỳ bước nào

 Tạo ra bất kỳ kết quả nào (thành công hay thất bại)

Khi bất kỳ điều kiện nào trong số các điều kiện này được đáp ứng, tác vụ có thể thực hiện một số hành động Nó có thể:

Trang 15

Thiết đặt bảo mật

Phiếu bảo mật (security tab) cho phép bạn cấp các đặc quyền đọc, viết, và thực hiện (chạy) cho những người dùng khác đối với tác vụ được tạo ra Điều này có thể hữu ích khi bạn có một số người dùng khác nhau tạo ra và bảo trì các tác vụ Trong trường hợp như vậy, hẳn là dễ dàng hơn khi tạo ra một nhóm người dùng được phép quản lý các tác vụ này, chứ không phải là cấp từng người quyền truy cập đến tác vụ

Danh sách tác vụ

Một khi bạn đã tạo ra tác vụ, nó sẽ được hiển thị trong chính trình đơn tác vụ

Các mục trong trình đơn tác vụ được hiển thị theo phạm trù tổng quát Đây cũng là trường phân loại (category field) mà bạn đã điền dữ liệu khi tạo ra tác vụ Bằng cách sử dụng các phân loại, bạn làm cho nó dễ dàng hơn khi tìm và quản lý các tác

vụ này

Một tác vụ sẽ bị loại bỏ khỏi danh sách này nếu nó bị người sử dụng xóa vật lý, hoặc nếu một trong các hành động được giao là xóa chính nó sau khi thực hiện xong Nếu màn hình tự động được làm mới, tác vụ cuối cùng sẽ biến mất khi nó đã chạy xong Để xác định trạng thái của một tác vụ sau khi nó đã hoàn tất, sử dụng

Sổ ghi chép, cái mà chúng ta sẽ thảo luận trong mục tiếp theo

Trang 16

Sổ ghi chép (Journal)

Sổ ghi chép ghi lại một số sự kiện bên trong nhân cơ sở dữ liệu (database engine) Những sự kiện này gồm:

Lịch sử tác vụ: Hiển thị kết quả của tác vụ đã chạy

Lịch sử cơ sở dữ liệu: Hiển thị bất kỳ hoạt động bảo trì nào đối với một cơ

sở dữ liệu

Thông báo: Danh sách các thông báo lỗi đã được cơ sở dữ liệu tạo ra

Nhật ký thông báo: Gồm các thông báo đã được tạo ra bởi Trung tâm Sức

khoẻ (Health Center) hoặc các cảnh báo trong hệ thống

Sổ ghi chép có thể được khởi động từ Trung tâm Điều khiển hoặc từ trình đơn công cụ

Sổ ghi chép cũng có thể được khởi động từ trong nhóm chương trình DB2 Màn hình ban đầu được hiển thị như dưới đây

Tất cả các mục trong danh sách là các tác vụ (hoặc nhóm các tác vụ) đã thực hiện

Để lấy nhiều chi tiết hơn trên một tác vụ cụ thể, nhấn đúp lên tác vụ đó Ví dụ, nhấn tác vụ cuối cùng trong danh sách được minh họa trong hình trên đây cho thấy báo cáo của tác vụ đó

Trang kết quả cho bạn biết tác vụ thành công hay không và cũng chứa bất kỳ thông báo nào được tạo ra bởi tác vụ đó Có ba phiếu phụ cung cấp thêm thông tin

về tác vụ được thực hiện Phiếu thứ hai cung cấp các thông tin về kịch bản lệnh được thực hiện:

Trang 17

Phiếu thứ ba trong báo cáo tác vụ hiển thị kết quả vật lý do tác vụ tạo ra Kết quả chạy SQL thể hiện trong hình dưới đây Lưu ý rằng SQL phải chạy lệnh connect (kết nối) với đúng cơ sở dữ liệu để nó chạy thành công Không có kết nối thì tác

vụ sẽ không biết hoạt động trên cơ sở dữ liệu nào

Cuối cùng, phiếu cuối cùng cho biết các thao tác tiếp theo được thực hiện khi tác

vụ hoàn tất Trong trường hợp này, tác vụ tự xóa chính nó khi đã chạy thành công

 Các nhóm của các kiểu lệnh nói trên

Các tác vụ có thể được lập lịch biểu để làm việc vào những lúc đặc biệt, và có thể thông báo cho những người dùng khác về thành công hay thất bại của họ Ngoài

ra, một tác vụ cũng có thể làm cho tác vụ khác được lên lịch biểu, đột xuất, hoặc xóa bỏ

Tạo và quản lý các chỉ mục

Trang 18

Giới thiệu

Chỉ mục là một thành phần quan trọng trong bất kỳ cơ sở dữ liệu nào Mặc dù mô hình quan hệ không đòi hỏi các chỉ mục để chạy các truy vấn hoặc tính toán các kết quả, nhưng người dùng đầu cuối của bạn sẽ vui hơn nếu bạn tạo ra một số chỉ mục trên các bảng thường hay sử dụng!

Chỉ mục là các đối tượng vật ký liên kết với các bảng đơn Bất kỳ bảng đã được lưu trữ hay bảng mô tả tạm thời đều có thể có nhiều chỉ mục xác định trên nó Bạn không thể xác định một chỉ mục trên một khung nhìn

Chỉ mục được sử dụng vì hai lý do chủ yếu:

 Để đảm bảo tính duy nhất của các giá trị dữ liệu

 Để cải thiện hiệu năng truy vấn SQL

Chỉ mục có thể dùng để truy cập dữ liệu theo một trật tự được sắp xếp một cách nhanh chóng và tránh cho tác vụ phải tiêu tốn thời gian sắp xếp dữ liệu trong lưu trữ tạm thời Chỉ mục cũng có thể được tạo ra trên các cột tính toán để bộ tối ưu hoá có thể lưu lại thời gian tính toán bằng cách sử dụng chỉ mục thay cho việc tính toán Chỉ mục được bảo trì tự động bởi DB2 khi dữ liệu được chèn vào, cập nhật,

và xóa

Chỉ mục được tạo ra như thế nào

Với tư cách là một DBA, bạn phải có kiến thức về cách tạo chỉ mục Mặc dù chỉ mục chỉ là một thành phần tuỳ chọn (nhưng lại rất quan trọng!) của bất kỳ cơ sở

Trang 19

dữ liệu nào, chúng đôi khi thay bạn tạo ra một cách tự động Nếu bạn không lập kế hoạch trước cho chỉ mục, bạn không thể có đủ tài nguyên để tạo hoặc bảo trì

chúng

Chỉ mục có thể được tạo ra thông qua việc sử dụng lệnh CREATE INDEX (tạo chỉ mục) Tuy nhiên, chỉ mục cũng được tạo tự động nếu bạn tạo một bảng gồm một cột với một thuộc tính UNIQUE (duy nhất), nếu có ràng buộc tham chiếu đến bảng, hoặc nếu một bảng được xác định theo các thuộc tính kích thước (đa chiều - multidimensional) Tất cả các điều kiện này đòi hỏi chỉ mục để áp đặt tính duy nhất trong bảng, và để đảm bảo hiệu năng khả dĩ Hãy tưởng tượng rằng nếu cơ sở

dữ liệu phải rà quét toàn bộ bảng mỗi khi nó cần kiểm tra xem một giá trị có phải

là duy nhất hay không!

Ngoài các lệnh SQL tạo chỉ mục, nhiều thủ thuật khác có sẵn trong Trung tâm Điều khiển DB2 giúp xác định chỉ mục nào sẽ phù hợp nhất trong một hoàn cảnh cho trước

Các vấn đề với chỉ mục

Câu hỏi đầu tiên bạn sẽ đặt ra khi tạo ra một chỉ mục là, “Cái nào sẽ cho tôi hiệu năng tốt nhất?” Bạn sẽ tạo ra một chỉ mục trên mỗi cột trong một bảng để đảm bảo hiệu năng tốt? Hoặc bạn sẽ chỉ tạo một chỉ mục mà cho người sử dụng trực tiếp truy cập đến dữ liệu?

Các chỉ mục chiếm không gian trên hệ thống của bạn Chúng có thể thường trú trong cùng một không gian bảng với bảng bạn đang lập chỉ mục hoặc một không

Trang 20

gian bảng chỉ mục riêng biệt Do có các giới hạn vật lý về kích thước của không gian bảng, bạn không thể có đủ không gian để tạo ra tất cả các thứ bạn cần

Việc cập nhật chỉ mục phải mất thời gian Bất cứ khi nào bạn chèn, cập nhật, hoặc xóa các bản ghi, DB2 phải thay đổi tất cả các chỉ mục ứng với tác động của hành động của bạn Như vậy, việc tạo ra 15 chỉ mục trên bảng ưa thích của bạn, sẽ tạo

ra 15 cập nhật chỉ mục mỗi khi bạn thay đổi dữ liệu Trong trường hợp này, thay

vì đảm bảo hiệu năng tốt hơn, các chỉ mục của bạn sẽ làm thời gian trả lời lâu hơn

Cuối cùng, chỉ mục có lẽ không thích hợp với các cột mà có ít giá trị (phần tử số thấp) Một phương thức lập chỉ mục thay thế (multidimensional clustering – cụm

đa chiều, hay MDC) có thể phù hợp hơn

Chỉ mục đặt ở đâu?

Trước khi bạn quyết định tạo ra một số chỉ mục, bạn phải nhanh chóng ôn lại các khái niệm về không gian bảng

Các bảng và chỉ mục là được đặt vào không gian bảng Một không gian bảng được

sử dụng như một lớp (layer) nằm giữa cơ sở dữ liệu và các thùng chứa đối tượng

dữ liệu bảng thực tế

Thùng chứa là một dụng cụ lưu trữ vật lý Nó có thể được xác định bởi một tên thư

mục, một tên thiết bị, hoặc một tên tệp Một thùng chứa được gán cho một không gian bảng và một không gian bảng có thể chắp nối nhiều thùng chứa Khả năng để

có nhiều thùng chứa gán cho một không gian bảng tránh các hạn chế của hệ điều hành về lượng dữ liệu mà một thùng chứa có thể có Quan hệ giữa toàn bộ các đối tượng này được minh họa trong biểu đồ dưới đây

Trang 21

Mặc dù một bảng là đối tượng cơ sở được đặt vào một không gian bảng, bạn phải nhận thức được các đối tượng bổ sung trong hệ thống DB2 và cách chúng được ánh xạ đến một không gian bảng

Lưu trữ bảng và chỉ mục

Vậy tại sao lại quan tâm đến lệnh CREATE TABLE (tạo bảng) khi điều bạn thật

sự muốn thực hiện là tạo một số chỉ mục? Khó khăn với việc thay thế chỉ mục là ở chỗ nó phụ thuộc vào cách mà bảng được xác định

Nếu một bảng được tạo ra không có bất kỳ liên quan nào đến vị trí, nó sẽ tạo trong không gian hệ thống mặc định, cùng với bất kỳ chỉ mục được tạo cho nó Điều này

có nghĩa là không gian bảng USERSPACE1 sẽ nhanh chóng lấp đầy các bảng và chỉ mục của bạn, do cả hai được lưu trữ tại cùng một nơi

Ngay cả khi bạn sắp đặt một cách chu toàn các bảng của bạn trong các không gian bảng riêng biệt, bạn vẫn có thể có vấn đề, do các chỉ mục sẽ được tạo ra ở cùng một nơi Bạn cần quy định vị trí của các chỉ mục của bạn!

Tạo bảng

Khi bạn tạo một bảng, bạn có thể sử dụng một tuỳ chọn để quy định rõ không gian bảng hoặc các không gian bảng trong đó bảng và chỉ mục sẽ được đặt:

Trang 22

CREATE TABLE TEST (

column 1 definition, column 2 definition,

) IN <tablespace name> INDEX IN <index space name>

Lệnh này cho bạn tuỳ chọn xác định vị trí bảng được tạo ra, cùng với chỉ mục Nếu bạn không quy định rõ một không gian bảng chỉ mục riêng biệt, các chỉ mục được tạo ra ở cùng một không gian bảng với bảng Bạn không có tuỳ chọn nào tạo

ra các chỉ mục trong một không gian bảng khác sau khi bảng đã được tạo Bài học của chuyện này là: trước tiên hãy đặt kế hoạch, khi tạo ra các chỉ mục của bạn!

Nếu bạn dự định phân vùng các bảng của bạn (phân vùng phạm vi), bạn có thêm

sự linh hoạt trong việc đặt mỗi chỉ mục của bảng đó sang không gian bảng của chính nó Tuỳ chọn này chỉ dùng cho các bảng đã được phân vùng

Trang 23

(

column 1 <ASC | DESC> ,

column 2 <ASC | DESC>

)

Thuộc tính UNIQUE báo cho DB2 biết rằng chỉ mục đó phải áp đặt tính duy nhất cho tất cả các giá trị được chèn Nếu tìm thấy một giá trị trùng lặp trong khi có lệnh UPDATE (cập nhật) hay INSERT (chèn), một lỗi sẽ được trả lại cho ứng dụng

Các cột được liệt kê trong các dấu ngoặc được sử dụng để tạo ra chỉ mục Các từ khoá tuỳ chọn ASC (tăng dần) và DESC (giảm dần) báo cho DB2 biết cách xếp thứ tự các giá trị này trong chỉ mục của chính nó Các tuỳ chọn này rất hữu ích khi bạn chạy lệnh SQL có sắp xếp các kết quả, giống như:

SELECT * FROM EMPLOYEE

ORDER BY EMPNO DESC

Nếu chỉ mục đã được tạo ra trước đó theo thứ tự giảm dần, DB2 có thể sử dụng chỉ mục để trả lại các giá trị theo chuỗi sắp xếp, chứ không thực hiện riêng bước sắp xếp Điều này có thể tiết kiệm đáng kể thời gian trên tập kết quả (answer set) lớn Nếu tập kết quả được sắp xếp trong cả thứ tự tăng dần và giảm dần, có thể có lợi

Trang 24

hơn khi thêm đoạn ALLOW REVERSE SCANS (cho phép rà soát ngược) vào cuối lệnh CREATE INDEX Việc này báo cho DB2 biết dùng con trỏ phụ

(additional pointers) trong chỉ mục để kết chuỗi ngược và xuôi có hiệu quả trên các bản ghi Đoạn ALLOW REVERSE SCANS bây giờ là mặc định đối với bất kỳ chỉ mục nào được tạo trong DB2 9, nhưng các bản phát hành trước đây sẽ cần phải gộp vào tùy chọn này để cho phép truy cập tăng dần và giảm dần trên cùng một chỉ mục

Gộp vào các cột bổ sung trong một chỉ mục

DB2 có khả năng thêm các cột bổ sung vào chỉ mục mà bạn đang tạo ra Lệnh CREATE INDEX cho phép người sử dụng quy định các cột mà không phải là bộ phận của chỉ mục thật, nhưng được giữ lại trong bản ghi chỉ mục vì lý do hiệu năng

CREATE UNIQUE INDEX IX ON EMPLOYEE (EMPNO)

INCLUDE (LASTNAME,FIRSTNME)

Chỉ mục phải là UNIQUE (duy nhất) đối với các cột được gộp vào chỉ mục Khi chỉ mục được tạo ra, các cột bổ sung được thêm vào các giá trị chỉ mục Chỉ mục không sử dụng các giá trị này để sắp xếp hoặc quyết định tính duy nhất, nhưng có thể sử dụng chúng khi làm thoả mãn một truy vấn SQL Ví dụ, lệnh SELECT (chọn) sau đây sẽ không cần đọc các hàng dữ liệu thật:

Trang 25

SELECT LASTNAME, FIRSTNME FROM EMPLOYEE

Chỉ mục xếp nhóm

Một chỉ mục xếp nhóm là một chỉ mục được DB2 sử dụng để thử và chèn các bản ghi lên cùng một trang như các bản ghi khác với các giá trị khoá chỉ mục tương tự Nếu không có không gian trên trang đó, sẽ dự định đưa bản ghi vào các trang xung quanh

Lợi ích của việc có một chỉ mục nhóm là ở chỗ các lệnh SELECT tìm kiếm một giá trị riêng (hoặc dãy các giá trị) trên một khoá có thể nhanh chóng tìm ra tập các trả lời mà không cần rà soát toàn bộ bảng Các giá trị khoá tương tự sẽ được đặt trên cùng một trang dữ liệu sao cho chỉ cần đọc một phần trong toàn bộ bảng Ngoài ra, nhu cầu tổ chức lại bảng cũng có thể giảm bằng cách sử dụng một chỉ mục cụm

Trang 26

Để bảo đảm sẵn sàng có đủ không gian cho các hàng mới trên trang hiện hành, từ khoá PCTFREE sẽ được sử dụng trong khi tạo bảng để để lại một số không gian sẵn sàng cho việc chèn và cập nhật sau này Một khi bảng đã được nạp vào, giá trị PCTFREE có thể được giảm bớt để cho phép nhiều bản ghi hơn được thêm vào trang hiện hành

Để tạo chỉ mục xếp nhóm trên bảng, hãy thêm từ khoá CLUSTER vào cuối lệnh CREATE INDEX, như:

CREATE INDEX DEPTS_IX ON

EMPLOYEE(WORKDEPT) CLUSTER

Từ khoá PCTFREE cũng có thể được dùng trong việc tạo chỉ mục Hãy quy định giá trị PCTFREE cao hơn vào lúc tạo chỉ mục, rồi đặt nó ở giá trị thấp hơn để cho phép các bản ghi được chèn vào chỉ mục không tách trang chỉ mục Điều này đặc biệt hữu ích trong môi trường giao dịch cao, nơi có nhiều hoạt động chèn và xóa Tuy nhiên, nếu cơ sở dữ liệu của bạn chủ yếu nhằm tải làm việc truy vấn (query workloads), có thể có lợi hơn nếu đặt nhiều dữ liệu có thể được vào trang chỉ mục Trong trường hợp này, đặt PCTFREE ở 0 (zero) Theo quan niệm cơ sở dữ liệu, sẽ chỉ phải thực hiện ít trang đọc hơn để nạp chỉ mục này, nhưng sẽ tốn kém hơn khi bảo trì chỉ mục, do sẽ xảy ra việc chia nhỏ trang chỉ mục

Bạn phải tạo ra bao nhiêu chỉ mục?

Trang 27

Vậy bạn phải tạo ra bao nhiêu chỉ mục cho một bảng? Câu trả lời thực ra phụ thuộc vào loại ứng dụng mà bạn đang chạy trên bảng

Sử dụng các qui tắc tổng quát sau đây để xác định số lượng điển hình các chỉ mục

mà bạn xác định cho một bảng Số lượng các chỉ mục dựa vào việc sử dụng ban đầu của cơ sở dữ liệu của bạn:

 Đối với các môi trường xử lý giao dịch trực tuyến (OLTP), tạo một hoặc hai chỉ mục

 Đối với các môi trường hỗn hợp giữa truy vấn và OLTP, tạo khoảng hai đến năm chỉ mục

 Đối với môi trường truy vấn chỉ đọc, tạo năm chỉ mục trở lên

Một tuỳ chọn khác để quyết định tạo các chỉ mục là sử dụng bộ Cố vấn Thiết kế (Design Advisor) trong Trung tâm Điều khiển Cố vấn Thiết kế sẽ hỏi bạn một số câu hỏi về tải làm việc và thiết kế cơ sở dữ liệu của bạn, rồi sẽ xác định các chỉ mục nào là tốt nhất

Tính toàn vẹn tham chiếu và chỉ mục

Chỉ mục là một thành phần chủ yếu của tính toàn vẹn tham chiếu Không có chỉ mục, hiệu năng sẽ nghèo nàn, và việc kiểm tra tính toàn vẹn sẽ vô cùng tốn kém

Tính toàn vẹn tham chiếu cho phép bạn xác định các mối quan hệ cần có giữa các bảng và trong bảng Người quản trị cơ sở dữ liệu bảo trì các mối quan hệ này, chúng được diễn giải như là các ràng buộc tham chiếu và đòi hỏi tất cả các giá trị

Trang 28

của một thuộc tính hoặc cột bảng đã cho cũng tồn tại trong một số cột bảng khác Hình sau đây minh họa một ví dụ:

Chúng ta hãy xem một số định nghĩa về các khoá và ràng buộc, bằng cách sử dụng hình trên đây để minh hoạ

Khoá duy nhất (unique key) là một tập các cột trong đó không có hai giá trị nào bị

trùng lặp trong bất kỳ hàng khác nhau Chỉ một khoá duy nhất có thể được định nghĩa như một khoá chính đối với mỗi bảng Khoá duy nhất cũng có thể gọi là

khoá cha (parent key) khi nó được tham chiếu bởi một khoá ngoại

Khoá chính (primary key) là một trường hợp đặc biệt của khoá duy nhất Mỗi bảng

chỉ có thể có một khoá chính Trong hình minh hoạ, DEPTNO và EMPNO là các khoá chính của các bảng DEPARTMENT và EMPLOYEE

Khoá ngoại (foreign key) là một cột hoặc tập các cột trong một bảng mà tham

chiếu đến khoá duy nhất hoặc khoá chính của cùng một bảng hoặc bảng khác Nó được sử dụng để thiết lập ra một quan hệ với khoá duy nhất hoặc khoá chính và áp đặt tính toàn vẹn tham chiếu trong số các bảng Cột WORKDEPT trong bảng EMPLOYEE là một khoá ngoại vì nó tham chiếu đến khoá chính cột DEPTNO trong bảng DEPARTMENT

Khoá cha (parent key) là một khoá chính hoặc khoá duy nhất của một ràng buộc

tham chiếu Một bảng cha là một bảng chứa một khoá cha liên quan đến ít nhất một khoá ngoại trong cùng một bảng hoặc bảng khác Một bảng có thể là bảng cha trong một số lượng tuỳ ý các quan hệ Trong hình trên, bảng DEPARTMENT, với một khoá chính DEPTNO, là một bảng cha của bảng EMPLOYEE, nó chứa khoá ngoại WORKDEPT

Bảng phụ thuộc (dependent table) là một bảng chứa một hoặc nhiều khoá ngoại

Bảng phụ thuộc cũng có thể là một bảng cha Một bảng có thể là một bảng phụ

Trang 29

thuộc trong một số tuỳ ý các quan hệ Ví dụ, bảng EMPLOYEE gồm khoá ngoại WORKDEPT, nó phụ thuộc vào bảng DEPARTMENT có một khoá chính

Ràng buộc tham chiếu là một khẳng định rằng các giá trị khác không của một khoá

ngoại đã được xác định là hợp lệ chỉ khi nào chúng cũng xuất hiện như là các giá trị của một khoá duy nhất của một bảng cha đã được xác định Mục đích của các ràng buộc tham chiếu là để đảm bảo rằng các mỗi quan hệ trong cơ sở dữ liệu được bảo trì và các qui tắc nhập dữ liệu được làm theo

Sự áp đặt các ràng buộc tham chiếu có ý nghĩa đặc biệt đối với một số thao tác SQL mà phụ thuộc vào việc liệu bảng đó là một bảng cha hay là bảng phụ thuộc Người quản trị cơ sở dữ liệu áp đặt các ràng buộc tham chiếu qua các hệ thống dựa trên qui tắc toàn vẹn tham chiếu Các qui tắc đó là:

 INSERT (CHÈN)

 DELETE (XÓA)

 UPDATE (CẬP NHẬT)

Tạo các ràng buộc toàn vẹn tham chiếu

Để xác định một quan hệ khoá ngoại giữa hai bảng:

1 Tạo bảng cha với một khoá chính

2 Nạp dữ liệu vào bảng cha

3 Tạo bảng phụ thuộc với quan hệ khoá ngoại

Trang 30

4 Nạp dữ liệu vào bảng phụ thuộc

Đối với ví dụ EMPLOYEE và DEPARTMENT từ bảng điều khiển trước đó, định nghĩa bảng DEPARTMENT như sau:

CREATE TABLE DEPARTMENT

(

DEPTNO INT NOT NULL PRIMARY KEY,

DEPTNAME VARCHAR(20) NOT NULL,

MGRNO INT

)

Định nghĩa bảng cho bảng DEPARTMENT không nhất thiết phải có một đặc tả PRIMARY KEY trên dòng DEPTNO; bạn có thể sử dụng một lệnh CREATE UNIQUE INDEX thay vào đó

Khi dữ liệu đã được nạp vào bảng DEPARTMENT rồi thì bảng EMPLOYEE có thể được tạo ra Lưu ý rằng bạn không cần nạp dữ liệu vào bảng DEPARTMENT ngay, nhưng bạn sẽ cần đưa vào nó các dữ liệu trước khi bảng EMPLOYEE có thể

có dữ liệu được chèn vào Bảng EMPLOYEE có thể được định nghĩa như sau:

CREATE TABLE EMPLOYEE

Trang 31

(

EMPNO INT NOT NULL PRIMARY KEY,

FIRSTNAME VARCHAR(20) NOT NULL,

LASTNAME VARCHAR(20) NOT NULL,

WORKDEPT INT NOT NULL,

PHONENO CHAR(12) NOT NULL,

FOREIGN KEY(WORKDEPT) REFERENCES

DEPARTMENT(DEPTNO)

ON DELETE RESTRICT)

)

Mệnh đề FOREIGN KEY xác định quan hệ giữa bảng EMPLOYEE (nhân viên)

và bảng DEPARTMENT (phòng ban) Do mối quan hệ này, một nhân viên không thể được chèn vào bảng nếu WORKDEPT nhân viên đó chưa tồn tại trong bảng phòng ban Ngoài ra, bất kỳ cập nhật nào mà WORKDEPT của nhân viên đó cũng

sẽ được kiểm tra đối với danh sách phòng ban Mệnh đề bổ sung ON DELETE RESTRICT (hạn chế xoá) báo cho DB2 biết để ngăn chặn việc xoá đi một bản ghi phòng ban trong bảng DEPARTMENT, nếu có các tham chiếu đến phòng ban đó trong bảng EMPLOYEE Nói một cách khác, các nhân viên của một phòng ban tất

cả phải được chuyển đến các phòng ban khác trước khi DB2 cho phép phòng ban

đó bị xóa Các tuỳ chọn khác là làm cho WORKDEPT bị rỗng khi xoá một phòng

Trang 32

ban (ON DELETE SET NULL), hoặc xóa bản ghi của nhân viên mà kết nối với bản ghi này (ON DELETE CASCADE)

Theo quan niệm về chỉ mục, cả hai bảng phải có các khoá chính được xác định Việc này triệt tiêu các trùng lặp từ cả hai bảng, mà cũng cải thiện hiệu quả phép chọn Tuy nhiên, khoá chính trên bảng DEPARTMENT là cần thiết để quan hệ khoá ngoại có thể được thiết lập với bảng EMPLOYEE

Quyền hạn của tính toàn vẹn tham chiếu

Để tạo ra một bảng với một ràng buộc tham chiếu liên kết với nó (khoá ngoại), người sử dụng phải có các quyền hạn phù hợp

Xem xét ví dụ trước của chúng ta với các bảng EMPLOYEE và bảng

DEPARTMENT (xem Tính toàn vẹn tham chiếu và các chỉ mục) Nếu bảng

DEPARTMENT được sở hữu và quản lý bởi phòng quản trị (facilities

department), và bảng EMPLOYEE được quản lý bởi phòng nhân sự (personnel department), hai phòng cần hợp tác với nhau Nếu bảng EMPLOYEE đã có ràng buộc ngoại được xác định đối với bảng DEPARTMENT, người sử dụng trong phòng quản trị không thể xóa bất kỳ bản ghi nào của phòng mà không có sự giúp

đỡ của người trong phòng nhân sự! Đây là do quy tắc ON DELETE RESTRICT được đặt ra đối với bảng DEPARTMENT Điều này có nghĩa là một người sử dụng có thể đặt ra một số hạn chế đối với bảng của bạn mà không cần ý kiến của bạn Để tránh việc này, quyền hạn rõ ràng để đặt ra các ràng buộc tham chiếu phải được đưa cho phòng nhân sự (chủ nhân của bảng EMPLOYEE):

Trang 33

GRANT REFERENCES(DEPTNO) ON DEPARTMENT TO

Thiết kế chỉ mục rất phụ thuộc vào loại công việc và lượng không gian cần thiết dành cho lưu trữ Các trường phụ có thể được thêm vào một chỉ mục để cải thiện hiệu năng truy vấn Các công cụ cũng tồn tại để giúp xác định các chỉ mục cần có cho hệ thống của bạn

Tính toàn vẹn tham chiếu là một dạng kiểm tra ràng buộc giữa một bảng phụ thuộc

và một bảng cha Chỉ mục là cần có để đảm bảo tính duy nhất trong bảng cha, cũng như cải thiện hiệu năng kiểm tra khoá trong quá trình chèn và cập nhật Quyền hạn đặc biệt phải được trao cho các chủ nhân của bảng phụ thuộc để có thể tạo ra các ràng buộc tham chiếu đối với các bảng mà họ không sở hữu

Xác định các ràng buộc dữ liệu trên các bảng

Ngày đăng: 07/08/2014, 09:23

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w