Tối ưu hóa lưu trữ bằng nén sâu trong DB2 10
lượt xem 4
download
Bản chất của dữ liệu Tin hay không là tùy bạn, khi khối dữ liệu tăng lên, bản số (cardinality) của dữ liệu đó có xu hướng giảm đi. (ND: Thuật ngữ cardinality đề cập đến sự duy nhất của dữ liệu được chứa trong một cột (thuộc tính) cụ thể của bảng dữ liệu). Do đó, đúng là không có nhiều thứ thật sự duy nhất trên thế giới này. Nhiều thứ có thể là duy nhất khi được dùng trong một tổ hợp, nhưng bản thân các yếu tố cơ bản không phải là tất cả những thứ...
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Tối ưu hóa lưu trữ bằng nén sâu trong DB2 10
- Tối ưu hóa lưu trữ bằng nén sâu trong DB2 10 Bản chất của dữ liệu Tin hay không là tùy bạn, khi khối dữ liệu tăng lên, bản số (cardinality) của dữ liệu đó có xu hướng giảm đi. (ND: Thuật ngữ cardinality đề cập đến sự duy nhất của dữ liệu được chứa trong một cột (thuộc tính) cụ thể của bảng dữ liệu). Do đó, đúng là không có nhiều thứ thật sự duy nhất trên thế giới này. Nhiều thứ có thể là duy nhất khi được dùng trong một tổ hợp, nhưng bản thân các yếu tố cơ bản không phải là tất cả những thứ hay thay đổi. Hãy xem xét bảng các nguyên tố tuần hoàn — mọi thứ trên thế giới của chúng ta được tạo thành từ các cách kết hợp của một tập khá nhỏ các nguyên tố. Áp dụng khái niệm này cho dữ liệu và bạn thấy điều này cũng hoàn toàn đúng. Ví dụ, theo điều tra dân số mới nhất của Hoa Kỳ, có khoảng 300 triệu người sống tại Hoa Kỳ. Tuy nhiên, chỉ có khoảng 78.800 họ duy nhất, dẫn đến bản số rất thấp với "các nhóm họ" khổng lồ trong các tập tên cụ thể. Với các tên thậm chí còn tệ hơn, có khoảng 6.600 tên (4.400 tên duy nhất với nữ giới và 2.200 tên duy nhất với nam giới). Tên của các thành phố, các đường phố và các địa chỉ, chưa kể đến các tên, các mô tả và các thuộc tính sản phẩm, cũng có xu hướng dư thừa rất cao với bản số thấp (có nhiều tên trùng lặp). Nén sâu hoạt động ra sao Nén sâu được dựa trên nguyên lý là một lượng lớn dữ liệu có xu hướng có sự dư thừa rất cao. Nén sâu hoạt động bằng cách tìm kiếm các mẫu lặp lại trong dữ liệu và thay thế các mẫu đó bằng các ký hiệu 12-bit, được lưu trữ cùng với các mẫu mà chúng đại diện trong một từ điển tĩnh. Sau khi từ điển này được tạo ra, nó được lưu trữ trong bảng (hoặc trang), cùng với dữ liệu nén và được nạp vào bộ nhớ bất cứ khi nào dữ liệu trong bảng được truy cập (để hỗ trợ giải nén). Khi nén sâu được kích hoạt, DB2 quét toàn bộ bảng để tìm kiếm các giá trị cột lặp lại và các mẫu lặp lại trong nhiều cột trong một hàng hoặc trên một trang. Nó cũng tìm kiếm các mẫu lặp lại là các chuỗi con của một cột cụ thể. Tuy nhiên, tìm thấy mẫu lặp lại không có nghĩa là dữ liệu được tự động nén. Dữ liệu chỉ được nén khi thực hiện tiết kiệm vùng lưu trữ. Trong bất kỳ trường hợp nào, toàn bộ hàng được lưu trữ như là một tập các ký hiệu 12-bit; các hàng không bao giờ được nén một phần. Nén sâu có thể được áp dụng cho dữ liệu nguyên thủy của người dùng (dữ liệu hàng, dữ liệu XML và các chỉ mục), dữ liệu do hệ thống tạo ra (các bảng tạm thời) và dữ liệu quản trị (các hình ảnh sao lưu và các bản ghi nhật ký giao dịch đã lưu). Các phương tiện nén với dữ liệu quản trị có sẵn trong tất cả các ấn bản phần mềm DB2; Các tính năng nén cao cấp cho dữ liệu nguyên thủy của người dùng và dữ liệu do hệ thống tạo ra có sẵn thông qua Tính năng tối ưu hóa lưu trữ của DB2 (DB2 Storage Optimization Feature). Về đầu trang Định dạng hàng thay thế Khi nói đến việc tạo ra các bảng do người dùng định nghĩa, có hai định dạng hàng mà bạn có thể sử dụng — là tiêu chuẩn và thay thế — và định dạng được chọn xác định cách đóng gói các hàng
- như thế nào khi chúng được lưu trữ trên đĩa. Định dạng hàng thay thế cho phép lưu trữ cô đọng hơn giá trị NULL và giá trị mặc định hệ thống, cũng như các giá trị có độ dài bằng không trong các cột có các kiểu dữ liệu có độ dài biến đổi. (Các kiểu dữ liệu có độ dài biến đổi được DB2 công nhận là VARCHAR, VARGRAPHIC, LONG VARCHAR, LONG VARGRAPHIC, BLOB, CLOB, DBCLOB và XML). Do đó, định dạng này thường được gọi là nén giá trị NULL và giá trị mặc định hoặc đơn giản chỉ là nén giá trị. Với định dạng hàng tiêu chuẩn, vùng lưu trữ cho các giá trị cột có độ dài cố định được phân bổ ngay cả khi giá trị thực tế được lưu trữ là NULL. Tương tự như vậy, các giá trị có độ dài bằng không, được lưu trữ trong các cột có kiểu dữ liệu độ dài biến đổi sẽ tiêu tốn một lượng nhỏ vùng lưu trữ. Tuy nhiên, với định dạng hàng thay thế, các giá trị NULL trong tất cả các cột và các giá trị độ dài bằng không trong các cột có kiểu dữ liệu độ dài biến đổi không tiêu tốn vùng lưu trữ nào cả. Khi so sánh với định dạng hàng tiêu chuẩn, định dạng hàng thay thế cũng làm giảm chi phí lưu trữ cho tất cả các giá trị khác trong các cột có kiểu dữ liệu độ dài biến đổi. Tuy nhiên, sự tiêu thụ vùng lưu trữ cho tất cả các giá trị khác NULL được lưu trữ trong các cột với kiểu dữ liệu độ dài cố định lại tăng lên. Có thể tìm thấy các công thức để xác định tổng số byte dùng cho các giá trị của tất cả các kiểu dữ liệu và các định dạng hàng được hỗ trợ trong các tài liệu tham khảo dành cho câu lệnh CREATE TABLE. Điều khiển định dạng hàng Bạn có thể điều khiển định dạng hàng được sử dụng cho từng bảng một. Theo mặc định, các bảng sử dụng định dạng hàng tiêu chuẩn. Để tạo một bảng sử dụng định dạng hàng thay thế, chỉ cần nối thêm cụm từ VALUE COMPRESSION vào câu lệnh tảo bảng CREATE TABLE được sử dụng để tạo ra bảng đó. Ví dụ: CREATE TABLE ... VALUE COMPRESSION. Để thay đổi định dạng hàng đã sử dụng cho bảng hiện tại, hãy ban hành một trong các câu lệnh sau để thay thế: ALTER TABLE ... ACTIVATE VALUE COMPRESSION ALTER TABLE ... DEACTIVATE VALUE COMPRESSION Nếu bạn kích hoạt (activate) hoặc tắt kích hoạt (deactivate) nén giá trị cho một bảng, dữ liệu hiện có được lưu trữ trong bảng đó không bị thay đổi. Thay vào đó, các hàng vẫn giữ nguyên theo định dạng hàng hiện có của chúng, trừ khi bạn áp dụng một hoặc nhiều biện pháp được trình bày trong phần Các chiến lược lựa chọn trong bài này. Đối với các bảng sử dụng định dạng hàng thay thế, bạn có thể tiết kiệm thêm vùng lưu trữ bằng cách cho phép nén giá trị mặc định cho các cột ký tự và số có độ dài cố định. Điều này dẫn đến các giá trị mặc định của hệ thống (là 0 với các cột số và rỗng với các cột ký tự có độ dài cố định) không được cụ thể hoá trong biểu diễn trên đĩa của một hàng. Bạn có thể cho phép nén các giá trị
- mặc định của hệ thống cho từng cột riêng lẻ bằng cách chỉ rõ tùy chọn cột COMPRESS SYSTEM DEFAULT cho cột đó trong câu lệnh SQL tạo bảng CREATE TABLE hoặc sửa đổi bảng ALTER TABLE ... ALTER COLUMN. Quyết định sử dụng định dạng nào Mặc dù định dạng hàng tiêu chuẩn là một lựa chọn tốt trong hầu hết trường hợp, nhưng có một số bảng mà định dạng hàng thay thế đem lại cho chúng một cách bố trí lưu trữ cô đọng hơn nhiều: Các bảng ít giá trị điền vào (tức là, các bảng có chứa nhiều hàng có giá trị NULL hoặc giá trị mặc định hệ thống) nên sử dụng định dạng hàng thay thế. Tuy nhiên, các yêu cầu về vùng lưu trữ cho một hàng sẽ tăng thêm bất cứ khi nào bạn cập nhật một giá trị NULL hoặc giá trị mặc định hệ thống thành một giá trị khác NULL hoặc khác giá trị mặc định hệ thống. Sự thay đổi này thường gây ra tràn bản ghi, ngay cả khi trong bảng không có cột nào có kiểu dữ liệu độ dài biến đổi (tức là, các bảng trong đó tất cả các hàng có cùng yêu cầu vùng lưu trữ như nhau khi sử dụng định dạng hàng tiêu chuẩn). Các bảng có kiểu dữ liệu độ dài biến đổi trong phần lớn các cột của chúng nên sử dụng định dạng hàng thay thế. Đối với một số bảng không có các đặc điểm nói trên, việc sử dụng định dạng hàng thay thế có thể làm tăng các yêu cầu vùng lưu trữ. Có thể cũng đáng làm một phép kiểm tra trong môi trường của bạn. Bạn có thể sử dụng định dạng hàng thay thế bất kể bạn có giấy phép dùng DB2 Storage Optimization Feature hay không. Tính linh hoạt này cho phép bạn chọn cách bố trí lưu trữ cô đọng nhất cho mỗi bảng, ngay cả khi bạn chưa có kế hoạch sử dụng nén hàng. Tuy nhiên, nếu bạn đang có kế hoạch sử dụng nén hàng, việc chọn để bắt đầu với nhiều định dạng hàng cô đọng hơn sẽ làm cho vùng lưu trữ trên đĩa của bảng đó nhỏ hơn trong hầu hết trường hợp, mặc dù hiệu quả là không lớn hoặc thậm chí không đáng kể. Điều này là do thực tế là nén hàng có thể nén rất tốt các giá trị NULL và các giá trị mặc định hệ thống đã cụ thể hóa trong các bảng có định dạng hàng tiêu chuẩn. Về đầu trang Nén hàng Nén hàng đã được giới thiệu trong DB2 9 cho Linux, UNIX và Windows và kể từ đó đã thực hiện nhiều cải tiến đáng kể cho chức năng này trong mọi bản phát hành, kết quả là chức năng nén thích ứng thế hệ tiếp theo có sẵn trong DB2 10.1. Nén hàng đòi hỏi phải mua giấy phép DB2 Storage Optimization Feature. Bắt đầu từ DB2 10.1, hai kiểu phương pháp nén hàng có sẵn là: Nén hàng cổ điển — Nói đến công nghệ nén đã được sử dụng: o Với dữ liệu bảng người dùng, kể từ DB2 9 cho Linux, UNIX và Windows.
- o Với dữ liệu XML và dữ liệu tạm thời, kể từ DB2 9.7 cho Linux, UNIX và Windows. Nén hàng thích ứng — Một chế độ nén mới được giới thiệu trong DB2 10.1 mà bạn có thể áp dụng cho dữ liệu bảng người dùng. Nén hàng thích ứng tốt hơn nén hàng cổ điển ở chỗ nó thường đạt được nén tốt hơn và yêu cầu bảo trì cơ sở dữ liệu ít hơn để duy trì tỉ lệ nén gần tới mức tối ưu. Nén hàng cổ điển Nén hàng cổ điển nhờ vào một thuật toán nén dựa theo từ điển. Có một từ điển nén cho từng đối tượng bảng. Từ điển này gồm một có một ánh xạ các mẫu thường xuất hiện trong các hàng của toàn bộ bảng. Từ điển nén này được gọi là từ điển nén mức bảng. Có thể thấy một ví dụ về cách hoạt động của nén hàng cổ điển trong Hình 1. Hình 1. Cách hoạt động của nén hàng cổ điển Bạn có thể cho phép nén hàng theo từng bảng một. Để có nén hàng cổ điển, bạn phải cho phép nén bảng đó và phải tồn tại một từ điển cho đối tượng dữ liệu hoặc đối tượng XML. Để cho phép nén hàng cổ điển cho một bảng trong DB2 10.1 vào lúc tạo bảng, hãy ban hành câu lệnh sau CREATE TABLE ... COMPRESS YES STATIC.
- Mặt khác, để cho phép nén hàng cổ điển cho một bảng hiện hiện có, hãy thực hiện một câu lệnh: ALTER TABLE ... COMPRESS YES STATIC. Trong DB2 10.1, tùy chọn STATIC trong cụm từ COMPRESS YES là bắt buộc trong cả hai trường hợp. Trong các phiên bản DB2 trước, bạn sử dụng cụm từ COMPRESS YES mà không thêm bất kỳ điều kiện nào, như sau: CREATE TABLE ... COMPRESS YES ALTER TABLE ... COMPRESS YES Việc cho phép nén hàng dẫn đến tiết kiệm vùng lưu trữ cho phần lớn các bảng thực tế; tỷ lệ nén thường là 50-80% hoặc cao hơn. Hơn nữa, vùng lưu trữ cho một bảng có sử dụng nén hàng không bao giờ vượt quá vùng lưu trữ của phiên bản không nén của cùng bảng đó. Việc tiết kiệm vùng lưu trữ của nén hàng thường dẫn đến các hoạt động vào/ra (I/O) vật lý ít hơn để đọc dữ liệu trong một bảng nén, do cùng một số lượng hàng được lưu trữ trên ít trang vật lý hơn. (Nén cho phép nhiều hàng dữ liệu hơn được đóng gói vào cùng một số lượng trang và tỷ lệ truy cập vùng bộ đệm tăng lên). Trong nhiều trường hợp, sự tiết kiệm vào/ra và việc sử dụng vùng bộ đệm được cải thiện dẫn đến thông lượng cao hơn và thời gian thực hiện truy vấn nhanh hơn. Nén hàng thích ứng Giống như nén hàng cổ điển, nén hàng thích ứng nhờ vào một thuật toán nén dựa theo từ điển. Sự khác biệt là ở chỗ có thể có nhiều từ điển nén cho từng đối tượng bảng. Mỗi từ điển có chứa một ánh xạ các mẫu thường xảy ra trong các hàng suốt toàn bộ một trang đơn lẻ. Do đó, các từ điển nén này được gọi là các từ điển nén mức trang. Hình 2 cho thấy một ví dụ về cách nén hàng thích ứng hoạt động. Nén hàng thích ứng không chỉ đem lại các tỷ lệ nén tốt hơn đáng kể trong nhiều trường hợp, mà còn có thể thích ứng với các đặc điểm dữ liệu thay đổi.
- Hình 2. Nén hàng thích ứng hoạt động như thế nào Như với nén hàng cổ điển, bạn cho phép nén hàng thích ứng theo từng bảng một. Trong DB2 10.1, để tạo ra một bảng đã cho phép nén hàng thích ứng, bạn chỉ cần ban hành một trong những câu lệnh sau: CREATE TABLE ... COMPRESS YES ADAPTIVE CREATE TABLE ... COMPRESS YES Mặt khác, để cho phép nén hàng thích ứng một bảng hiện có, hãy thực hiện một câu lệnh ALTER TABLE giống như sau: ALTER TABLE ... COMPRESS YES ADAPTIVE ALTER TABLE ... COMPRESS YES
- Trong DB2 10.1, nén hàng thích ứng là kiểu nén hàng mặc định được dùng. Vì vậy, tùy chọn ADAPTIVE là giá trị mặc định cho cụm từ COMPRESS YES. Khi bạn nâng cấp một cơ sở dữ liệu từ một phiên bản cũ của DB2 cho Linux, UNIX và Windows, các bảng hiện có đã cho phép nén hàng cổ điển, sẽ duy trì các thiết lập nén của mình và nén hàng cổ điển vẫn được sử dụng. Do đó, nếu bạn muốn cho phép nén hàng thích ứng cho các bảng này, bạn phải sử dụng một trong các câu lệnh ALTER TABLE được hiển thị ở trên. Như đã đề cập, nén hàng thích ứng xây dựng trên nén hàng cổ điển; các từ điển nén mức bảng vẫn được sử dụng. Một từ điển mức bảng được bổ sung bằng các từ điển nén mức trang, có chứa các mục ứng với các mẫu xuất hiện thường xuyên trong một trang đơn lẻ. Từ điển mức bảng giúp loại bỏ các mẫu lặp lại trong phạm vi chung, trong khi các từ điển mức trang chịu trách nhiệm tìm ra các mẫu lặp lại cục bộ trên các trang riêng lẻ đó. Cách sử dụng sự kết hợp này của cả hai từ điển mức bảng và mức trang được minh họa trong Hình 3. Hình 3. Cách các từ điển nén mức bảng và mức trang làm việc cùng nhau khi sử dụng nén
- thích ứng Các từ điển mức trang được duy trì tự động. Khi một trang đã đầy dữ liệu, trình quản lý cơ sở dữ liệu DB2 xây dựng một từ điển nén mức trang cho dữ liệu trong trang đó. Theo thời gian, trình quản lý cơ sở dữ liệu DB2 tự động xác định khi nào cần xây dựng lại từ điển cho các trang, ở đây các mẫu dữ liệu đã thay đổi đáng kể. Kết quả là, việc sử dụng nén thích ứng không chỉ mang lại
- tiết kiệm nén tổng thể cao hơn, mà nó còn bảo đảm rằng các tỷ lệ nén không giảm đi theo thời gian như với nén hàng cổ điển. Trong nhiều trường hợp thực tế, tỉ lệ nén vẫn duy trì gần như tối ưu theo thời gian. Như vậy, bằng cách sử dụng nén hàng thích ứng, bạn có thể làm giảm chi phí liên quan đến việc giám sát các tỷ lệ nén của các bảng và thực hiện bảo trì cần thiết (sắp xếp lại bảng không nối mạng, cổ điển) để cải thiện việc sử dụng lưu trữ. Về đầu trang Khám phá các thiết lập nén Bằng cách kiểm tra cột COMPRESSION trong khung nhìn danh mục hệ thống SYSCAT.TABLES, bạn có thể xác định xem một bảng đã cho phép nén hàng chưa và nó sử dụng định dạng hàng nào. Các giá trị có thể có với cột này như sau: V. — Sử dụng định dạng nén hàng thay thế và không nén hàng. R. — Sử dụng nén hàng và định dạng hàng tiêu chuẩn. B. — Sử dụng định dạng hàng thay thế và nén hàng N. — Không sử dụng nén hàng nhưng sử dụng định dạng hàng tiêu chuẩn. Với DB2 10.1, bạn có thể xác định kiểu nén hàng nào được sử dụng trên các bảng của mình bằng cách kiểm tra cột ROWCOMPMODE trong khung nhìn danh mục hệ thống SYSCAT.TABLES. Các giá trị có thể có với cột này như sau: S.— Sử dụng nén hàng cổ điển. A. — Sử dụng nén hàng thích ứng. Blank. (Để trống) — Không cho phép nén hàng. Cột ROWCOMPMODE trong khung nhìn danh mục hệ thống SYSCAT.TABLES không tồn tại trong các phiên bản trước của DB2. Trong trường hợp này, tất cả các bảng đã cho phép nén hàng mặc nhiên sử dụng nén hàng cổ điển. Nếu bạn có DB2 10.1 cho Linux, UNIX và Windows đã cài đặt, có thể sử dụng truy vấn sau để nhận được các thiết lập nén cho tất cả các bảng người dùng đã được định nghĩa. Liệt kê 1. Nhận các thiết lập nén với một truy vấn SELECT SUBSTR(TABSCHEMA, 1, 10) AS TABSCHEMA, SUBSTR(TABNAME, 1, 10) AS TABNAME, COMPRESSION, ROWCOMPMODE FROM SYSCAT.TABLES WHERE TABSCHEMA NOT LIKE 'SYS%' Khi thực hiện truy vấn này, bạn sẽ thấy các kết quả trông giống như Liệt kê 2.
- Liệt kê 2. Các kết quả truy vấn hiển thị các thiết lập nén Sample results are as follows: TABSCHEMA TABNAME COMPRESSION ROWCOMPMODE ---------- ---------- ----------- ----------- DB2INST1 ACCTCR R S DB2INST1 BKPF R A DB2INST1 BSIS B A DB2INST1 CDCLS N DB2INST1 CDHDR V DB2INST1 COSP B S 6 record(s) selected. Trong ví dụ này, cho phép nén hàng tất cả các bảng ACCTCR, BKPF, BSIS và COSP. Các bảng ACCTCR và COSP sử dụng nén hàng cổ điển và các bảng BKPF và BSIS sử dụng nén hàng thích ứng. Các bảng BSIS và COSP cũng sử dụng định dạng hàng thay thế, trong khi các bảng ACCTCR và BKPF sử dụng định dạng hàng tiêu chuẩn. Bảng CDHDR sử dụng định dạng hàng thay thế mà không nén hàng còn bảng CDCLS sử dụng định dạng hàng tiêu chuẩn mà không nén hàng. Về đầu trang Xây dựng một từ điển nén Trước khi nén hàng cổ điển có thể có hiệu lực trong một bảng đã được cho phép nén, phải có một từ điển đã tồn tại cho bảng đó. Với DB2 9, bạn đã phải biết rõ liệu một từ điển nén đã tồn tại hay chưa và bạn đã phải khởi tạo một từ điển mức bảng nếu cần. Có thể xây dựng một từ điển nén mức bảng (và có thể nén dữ liệu hiện có trong một bảng) bằng cách thực hiện một hoạt động sắp xếp lại bảng (cổ điển) không nối mạng (offline). Một hoạt động như vậy được bắt đầu bằng cách thực hiện lệnh sắp xếp lại REORG có chỉ rõ tùy chọn KEEPDICTIONARY hoặc tùy chọn RESETDICTIONARY. Nếu lệnh REORG được thực hiện với một trong hai tùy chọn đã quy định và không tồn tại một từ điển nén, thì một từ điển mới sẽ được tạo ra. Mặt khác, nếu lệnh REORG được thực hiện với một trong hai tùy chọn đã quy định và một từ điển nén đã tồn tại, thì từ điển hiện có hoặc sẽ được tạo lại (RESETDICTIONARY) hoặc giữ nguyên như hiện có (KEEPDICTIONARY) và dữ liệu trong bảng đó sẽ được sắp xếp lại và được nén. Để tạo ra một từ điển nén mới cho một bảng có tên là EMPLOYEE đã được cho phép nén sâu, (cũng như sắp xếp lại và nén dữ liệu của bảng), bạn cần thực hiện lệnh sau: REORG TABLE employee RESETDICTIONARY
- Khi thực hiện lệnh này, dữ liệu được lưu trữ trong bảng EMPLOYEE sẽ được phân tích, một từ điển nén sẽ được xây dựng và được lưu trữ tại phần đầu của bảng đó và tất cả các dữ liệu hiện có sẽ được nén và được viết vào bảng đó ngay sau từ điển nén. Hình 4 cho thấy bảng EMPLOYEE sẽ trông như thế nào trước và sau khi áp dụng nén sâu. Hình 4. Cách thay đổi dữ liệu trong một bảng khi xây dựng một từ điển nén và áp dụng nén hàng cổ điển Điều quan trọng cần lưu ý là vì các bản ghi trong một bảng nén được di chuyển giữa thiết bị lưu trữ và bộ nhớ dưới dạng nén, nên các bản ghi dùng cho các bảng nén được viết vào các tệp bản ghi nhật ký giao dịch cũng được nén. (Từ điển nén được nạp vào bộ nhớ khi bảng này được truy cập sao cho việc nén và giải nén có thể xảy ra). Về đầu trang Tạo từ điển tự động (ADC)
- Như bạn có thể tưởng tượng, các tỷ lệ nén tối ưu đạt được khi một từ điển nén được xây dựng từ một tập hợp bao gồm tất cả dữ liệu. Do đó, khi xây dựng một từ điển nén bằng cách sắp xếp lại một bảng, một tỷ lệ nén cao đạt được là do mỗi hàng trong bảng đều được sử dụng. Tuy nhiên, việc thử nghiệm đã cho thấy rằng một tỷ lệ nén tốt cũng có thể đạt được khi chỉ phân tích một lượng nhỏ dữ liệu đại diện. (Trong một số trường hợp, việc đánh giá chưa đầy 1% tổng số các hàng sẵn có đã mang lại một tỷ lệ nén là 45%). Ý niệm này là cơ sở cho một tính năng nén đã được bổ sung trong DB2 9.5 được gọi là Tạo từ điển tự động (ADC - Automatic Dictionary Creation). Trong phiên bản 9.5 và mới hơn của DB2, nếu cho phép nén một bảng tại thời điểm nó được tạo ra, ADC sẽ làm cho một từ điển nén được xây dựng tự động sau khi một lượng dữ liệu vừa đủ đã được lưu trữ trong bảng. Ngưỡng ở đó ADC có tác dụng và bắt đầu xây dựng từ điển nén phụ thuộc vào kích cỡ hàng của bảng đó. Việc xây dựng từ điển thường bắt đầu khi 1-2 MB của các trang đã được cấp cho bảng đó. Tại thời điểm đó, ADC sẽ kiểm tra để xem có bao nhiêu dữ liệu người dùng được chứa trong bảng; nếu có mặt ít nhất 700 KB dữ liệu, một từ điển nén sẽ được xây dựng. (Lưu ý rằng các giá trị được thiết lập nội bộ và không thể thay đổi được). Các hoạt động có thể khởi động ADC gồm có chèn, nhập khẩu, tải và phân phối lại dữ liệu trên các phân vùng. Không giống như từ điển nén được xây dựng bằng một hoạt động REORG, từ điển được tạo ra theo cách của ADC được lưu trữ trong bảng ở phần cuối của dữ liệu hiện có. Các bản ghi đã có trước của bảng đó vẫn còn chưa được nén cho đến khi một hoạt động sắp xếp lại bảng không nối mạng được thực hiện hoặc cho đến khi các bản ghi này được cập nhật (trong trường hợp nào thì mỗi bản ghi đã thay đổi đều được nén khi các thay đổi được lưu). Các bản ghi mới được nén khi chúng được bổ sung. (Một mục tiêu của ADC là xây dựng một từ điển nén sẽ đem lại một tỉ lệ nén thích hợp mà không để lại một lượng lớn dữ liệu không nén trong bảng). Hình 5 cho thấy một bảng đã cho phép nén sẽ trông ra sao trước, trong và sau khi ADC xây dựng một từ điển nén.
- Hình 5. ADC hoạt động như thế nào Khi cho phép nén một bảng đã điền dữ liệu (bằng cách thiết lập thuộc tính COMPRESS là ON), một từ điển nén không được tự động tạo ra ngay. Thay vào đó, khi xảy ra một hoạt động phát triển bảng lần tới, ADC sẽ được khởi động và một số lượng nhỏ các bản ghi ở phần đầu của bảng sẽ được sử dụng để xây dựng một từ điển nén cho toàn bộ bảng. Sau khi tạo từ điển, dữ liệu được
- thêm vào bảng bằng các hoạt động chèn, nhập khẩu, tải và phân phối lại sau đó sẽ được nén; dữ liệu có trước đó sẽ vẫn chưa nén. Như bạn có thể thấy, việc tạo tự động một từ điển nén được điều khiển, một phần, bởi thuộc tính nén của bảng. Để ngăn cản hành vi này của ADC, đừng cho phép nén một bảng, cho đến khi bạn đã sẵn sàng xây dựng thủ công một từ điển nén và nén dữ liệu. Mặt khác, nếu bạn chọn tận dụng lợi thế của ADC, hãy nhớ rằng tỷ lệ nén với từ điển được tạo ra có thể không được tối ưu như một từ điển được tạo bằng cách sắp xếp lại bảng không nối mạng. Ngoài ra, vì bảng vẫn còn đang nối mạng trong khi xây dựng từ điển nén, nên giao dịch làm cho ADC khởi tạo sẽ phải chịu một tác động hơi tiêu cực một chút về hiệu năng khi vượt qua ngưỡng và ADC được khởi động. Điều quan trọng cần lưu ý là các từ điển được xây dựng bằng ADC có thể, theo thời gian, dẫn đến hạ thấp mức tiết kiệm vùng lưu trữ so với các từ điển được xây dựng khi sử dụng sắp xếp lại bảng cổ điển. Ngoài ra, theo thời gian, từ điển mức bảng cho một bảng có dữ liệu được cập nhật thường xuyên có thể không còn chứa các mẫu hiệu quả nhất để thay đổi dữ liệu nữa, dẫn đến một sự suy giảm tỷ lệ nén. Trong trường hợp này, có thể cần phải định kỳ sắp xếp lại bảng cổ điển để duy trì ổn định mức tiết kiệm vùng lưu trữ cao. Về đầu trang Xác định các bảng ứng cử viên để nén hàng Nếu bạn vẫn chưa sử dụng nén hàng, bạn có thể muốn kiểm tra cơ sở dữ liệu của mình để xác định các bảng nào có thể được hưởng lợi từ việc đã nén dữ liệu của chúng. Vì nén dữ liệu giúp bạn ban đầu tiết kiệm lưu trữ trên các bảng không nén hiện có và tối ưu hóa sự tăng trưởng lưu trữ trong tương lai, bạn có thể tìm thấy các điểm yếu lưu trữ của mình bằng cách kiểm tra các bảng hiện có đang chứa một số lượng dữ liệu đáng kể hoặc các bảng mà bạn dự kiến sẽ tăng trưởng mạnh theo thời gian. Đương nhiên, các bảng lớn nhất là ứng cử viên rõ ràng để nén, nhưng đừng bỏ sót các bảng nhỏ hơn. Nếu bạn có hàng trăm hoặc hàng ngàn bảng nhỏ, bạn có thể hưởng lợi từ hiệu ứng gộp chung của hoạt động nén. Tất nhiên, "lớn" và "nhỏ" là các thuật ngữ tương đối; thiết kế cơ sở dữ liệu của bạn sẽ xác định xem bảng có một triệu hoặc vài triệu hàng sẽ được coi là lớn hay nhỏ không. Truy vấn dưới đây sử dụng hàm quản trị ADMIN_GET_TAB_INFO() để trả về một danh sách theo thứ tự tất cả các tên bảng và các kích cỡ của đối tượng dữ liệu bảng cho một lược đồ cụ thể. Để hiển thị các thiết lập nén hiện tại và các chế độ nén hàng đang sử dụng, tập kết quả được tạo ra đã được nối với khung nhìn SYSCAT.TABLES và dữ liệu trong các cột COMPRESSION và ROWCOMPMODE đã được trả về. Liệt kê 3. Truy vấn để tìm kiếm các bảng ứng cử viên để nén SELECT SUBSTR(T.TABSCHEMA, 1, 10) AS TABSCHEMA, SUBSTR(T.TABNAME, 1, 10) AS TABNAME, SUM(TI.DATA_OBJECT_P_SIZE)/1024/1024 AS STORAGESIZE_GB,
- T.COMPRESSION AS COMPRESSION, T.ROWCOMPMODE AS ROWCOMPMODE FROM TABLE (SYSPROC.ADMIN_GET_TAB_INFO('DB2INST1', '')) TI JOIN SYSCAT.TABLES T ON T.TABSCHEMA = TI.TABSCHEMA AND T.TABNAME = TI.TABNAME GROUP BY T.TABSCHEMA, T.TABNAME, T.COMPRESSION, T.ROWCOMPMODE ORDER BY STORAGESIZE_GB DESC Truy vấn này xác định những bảng tiêu tốn vùng lưu trữ nhiều nhất trong cơ sở dữ liệu hiện tại của bạn và cung cấp cho bạn một danh sách các bảng ứng cử viên mà bạn nên bắt đầu làm việc với chúng. Trong nhiều kịch bản thực tế, phần lớn vùng lưu trữ của một cơ sở dữ liệu lại bị chiếm bởi khá ít bảng. Sau khi bạn xác định các bảng ứng cử viên dựa trên lượng tiêu dùng vùng lưu trữ của chúng, hãy xem xét các hoạt động SQL điển hình đối với dữ liệu trong các bảng đó: Các bảng chỉ đọc là ứng cử viên tuyệt vời để nén hàng. Các bảng có tỷ lệ đọc/viết là đọc 70% hoặc nhiều hơn và viết là 30% hoặc ít hơn là những ứng viên tốt để nén hàng. Các bảng chỉ trải qua một số ít lần cập nhật có khả năng là ứng cử viên tốt để nén hàng. Các bảng trải qua rất nhiều lần cập nhật có thể không phải là ứng cử viên tốt để nén hàng. Các bảng lớn được truy cập chủ yếu thông qua các lần quét bảng chứ không phải là quét chỉ mục là các ứng cử viên tốt để nén. Điều này thường bao gồm các bảng sự kiện lớn trong các kho dữ liệu, ở đây một số lượng đáng kể các truy vấn thực hiện phép gộp chung rất nhiều. Tiết kiệm vào/ra và sử dụng vùng bộ đệm tăng lên do áp dụng nén có thể cải thiện hiệu năng truy vấn cho các bảng như vậy. Việc sử dụng nén hàng cổ điển hay nén hàng thích ứng là tốt hơn ít phụ thuộc vào các mẫu truy cập dữ liệu hơn vào mức tiết kiệm nén thực tế mà bạn có thể đạt được bằng cách sử dụng kiểu nén nào. Bạn đưa ra quyết định cần chọn chế độ nén hàng nào sau trong quá trình này. Nén hàng chạy tốt nhất trong môi trường bị giới hạn vào/ra hoặc bộ nhớ, ở đây tải làm việc không phải là nghẽn cổ chai trên CPU. Cần phải dùng thêm chu kỳ CPU để thực hiện nén hàng và khai triển các hàng dữ liệu bất cứ khi nào chúng được truy cập hoặc bị thay đổi. Chi phí hoạt động này có thể được bù đắp bởi các hiệu quả đạt được khi ít thực hiện các hoạt động vào/ra hơn. Nén hàng chạy rất tốt với các tải làm việc hỗ trợ ra quyết định gồm các truy vấn phân tích phức tạp thực hiện các phép gộp chung rất lớn, ở đó việc truy cập hàng chủ yếu là tuần tự và ít ngẫu nhiên. Về đầu trang Đánh giá mức tiết kiệm lưu trữ do sử dụng nén hàng Sau khi bạn đã tạo ra một danh sách các bảng ứng viên để nén, dựa trên các đặc điểm tiêu dùng lưu trữ và truy cập dữ liệu, bước tiếp theo sẽ xác định mức tiết kiệm vùng lưu trữ mà bạn có thể hy vọng đạt được khi các bảng đó thực sự được nén. Bạn có thể đánh giá mức tiết kiệm vùng lưu trữ cho bất kỳ bảng nào trước khi bạn cho phép nén hàng cho nó. Hơn nữa, bạn có thể đánh giá
- mức tiết kiệm vùng lưu trữ ngay cả khi bạn chưa có giấy phép cho DB2 Storage Optimization Feature. Cũng như với chức năng nén nói chung, các cơ chế để đánh giá nén đã phát triển theo thời gian, với mục tiêu chính sẽ cung cấp các cách thực hiện nhiệm vụ này nhanh hơn và đơn giản hơn. Cơ chế lựa chọn phụ thuộc vào phiên bản phần mềm DB2 nào mà bạn đang sử dụng. Tất cả các công cụ và các hàm có sẵn trong bản phát hành cũ hơn cũng có sẵn trong DB2 10.1. Tuy nhiên, bạn có thể thấy rằng các bản sao đã cải tiến trong DB2 10.1 dễ sử dụng hơn hoặc đáp ứng nhanh hơn với dữ liệu mà bạn đang tìm kiếm. Đánh giá mức tiết kiệm nén hàng trong DB2 10.1 Trong DB2 10.1, cách ưa thích để đánh giá các tỷ lệ nén là dùng hàm quản trị ADMIN_GET_TAB_COMPRESS_INFO(). Bạn có thể sử dụng hàm này để đánh giá mức tiết kiệm nén cho một bảng cụ thể, đánh giá mức tiết kiệm nén cho tất cả các bảng trong một lược đồ cụ thể hoặc để đánh giá mức tiết kiệm nén cho tất cả các bảng trong cơ sở dữ liệu. Ngoài ra, hàm này tính toán mức tiết kiệm nén hiện tại, cùng với các dự báo mức tiết kiệm đối với nén hàng cổ điển và nén hàng thích ứng. Cú pháp với hàm bảng ADMIN_GET_TAB_COMPRESS_INFO() là ADMIN_GET_TAB_COMPRESS_INFO (TableSchema, TableName) ở đây: TableSchema (Lược đồ bảng) xác định lược đồ, nơi bảng cần lấy thông tin nén cho bảng lưu trữ, theo tên. (Nếu tham số này có một giá trị rỗng hoặc NULL, thì coi là tất cả các lược đồ). TableName (Tên bảng) xác định bảng, cần lấy thông tin nén cho nó, theo tên. (Nếu tham số này có một giá trị rỗng hoặc NULL, thì coi là tất cả các tên bảng). Nếu bạn không chỉ rõ một tên bảng, hàm này tính toán các đánh giá cho tất cả các bảng trong một lược đồ cụ thể; nếu bạn không chỉ rõ một tên bảng hoặc một lược đồ, nó sẽ tính toán các đánh giá cho tất cả các bảng trong cơ sở dữ liệu. (Nếu lược đồ hoặc cơ sở dữ liệu của bạn có chứa hàng trăm hoặc hàng ngàn bảng, thời gian xử lý có thể rất đáng kể; trong trường hợp này, hãy cố gắng hạn chế các truy vấn của bạn để chỉ tính toán các đánh giá cho những bảng nào mà bạn đang xem xét nén nó). Có thể xem cấu trúc của bảng do hàm ADMIN_GET_TAB_COMPRESS_INFO() trả về trong Bảng 1. Bảng 1. Bảng do hàm ADMIN_GET_TAB_COMPRESS_INFO() trả về Tên cột Kiểu dữ liệu Mô tả TABSCHEMA VARCHAR(128)Tên lược đồ TABNAME VARCHAR(128)Tên bảng DBPARTITIONNUM SMALLINT Số phân vùng cơ sở dữ liệu Kiểu đối tượng mà thông tin nén sẽ được OBJECT_TYPE VARCHAR(4) thông báo về nó, có thể là một trong những kiểu sau:
- 'XML' = Thông báo thông tin nén về dữ liệu XML 'DATA' = Thông báo thông tin nén về dữ liệu quan hệ Chế độ nén hàng hiện tại cho đối tượng này, có thể là một trong các chế độ sau: ROWCOMPMODE CHAR(1) 'S' = Cho phép nén hàng cổ điển 'A' = Cho phép nén hàng thích ứng Blank = Không cho phép nén hàng Tỷ lệ phần trăm hiện tại của các trang đã tiết PCTPAGESSAVED_CURRENT SMALLINT kiệm được do nén hàng AVGROWSIZE_CURRENT SMALLINT Độ dài bản ghi trung bình hiện tại Tỷ lệ phần trăm ước tính của các trang đã PCTPAGESSAVED_STATIC SMALLINT tiết kiệm được do nén hàng cổ điển Độ dài bản ghi trung bình ước tính của nén AVGROWSIZE_STATIC SMALLINT hàng cổ điển Tỷ lệ phần trăm ước tính của các trang đã PCTPAGESSAVED_ADAPTIVESMALLINT tiết kiệm được do nén hàng thích ứng Độ dài bản ghi trung bình ước tính của nén AVGROWSIZE_ADAPTIVE SMALLINT hàng thích ứng Như vậy, nếu bạn muốn nhận được một đánh giá là sẽ tiết kiệm được bao nhiêu vùng lưu trữ nếu dữ liệu trong mọi bảng trong một lược đồ tên là db2inst1 được nén, bạn có thể làm việc này bằng cách thực hiện một truy vấn trông giống như Liệt kê 4. Liệt kê 4. Truy vấn để đánh giá mức tiết kiệm lưu trữ SELECT SUBSTR(TABNAME,1,10) AS TABNAME, PCTPAGESSAVED_CURRENT, PCTPAGESSAVED_STATIC, PCTPAGESSAVED_ADAPTIVE FROM TABLE(SYSPROC.ADMIN_GET_TAB_COMPRESS_INFO('DB2INST1', '')) Khi sử dụng kết quả truy vấn này, bạn có thể dễ dàng xác định xem có nên cho phép nén hàng một bảng cụ thể không và bạn nên sử dụng chế độ nén hàng nào — ví dụ, nếu truy vấn trước đó đã trả về một tập kết quả trông giống như Liệt kê 5. Liệt kê 5. Các kết quả mẫu
- TABNAME PCTPAGESSAVED_CURRENT PCTPAGESSAVED_STATIC PCTPAGESSAVED_ADAPTIVE ---------- --------------------- -------------------- --------------------- - ACCTCR 0 68 72 BKPF 0 83 90 BSIS 0 82 90 CDCLS 0 11 17 CDHDR 0 70 73 COSP 0 87 91 6 record(s) selected. Trong sáu bảng đã tính toán các đánh giá nén cho chúng, năm bảng hiển thị tiềm năng nén rất tốt. Bảng CDCLS là bảng duy nhất có thể không được hưởng lợi từ nén. Và trong mọi trường hợp, có vẻ như nén hàng thích ứng sẽ mang lại kết quả tốt hơn so với nén hàng cổ điển. Tính toán hiệu số giữa các giá trị của cột PCTPAGESSAVED_STATIC và cột PCTPAGESSAVED_ADAPTIVE sẽ giúp bạn xác định sự lựa chọn tốt nhất cho chế độ nén hàng. Tuy nhiên, hãy hiểu rõ là sự thay đổi các giá trị của cột PCTPAGESSAVED_CURRENT không phải là tuyến tính. Ví dụ, hãy xem xét các bảng ACCTCR và COSP được hiển thị trong ví dụ trên. Với bảng ACCTCR, bạn có thể hy vọng mức tiết kiệm vùng lưu trữ là 68% với nén hàng cổ điển và mức tiết kiệm vùng lưu trữ là 72% với nén hàng thích ứng. Với bảng COSP, mức tiết kiệm đánh giá là 87% với nén hàng cổ điển và 91 % với nén hàng thích ứng. Mặc dù hiệu số tuyệt đối giữa hai kiểu là 4% đối với cả hai bảng, mức tiết kiệm tương đối mà nén hàng thích ứng có thể đạt được so với nén hàng cổ điển có khác nhau. Giả sử mỗi bảng có kích cỡ 100 GB khi chưa nén. Với bảng ACCTCR, kích cỡ đánh giá là 32 GB với nén hàng cổ điển và 28 GB với nén hàng thích ứng, tạo nên một hiệu số bằng khoảng 12,5%. Tuy nhiên, kích cỡ đánh giá cho bảng COSP là 13 GB với nén hàng cổ điển và 9 GB với nén hàng thích ứng, tạo nên một hiệu số xấp xỉ 30%. Trong ví dụ trước, bảng COSP là một ứng cử viên tốt để nén hàng thích ứng, nhưng bảng ACCTCR có thể không là một ứng cử viên tốt. Ngoài ra, các giá trị ước tính chỉ ra rằng nén thích ứng sẽ làm giảm kích cỡ lưu trữ cho bảng CDHDR đến mức chỉ thêm 10% nữa so với nén hàng cổ điển. Do đó, bạn có thể không muốn cho phép nén thích ứng cho các bảng CDHDR và ACCTCR trừ khi bạn hy vọng các đặc tính dữ liệu thay đổi đáng kể hoặc bạn mong đợi nhiều dữ liệu mới sẽ được chèn vào. Với các bảng còn lại, nén thích ứng có thể là sự lựa chọn tốt hơn vì mức tiết kiệm vùng lưu trữ tăng thêm đáng kể lên đến 45%. Đánh giá mức tiết kiệm nén hàng trong DB2 9.7 và 9.5
- Trong DB2 9.7 và 9.5, có sẵn các hàm quản trị rất giống với hàm ADMIN_GET_TAB_COMPRESS_INFO() kèm theo DB2 10.1, mặc dù chúng có tên và các chữ ký hơi khác nhau một chút. Trong DB2 9.7, hàm này được gọi là ADMIN_GET_TAB_COMPRESS_INFO_V97() và trong DB2 9.5, tên của nó là ADMIN_GET_TAB_COMPRESS_INFO(). Không giống như hàm của DB2 10.1 có hai tham số đầu vào, các hàm của DB2 9.5 và 9.7 có ba tham số. Tham số thứ ba là chế độ thực hiện và để đánh giá nén, bạn chuyển giao chuỗi ký tự 'ESTIMATE' làm giá trị cho tham số này. Cấu trúc của các bảng do các hàm của DB2 9.5 và 9.7 trả về cũng khác đáng kể so với cấu trúc của bảng do hàm của DB2 10.1 tạo ra; có thể thấy cấu trúc của bảng được các hàm của DB2 9.5 and 9.7 trả về trong Bảng 2. Bảng 2. Bảng do các hàm của DB2 9.5 and 9.7 trả về Tên cột Kiểu dữ liệu Mô tả TABSCHEMA VARCHAR(128)Tên lược đồ TABNAME VARCHAR(128)Tên bảng DBPARTITIONNUM SMALLINT Số phân vùng cơ sở dữ liệu DATA_PARTITION_ID INTEGER Số phân vùng dữ liệu Trạng thái của thuộc tính COMPRESS trên bảng, có thể là một trong các trạng thái sau: COMPRESS_ATTR CHAR(1) 'Y' = Nén hàng được thiết lập là YES (Có) 'N' = Nén hàng được thiết lập là NO (Không) Đường dẫn mã được lấy để xây dựng từ điển nén, có thể là một trong các đường dẫn sau: 'NOT BUILT' = không có sẵn từ điển nào 'INSPECT' = INSPECT ROWCOMPESTIMATE 'LOAD' = LOAD DICT_BUILDER VARCHAR(30) INSERT/REPLACE 'REDISTRIBUTE' = REDISTRIBUTE 'REORG' = REORG RESETDICTIONARY 'TABLE GROWTH' = INSERT, IMPORT (trong đó sử dụng INSERT) hoặc các cập nhật tăng thêm kích cỡ, làm cho DB2 đặt bản ghi cập nhật này trên một
- trang mới Ngày tháng và thời gian xây dựng từ điển DICT_BUILD_TIMESTAMP TIMESTAMP nén, nếu không có sẵn từ điển nào, dấu thời gian là NULL. COMPRESS_DICT_SIZE BIGINT Kích cỡ của từ điển nén, tính theo byte. Kích cỡ của từ điển mở rộng, tính theo EXPAND_DICT_SIZE BIGINT byte. Số các bản ghi góp phần vào việc xây ROWS_SAMPLED INTEGER dựng từ điển; các bảng được di trú với các từ điển nén sẽ trả về NULL trong cột này. Tỷ lệ phần trăm của các trang đã tiết kiệm được do nén. Thông tin này chỉ dựa trên PAGES_SAVED_PERCENT SMALLINT các dữ liệu bản ghi trong bộ đệm mẫu. Các bảng đã di trú với các từ điển nén sẽ trả về NULL trong cột này. Tỷ lệ phần trăm các byte đã tiết kiệm được do nén. Thông tin này chỉ dựa trên BYTES_SAVED_PERCENT SMALLINT các dữ liệu bản ghi trong bộ đệm mẫu. Các bảng đã di trú với các từ điển nén sẽ trả về NULL trong cột này. Độ dài bản ghi đã nén trung bình của các bản ghi góp phần vào việc xây dựng từ AVG_COMPRESS_REC_LENGTHSMALLINT điển. Các bảng đã di trú với các từ điển nén sẽ trả về NULL trong cột này. Hơn nữa, thời gian xử lý với các hàm quản trị có thể lâu hơn đáng kể so với thời gian xử lý với các hàm quản trị trong DB2 10.1 vì phải thực hiện quét toàn bộ bảng cho mỗi bảng để tính toán các đánh giá nén. Đánh giá mức tiết kiệm nén hàng trong DB2 9 DB2 9 là bản phát hành DB2 đầu tiên có hỗ trợ nén hàng, không cung cấp bất kỳ các hàm quản trị nào được giới thiệu trong các phiên bản sau này. Tuy nhiên, nếu bạn đang sử dụng phiên bản này, bạn vẫn có thể xác định được các bảng nào sẽ được hưởng lợi nhiều nhất từ nén hàng khi sử dụng tiện ích kiểm tra Inspect. Được gọi ra bằng cách thực hiện lệnh INSPECT có chỉ rõ tùy chọn ROWCOMPESTIMATE, tiện ích Inspect này sẽ kiểm tra từng hàng trong một bảng cụ thể, xây dựng một từ điển nén từ các dữ liệu đã tìm ra và sử dụng từ điển này để đánh giá sẽ tiết kiệm được bao nhiêu vùng lưu trữ khi nén dữ liệu trong bảng. Ví dụ, để đánh giá sẽ tiết kiệm được bao nhiêu vùng lưu trữ khi nén dữ liệu trong một bảng tên là EMPLOYEE, bạn cần thực hiện một lệnh INSPECT như sau: INSPECT ROWCOMPESTIMATE TABLE NAME employee RESULTS employee.rowcompestimate.out
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Thuật ngữ SEO cơ bản
3 p | 90 | 18
-
Cấu hình DPM trong VMWare
10 p | 107 | 16
-
Thuật toán tối ưu hóa truy vấn trên cơ sở dữ liệu quan hệ
6 p | 230 | 16
-
Tìm kiếm toàn văn bản XML trong DB2
42 p | 129 | 7
-
Giới thiệu Tính sẵn sàng cao và Kết nối trong suốt của IBM solidDB
26 p | 75 | 6
-
Tìm kiếm ảnh vân môi
4 p | 69 | 6
-
Thiết kế website kiến trúc, website về nội thất, xây dựng
4 p | 63 | 3
-
Một số phương pháp mã hoá đối xứng
6 p | 56 | 3
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn