Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 4: Lưu trữ dữ liệu vật lý và các phương pháp truy xuất - Phạm Thị Bạch Huệ

pdf 26 trang ngocly 30 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 4: Lưu trữ dữ liệu vật lý và các phương pháp truy xuất - Phạm Thị Bạch Huệ", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_he_quan_tri_co_so_du_lieu_chuong_4_luu_tru_du_lieu.pdf

Nội dung text: Bài giảng Hệ quản trị cơ sở dữ liệu - Chương 4: Lưu trữ dữ liệu vật lý và các phương pháp truy xuất - Phạm Thị Bạch Huệ

  1. Chương 4 Lưu trữ dữ liệu vật lý & Các phương pháp truy xuất 1 Nội dung 1. Một số khái niệm 2. Cách tổ chức file và phương pháp truy xuất 3. Index 2 1
  2. Các phương tiện lưu trữ DL CPU sử dụng để thi hành CT nhanh Volatile storage: Cache (RAM) mất thông tin khi Primary storage mất nguồn Main memoryy( (DRAM ) CPU dùng DRAM để làm nơi load CàCCT + DL, thi hành CT Flash memory (MP3, USB) Secondary storage/ Nonvolatile storage Magnetic disk On-line storage Optical disk (CD-ROM) Tertiary storage/ Off-line storage Magnetic tapes độ c ố T Giá thành 3 Storage Capacity nearline offline tape & 1015 tape optical ) 13 magnetic 10 disks optical electronic 1011 disksonline secondary 9 electronic 10 tape main 107 al capacity (bytes c fG&Rtfrom Gray & Reuter 105 typi cache 103 10-9 10-6 10-3 10-0 103 access time (sec) 4 2
  3. Storage Cost 104 cache from Gray & Reuter electronic online 102 main electronic tape magnetic secondary optical nearline 100 tape & disks optical dollars/MB disks 10-2 offline tape 10-4 10-9 10-6 10-3 10-0 103 access time (sec) 5 Đĩa từ (Magnetic disk) 6 3
  4. Về cách quản lý đĩa •1 mặt đĩa chia thành nhiều track, 1 track chia thành nhiều block (page). 1 cluster = n block. • Dùng đĩa từ (magnetic disk) để lưu cơ sở dữ liệu vì: – Khốili lượng lưu trữ lớn (không th ể lưu ở bộ nhớ chín h) –Lưu một cách bền bỉ, lâu dài, phục vụ cho truy cập và xử lý lặp lại (bộ nhớ chính không đáp ứng được) – Chi phí cho việc lưu trữ rẻ. •Dữ liệu trên đĩa phải được chép vào bộ nhớ chính khi cần xử lý. Nếu dữ liệu này có thay đổi thì sẽ được ghi trở lạivàoi vào đĩa. •Bộ điều khiển đĩa (disk controller - DC): giao tiếp giữa ổ đĩa và máy tính, nhận 1 lệnh I/O, định vị đầu đọc và làm cho hành động R/W diễn ra. • Block cũng là đơn vị để lưu trữ và chuyển dữ liệu. 7 Chuyển dữ liệu –Thời gian trung bình để tìm và chuyển 1 block = s + rd + btt • Seek time (s): để DS định vị đầu đọc/ ghi đúng track, trung bình khỏang 7-10 msec (destop), 3-8 msec (server). • Rotational delay/latency (rd): để đầu đọc ở vị trí block cần đọc, phụ thuộc rpm, trung bình khỏang 2 msec. • Block transfer time (btt): để chuyển dữ liệu, phụ thuộc vààblkio block size, trac kik size, v à rpm. – Khi truy xuất đến các block liên tiếp thì tiết kiệm được thời gian. –Một số kỹ thuật tìm kiếm khai thác điều này. 8 4
  5. Một số nguyên tắc • DBS giảm thiểu số lượng block được chuyển giữa đĩa và MM (main memory)→ giảm số lần truy xuất đĩa –Lưu lại càng nhiều càng tốt các block dữ liệu trên MM, tăng cơ hội tìm thấy block cần truy xuất trên MM. • Buffer là thành phần của MM dùng để chứa các bản sao (version mới hơn) của các block được đọc lên/ lưu xuống đĩa, do Buffer manager quản lý. 9 Lưu tập tin trên đĩa •CSDL được tổ chức trên đĩa thành một/nhiều tập tin, mỗi tập tin gồm nhiều mẫu tin, mỗi mẫu tin gồm nhiều trường. • Mẫu tin ph ải được lưu trữ têtrên đĩa sao chkhiho khi cần thì có thể truy cập được và truy cập một cách hiệu quả. – Cách tổ chức file chính (Primary file organization): cho biết các mẫu tin định vị một cách vật lý như thế nào trên đĩa, từ đó biết cách truy xuất chúng. – Cách tổ chức phụ (secondary organization/ auxiliary access structure): để truy cập các mẫu tin trên file hiệu quả. 10 5
  6. Mục đích •Kỹ thuật lưu trữ dữ liệu có ích cho người thiết kế CSDL, DBA, người cài đặt HQTCSDL –Người thiết kế CSDL, DBA: biết ưu khuyết điểm của từng kỹ thuậttl lưuutr trữ để thiếttk kế, hiệnnth thực và thao tác CSDL trên 1 HQTCSDL cụ thể. • Đặc điểm của đĩa từ + cách tổ chức file dữ liệu trên đĩa từ Æ Đưa ra cách thiết kế CSDL để có thể lưu trữ và khai thác hiệu quả. • HQTCSDL thường có nhiều chọn lựa để tổ chức DL, việc thiết kế vật lý cần chọn kỹ thuật tổ chức dữ liệu phù hợp cho yêu cầu ứng dụng. –Người cài đặt CSDL cần biết kỹ thuật tổ chức DL và cài đặt đúng, hiệu quả để cung cấp cho DBA và người dùng đầy đủ các chọn lựa. 11 Nội dung 1. Một số khái niệm 2. Cách tổ chức file và phương pháp truy xuất •Mẫu tin, kiểu mẫu tin, tập tin, mẫu tin có kích thước cố định, mẫu tin có kích thước thay đổi • Định vị file block trên đĩa • File header • Thao tác trên file • Heap file, Sorted file, Hashing technique 3. Index 12 6
  7. Mẫu tin (Record) • Data ≡ records ≡ data values/ items ≡ thực thể/mối quan hệ và các thuộc tính của chúng •Kiểu mẫu tin: Record type/ Record format = tập các tên thuộc tính và kiểu dữ liệu của từng thuộc tính. • VD: struct NHANVIEN {char TENNV[30]; char MANV[9]; int LUONG, char PHONG[20]} •Kiểu dữ liệu (Data type) của từng thuộc tính cho biết giá trị mà fie ld c ó thể nhận lấy. –Số: integer(4 bytes), long integer (8 bytes), floating point (4 bytes) –Chuỗi (1 ký tự ≡ 1 byte): chiều dài cố định hoặc thay đổi – Boolean (1 byte) – Date/ time (YYYY-MM-DD: 10 byte) 13 Tập tin •Tổ chức tập tin: –Lưu nhiều mẫu tin, có cùng kiểu hoặc khác kiểu mẫu tin. –Gồm các mẫu tin có cùng chiều dài (byte) Æ tập tin có kích thước các mẫu tin cố định (fixed-lengg)th record) hoặc –Gồm các mẫu tin có chiều dài khác nhau Æ tập tin có kích thước các mẫu tin thay đổi (variable-length record) • TH1: Cùng kiểu mẫu tin, có field có chiều dài thay đổi. VD: field kiểu chuỗi • TH2: Do khác kiểu mẫu tin, là trường hợp các mẫu tin có liên quan được gom nhóm lại (clustered) và lưu trên cùng block để truy xuất nhhhanh. • TH3: Cùng kiểu mẫu tin, có thuộc tính có thể có nhiều giá trị khác nhau. • TH4: Cùng kiểu mẫu tin, có thuộc tính có/ không có giá trị. • Ghi chú: TH3 và TH4 không xảy ra khi lưu trữ dữ liệu trên CSDL quan hệ. 14 7
  8. Tập tin •Mẫu tin có kích thước cố định: dễ truy xuất MANV TENNV LUONG MAPB • Mẫu tin có kích thước thay đổi –TH1: • Dùng ký tự đặc biệt (không lẫn lộn với giá trị thuộc tính) để kết thúc các trường có chiều dài thay đổi hoặc •Lưu kích thước thật tính bằng byte ngay trước giá trị thuộc tính. 001 Nguyen Van A 1000 LAB –TH2: Trước mỗi mẫu tin lưu kiểu mẫu tin. – TH3: C ầnn1kýt 1 ký tự đặccbi biệttng ngăncáchgin cách giữa các giá trị lặplp lạivà1kýti và 1 ký tự kết thúc. –TH4: •Nếu số thuộc tính nhiều nhưng số lượng các thuộc tính thực sự có giá trị là ít thì có thể lưu cặp thay vì chỉ lưu field-value. • Dùng 3 ký tự đặc biệt để ngăn cách: giữa field-name và field-value, giữa các field với nhau, và kết thúc record. Có thể dùng cùng 1 ký tự đặc biệt cho 2 mục đích đầu. •Hoặc đánh mã cho kiểu dữ liệu của từng field là field-type, là số nguyên chẳng hạn, và lưu 15 Tập tin • Ta biết: đĩa được chia ra thành các block. •Thường: Kích thước block B > kích thước record R (cố định, tính bằng byte, B>=R) • 1 block có chứa nhiều mẫu tin, số lượng: bfr= floor(B/R) records/block bfr gọi là blocking factor của file B - bfr*R là số byte không dùng trong 1 block. 16 8
  9. Lưu mẫu tin vào block • Unspanned block i record 1 record 2 record 3 block i+1 record 4 record 5 record 6 • Spanned block i record 1 record 2 record 3 record 4 P block i+1 record 4 (phần còn lại) record 5 record 6 P 17 Tổ chức file block trên đĩa • Liên tục: Các block của file định vị liên tiếp trên các block của đĩa. – Đọc file nhanh dùng double buffering. • Trong khi CPU xử lý 1 block thì b ộ xử lý I/O đọc và chuyển block kế tiếp vào buffer khác. –Mở rộng file khó khăn. • Không liên tục: từng block của file chứa con trỏ trỏ tới block kế tiếp. –Dễ mở rộng file. – Đọc file chậm. •Kết hợp hai cách trên. –Mỗi cluster là các disk block liên tiếp nhau, các cluster liên kết với nhau. – Cluster còn được gọi là file segment hoặc extent. 18 9
  10. File Header •Lưu lại thông tin cần thiết để có thể truy cập file: – Địacha chỉ của các block của file. –Mô tả định dạng của record. •Tập tin gồm mẫu tin có chiều dài cố định: Field- length, thứ tự field đối với unspanned record. •Tập tin gồm mẫu tin có chiều dài thay đổi: mã kiểu cho field, ký t ự ngăn cách, mã ki ểuuchom cho mẫuutin. tin. – Tìm 1 mẫu tin trên đĩa: •1 hoặc 1 số block được chép vào buffer. • CTrình tìm trên buffer dùng thông tin của file header. 19 Thao tác trên file • Các thao tác trên tập tin – Tìm kiếm 1 mẫu tin theo điều kiện – Thêm 1 m ẫutinu tin – Xóa 1 mẫu tin –Sửa 1 mẫu tin • Tùy vào cách tổ chức tập tin mà có cách thao tác phù hợp. 20 10
  11. Mẫu tin có chiều dài cố định • Xét 1 tập tin gồm các mẫu tin account type deposit = record account-number: c har (10); branch-name: char(22); balance: real; end •Giả sử – 1 char :1byte: 1 byte – Real : 8 bytes –1 mẫu tin account : 40 bytes – 40 bytes đầu tiên là mẫu tin thứ 1 – 40 bytes tiếp theo là mẫu tin thứ 2 21 Mẫu tin có chiều dài cố định (tt) •Mỗi mẫu tin có thêm 1 bit (tương tự .dbf) –=0: Xóa – =1: Đang dùng • File header chứa địa chỉ của mẫu tin trống đầu tiên – Danh sách các mẫu tin trống (free list) •Lưu trữ vật lý của các mẫu tin account 0411 1011 3233 40 1 A-102 Perryridge 400 1 A-305 Round Hill 350 1 A-215 Mianus 700 1 A-101 Downtown 500 1 A-222 Redwood 700 1 A-201 Perryridge 900 1 A-217 Brighton 750 1 A-110 Downtown 600 1 A-218 Perryridge 700 0 0 0 22 11
  12. Mẫu tin có chiều dài cố định (tt) •Hủy mẫu tin – Đánh dấu xóa vào bit thông tin – Đưama mẫuutinb tin bị đánh dấu xóa vào free list FH 1 A-102 Perryridge 400 1 A-305 Round Hill 350 0 A-215 Mianus 700 1 A-101 Downtown 500 1 A-222 Redwood 700 1 A-201 Perryridge 900 0 A-217 Brighton 750 1 A-110 Downtown 600 1 A-218 Perryridge 700 0 A-111 Redwood 800 0 0 23 Mẫu tin có chiều dài cố định (tt) • Thêm một mẫu tin –Hoặc thêm vào những mẫu tin bị đánh dấu xóa hoặc thêm vào cuối tập tin – Cập nhật lại free list FH 1 A-102 Perryridge 400 1 A-305 Round Hill 350 1 A-111 Downtown 700 1 A-101 Downtown 500 1 A-222 Redwood 700 1 A-201 Perryridge 900 0 A-217 Brighton 750 1 A-110 Downtown 600 1 A-218 Perryygridge 700 0 0 0 •Tìm kiếm – Quét tuần tự trên tập tin 24 12
  13. Mẫu tin có chiều dài động • Trong DBMS, mẫu tin có chiều dài động dùng để – Lưutru trữ nhiềulou loạimi mẫu tin trong 1 tậptinp tin –Các loại mẫu tin chứa các trường có chiều dài động •Xét tập tin gồm các mẫu tin account type account-list = record branch-name: char(22); account-info: array [1 n] of record account-number: char(10); balance: real; end end 25 Mẫu tin có chiều dài động (tt) • Byte-String Representation –Cuối mỗi mẫu tin có 1 byte ký tự đặc biệt cho biếtkt kết thúc mẫutinu tin Perryridge A-102 400 A-201 900 A-218 700 - Round Hill A-305 350 - Brighton A-217 750 - Downtown A-101 500 A-110 600 - Mianus A-215 700 - Redwood A-222 700 - 26 13
  14. Mẫu tin có chiều dài động (tt) • Byte-String Representation –Sử dụng lại không gian trống sau khi xóa 1 mẫu tin khô ng hiệu quả –Dẫn đến tình trạng phân mảnh Perryridge A-102 400 A-201 900 A-218 700 - Round Hill A-305 350 - Brighton A-217 750 - Downtown A-101 500 A-110 600 - Mianus A-215 700 - Redwood A-222 700 - 27 Mẫu tin có chiều dài động (tt) • Byte-String Representation –Tốn nhiều chi phí khi chiều dài mẫu tin thay đổi Perryridge A-102 400 A-201 900 A-218 700 - Round Hill A-305 350 A-202- Brighton950 A-217 750 - Downtown A-101 500 A-110 600 - Mianus A-215 700 - Redwood A-222 700 - 28 14
  15. Mẫu tin có chiều dài động (tt) • Fixed-Length Representation –Sử dụng 1 hay nhiều mẫu tin có chiều dài cố định biểu diễn cho những mẫu tin có chiều dài động – Có 2 kỹ thuật • Reserved space –Sử dùng độ dài lớn nhất của 1 mẫu tin nào đó cài đặt cho tất cả các mẫu tin còn lại – Độ dài này phải đảm bảo không bao giờ dài thêm được nữa Perryridge A-102 400 A-201 900 A-218 700 Round Hill A-305 350 Mianus A-215 700 Downtown A-101 500 A-110 600 Redwood A-222 700 Brighton A-217 750 29 Mẫu tin có chiều dài động (tt) • Fixed-Length Representation • Pointer Anchor block –Các mẫu tin có chiều dài Perryridge A-102 400 động móc xích với nhau Round Hill A-305 350 thông qua danh sách các Mianus A-215 700 mẫu tin có chiều dài cố Downtown A-101 500 định Redwood A-222 700 – Có 2 loại blocks trong tập Brighton A-217 750 tin » Anchor block – Chứa A-201 900 mẫu tin đầu tiên của A-218 700 mảng account-info Overflow block A-110 600 » Overflow block – Chứa các mẫu tin tiếp theo của mảng account-info 30 15
  16. Cách tổ chức mẫu tin trên file • Không được sắp: mẫu tin được chèn vào bất cứ chỗ nào trống trên file. • Được sắp: mẫu tin l ưu vào đúng vị ttírí để đảm bảo thứ tự theo một trường nào đó. •Băm (Hashing): định vị mẫu tin trên thiết bị lưu trữ dùng một hàm băm. 31 Heap file • Là hình thức lưu trữ dữ liệu trong đó các record được lưu không theo thứ tự logic nào cả (mà là thứ tự thêm dữ liệu) •Thường thì dữ liệu của mỗi quan hệ được lưu trong 1 file. – Tìm kiếm: duyệt. – Thêm: nhanh. • Cách thức lưu trữ và thao tác dữ liệu dễ, chỉ thích hợp cho tập tin có kích thước nhỏ, sẽ rất chậm khi tập tin có kích thước lớn. 32 16
  17. Sequential file • Là hình thức lưu trữ dữ liệu trong đó các mẫu tin được lưu trữ theo thứ tự của trường là search key. • Link các mẫu tin quan hệ thứ tự bằng pointer • Thích hợp cho những ứng dụng đặctrc trưng làm việc trên dữ liệu được sắp xếp (theo search key) –Tìm kiếm: duyệt hoặc tìm tuần tự. • Nên lưu trữ vật lý theo thứ tự của search key để giảm thiểu số block cần phải truy cập. Nhưng: –Khi dữ liệu lớn, thao tác Insert, Delete phức tạp • Insert: Định vị -> insert vào overflow block (≠ anchor block)-> phá vỡ thứ tự vật lý, phải tổ chức lại 1 1 Anchor 2 2 block 4 4 Overflow block 3 33 Hashing file •Một hàm băm (hash function) được thiết lập trên 1 thuộc tính là search key của quan hệ. • Nguyên lý: “lưu ở đâu, tìm ở đó” • Chia tập tin thành các lô (bucket) tùy giá trị của search key. Mỗi lô có một số block, link nhau bởi pointer. Dữ liệu trong block được tổ chức như heap. •B là số lượng các lô. Giá trị hàm băm tại giá trị tìm kiếm là số nguyên ∈ [0,B-1] cho biết lô chứa mẫu tin.Nếu khóa là chuỗi ký tự, ta định ra nguyên tắc chuyển chuỗi ký tự thành số. 34 17
  18. Hashing file • Tìm kiếm mẫu tin khóa v – Tính h(v) để biết lô, và thực hiện tìm kiếm trong lô này. • Chèn – Tính h(v) để biết lô. Tìm kiếm khối cuối cùng của lô, nếu còn chỗ thì chèn, còn không thì cấp phát 1 khối khác chèn vào cuối danh sách của lô h(v). • Xóa/ Sửa – Tìm ki ếmvàsm và sửahoa hoặcxóa(c xóa (đánh dấu) – Sau khi xóa, có thể phải thực hiện bước hiệu chỉnh (dồn dữ liệu trong khối) để giảm số lượng khối trong lô này. 35 Clustering file 10 TENPB ĐĐ MANV TENNV MAPB KT HCM N1 A 20 MANV TENNV N2 B 10 N2 B N3 C 20 N5 E N4 D 20 N6 G N5 E 10 N6 G 10 20 TENPB ĐĐ MAPB TENPB ĐĐ KT HCM 10 KT HCM MANV TENNV 20 KD HN N1 A N3 C N4 D DL liên quan tách DL liên quan được biệt, tốn lưu cùng nhau, tiết không gian kiệm không gian Unclustered tables Clustered tables 36 18
  19. Clustering file •1 cluster được hình thành từ việc lưu dữ liệu của một vài table chung trên một vài block. • Cluster key là 1 hoặc nhiều field chung của các table tham gia việc gom nhóm. Cluster key đượccch chỉ định khi người dùng tạo cluster. • Các table này thường được dùng chung hoặc kết (join operator ZY) để phục vụ cho nhu cầu truy xuất dữ liệu. •Việc lưu trữ này có ích: –Giảm thời gian truy xuất đĩa vì số block phải đọc giảm – Giá trị tại field là cluster key ch ỉ đượclc lưu1lu 1 lầnbn, bấtkt kể có bao nhiêu record ở table khác tham chiếu đến dòng này ⇒ tiết kiệm không gian để lưu trữ (và tạo mối quan hệ trên dữ liệu) •Tổ chức dl theo kiểu cluster không ảnh hưởng gì đến việc tạo index trên các table tham gia tạo cluster. 37 Sử dụng cluster file •Chỉ định cluster ở giai đọan thiết kế vật lý. •Chọn các table để gom nhóm: – Các table chủ yếu phục vụ cho truy vấn (select), ít khi thêm mới (insert) hoặccc cậppnh nhật (update). –Chứa dữ liệu được truy vấn chung hoặc kết với tần suất cao. •Chọn các field làm cluster key – Cluster key phải có đủ các giá trị phân biệt để các record liên quan đến mỗi giá trị của cluster key lấp gần đầy 1 block dữ liệu. •Nếu có ít dòng quá sẽ làm tốn không gian lưu trữ mà hiệu quả không đáng kể. •Có thể định SIZE khi tạo cluster, là số byte trung bình ước tính để có thể lưu 1 cluster •Nếu có nhiều dòng quá cũng không hiệu quả. • Dùng cluster key có quá ít giá trị, vd: PHAI, sẽ phản tác dụng. 38 19
  20. Index (1) • Dùng chỉ mục cho file giống như việc dùng bản liệt kê danh mục (catalog) trong một thư viện. – Thông tin trên catalog đã được sắp xếp ⇒ tìm kiếm nhanh mà không phải duyệt tất cả. • Về kỹ thuậtcó2lt, có 2 lọai index cơ bản: – Index sắp thứ tự (ordered indices) dựa trên các giá trị làm index. • Dùng PP tìm nhị phân trên file index. • Index là 1 file có thứ tự gồm các mẫu tin có chiều dài cố định gồm 2 field. – Field 1: khóa tìm kiếm. – Field 2: con trỏ trỏ đến các block. – Index dùng kỹ thuật băm (hash indices) • Đáhánh g iááiá các kỹ thuậtdùt dùng in dex •Lọai truy xuất •Thời gian truy xuất (access time) •Thời gian Insert / delete • Không gian đĩa dùng cho index. 39 Index (2) • Dense / Sparse index – Dense index • File dữ liệu có bao nhiêu giá trị trên search key thì trên file index có bấy nhiêu record •Mỗi record của file index chứa 1 giá trị là search key và 1 con trỏ trỏ đến record đầu tiên trên file dữ liệu có cùng giá trị trên trường search key. – Sparse index • Các record trên tập tin index ch ỉ ứng vớiim mộtts số giá trị trên file dữ liệu trên trường search key (chứ không phải tất cả các giá trị của search key như dense index) • Để tìm 1 giá trị, ta tìm trong tập tin index 1 mẫu tin sao cho giá trị search key lớn nhất <= giá trị cần tìm, và duyệt record xuất phát từ vị trí đầu tiên mà pointer chỉ đến. 40 20
  21. Ví dụ • Dense index 1 1 5 5 5 7 7 10 7 10 10 • Sparse index 1 2 1 3 5 5 7 6 10 7 9 10 41 Index (3) • File có cách tổ chức riêng và có cách thao tác trên file tương ứng. • Bên cạnh đó, ta cần bổ sung thêm cấu trúc truy cập hỗ trợ truy cập nhanh trên file. • Index là cơ chế giúp HQT CSDL truy xu ấttd dữ liệu nhanh. • Index key dùng để chỉ 1 hoặc nhiều trường (field) dùng làm index. – Simple Index: index key chỉ có 1 field duy nhất. – Composite index: index key có nhiều 1 field, nhưng <=16 –Ví dụ: • NOIGD ((, ,TENNGD, SONHA, DUONG, ,Q,) QH,TP) – Nhu cầu tìm nhanh 1 địa chỉ giao dịch. –Nếu index key là DUONG (simple index) thì không hiệu quả – Mà phải dùng SONHA, DUONG, QH, TP (composite index), và trên các field này, giá trị là duy nhất 42 21
  22. Index(4) •Mỗi cấu trúc index kết hợp với 1 index key cụ thể. •Truy cập đến CSDL dùng index, ta phải sử dụng 1 hoặc một số field là index key trong mệnh đề WHERE của câu SQL. –Nếu là composite index thì nên dùng nhiều hơn 1 field trong mệnh đề WHERE, khi đó truy xuất sẽ hiệu quả hơn. •Cơ bản, bất cứ field nào cũng có thể là index và có thể có nhiều index trên cùng 1 file. Vấn đề là index có mang lại hiệu quả hay không. • Index có hiệu quả hay không căn cứ vào: –Lọai dữ liệu mà trên đó thiết lập index. –Giá trị trên index key có phân biệt hay không. –Lọai câu SQL được dùng. • Khi thi hành 1 câu SQL nếu nhiềuhu hơn 20% các dòng dữ liệu trong 1 bảng được truy cập đến thì việc dùng index mới có lợi hơn là không dùng index (table scan). – Các truy cập khác trên bảng, nếu cập nhật nhiều trên field làm index sẽ làm chậm hệ thống. – Có quá nhiều index sẽ làm chậm hệ thống. 43 Index (5) Các thuật ngữ: Primary index Single-level Clustered index index Index Secondary index Multi-level index 44 22
  23. Primary index • Được tạo trên field làm khóa sắp xếp cho file dữ liệu. Thứ tự vật lý của các record trên đĩa cũng dựa trên field này, và trên đó các record có giá trị duy nhất. –Nếu có nhiều record có cùng giá trị trên field dùng để sắp xếp, ta sẽ tạo clustering index trên field này. • Có 1 mẫu tin index trong file index ứng với 1 block trong file dữ liệu • File primary index có kích thước nhỏ hơn rất nhiều so với file dữ liệu. – Record đầu tiên trong mỗi block của file dữ liệu gọi là anchor record hay block anchor. • Chỉ cóóth thể có1ó 1 pr imary in dex, hoặc 1l1 clus titering idindex tê1fildtrên 1 file dữ liệu, không thể có cả hai loại index này trên cùng 1 file. File dữ liệu File chỉ mục TEN PHAI DIACHI NGSINH An An Ánh Bằng Áng . . Bằng . Bin Vinh Bình Vinh Vịnh Xuân 45 Clustering index •Nếu dữ liệu trên data file được sắp vật lý theo field không phải là khóa (không duy nhất đối với từng mẫu tin) thì field đó là clustering field. • Clustering index được tạo trên clustering field để tăng tốc độ tìm kiếm các mẫu tin có cùng giá trị trên clutering field. • Có 1 record trên file index chứa 1 giá trị của clustering field, con trỏ trỏ đến block đầu tiên chứa giá trị phân biệt. PHG HOTEN MANV PHAI 1 1 File dữ liệu 2 2 File chỉ mục 2 1 3 2 3 3 3 4 3 5 3 4 4 4 5 5 5 46 23
  24. Secondary Index •Một secondary index cung cấp thêm phương tiện để truy cập file, ngoài primary index ra. – Được tạo trên field là candidate key và có giá trị duy nhất trên mỗi record, dữ liệu của data file không được sắp thứ tự trên field này. –Cũng có thể tạo trên field không phải là khóa và có giá trị trùng nhau. – Field 1 là field dữ liệu không được sắp thứ tự của data file, và cần tìm kiếm trên đó. – Field 2 là con trỏ trỏ đến block đầu tiên chứa giá trị, hoặc trỏ đến record chứa giá trị. •Có thể tạo nhiều secondary index cho 1 file dữ liệu. –TH1: tạo trên field có giá trị duy nhất, field này còn được gọi là secondary key. HOTEN SOGP SOXE NGAYCAP 60P1-3445 66X7-1234 52X1-1234 52X1-2345 File dữ liệu 52X1-2345 63P4-5678 File chỉ mục 53X2-0123 53X2-0123 60P1-3445 63X5-0908 61P2-3121 61P2-3121 63P4-5678 52X1-1234 63X5-0908 66X7-1234 47 PHG MANV TENNV PHAI NSINH Secondary index 3 5 1 6 File chỉ mục 2 3 4 File dữ liệu 1 1 2 6 3 8 4 4 5 8 6 6 8 5 2 5 5 1 6 3 6 3 8 3 48 24
  25. Nhận xét File dữ liệu sắp File dữ liệu không sắp theo theo Index field index field Index field làm khóa Primary index Secondary index (Key) Index field không là khóa Clustering index Secondary index (non key) •1 file có thể có nhiều index vì có thể có nhiều nhu cầu tìm kiếm trên file. •Trong SQL Server, có thể tạo tối đa là 1 primary index và 249 secondary index. 49 Multi – level Index Index block 0 Data block 0 Data block 1 Index block 1 50 25
  26. Dùng index • Nên tạo index trên các field có giá trị phân biệt, được truy xuất đến với tần suất cao, và kết quả câu truy vấn là nhiều dòng dữ liệu. •Truy vấn trên một miền giá trị dùng các tóan tử BETWEEN, >, >=, <, <=. • Index key là các trường sẽ dùng cho phép kết, hoặc trong mệnh đề GROUP BY, ORDER BY. • Không nên tạo clustered index trên các trường sẽ thường xuyên cập nhật. 51 Hết chương 4. 52 26