Tags

,

TẠO COLUMNSTORE INDEX TRONG SQL SERVER 2012

Microsoft SQL Server 2012 giới thiệu 1 loại index mới, có tên là Columnstore. Loại index mới này cung cấp khả năng tối ưu tốc độ xử lý truy vấn cho các câu lệnh truy vấn cũng như những data-warehousing workload. Trong nhiều trường hợp, tốc độ truy vấn vào kho dữ liệu tăng nhanh từ hàng chục đến hàng trăm lần.

Xét về mặt cấu trúc dữ liệu, trước đây, dữ liệu trong SQL Server được lưu trữ trong table dưới dạng heap (đống) hay index (chỉ mục). Trong cả 2 cách lưu trữ này, SQL Server lưu trữ dữ liệu trong các page (trang) theo dạng row-based, tức là tất cả các giá trị trong 1 dòng dữ liệu (trên nhiều cột) đều được lưu trữ trong 1 page. Các lưu trữ này thông thường gọi là row-store.

Đối với Columnstore Index trong SQL Server 2012, tất cả các giá trị trên 1 column sẽ được lưu trữ tuần tự trong 1 tập các page. Cách lưu trữ mới này gọi là column-store và có thể ví như chúng ta làm 1 hành động xoay cách lưu trữ truyền thống row-store 1 góc 90 độ.

Để hiểu rõ hơn, ta có thể hình dung cách lưu trữ này thông qua 1 ví dụ nhỏ về bảng Employee như sau

Nếu lưu dữ liệu theo dạng row-store:

Nếu sử dụng columnstore:

1. Nên sử dụng ColumnStore Index trong các trường hợp

  • Khi Table chủ yếu là để đọc (ít khi thay đổi cập nhật)
  • Cho phép sử dụng partition (hoặc khả năng định kì drop-rebuild index) để xử lý dữ liệu mới.
  • Khi hầu hết các lệnh truy vấn có sử dụng kiểu nối sao (star join) hoặc xử lý 1 lượng lớn dữ liệu tổ hợp.
  • Thông thường sử dụng cho các table có lượng dữ liệu lớn (fact table hoặc dimension table)

2. Không nên tạo và sử dụng ColumnStore Index trong các trường hợp

  • Dữ liệu trong table thường xuyên thay đổi.
  • Chỉ có các truy vấn đơn giản đến dữ liệu trong table.

3. Tạo Columnstore index

Các bước tạo columnstore index, cũng tương tự như các SQL Index khác, có thể thực hiện bằng giao diện trong SSMS hoặc sử dụng T-SQL. Các bước sau đây minh họa việc tạo columnstore index sử dụng SQL Server Management Studio (SSMS):

  • Connect đến Instance, trong Object Explorer, expand đến table cần tạo columnstore index.
  • Click vào folder Index, chọn New Index và click Add
  • Trong hộp thoại Select Columns, chọn các column sẽ tham gia trong columnstore index. Click OK.
  • Nếu cần thiêt, cấu hình thêm các thiết lập khác ở mục Options, Storage và Extend Properties.

Enjoy!!!
Nhat Phan