Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
747,76 KB
Nội dung
NGÔN NGỮ TRUY VẤN DỮ LIỆU Giảng viên: ThS Trần Ngọc Thăng v1.0014106206 BÀI CHUYÊN ĐỀ NGHIÊN CỨU Giảng viên: ThS Trần Ngọc Thăng v1.0014106206 MỤC TIÊU BÀI HỌC • Trình bày chuyên đề nghiên cứu; • Thực thao tác hệ quản trị sở liệu SQL Server v1.0014106206 CẤU TRÚC NỘI DUNG 7.1 Đánh mục (Indexing) 7.2 Tìm kiếm tồn văn (Full – Text Search) 7.3 Ngôn ngữ CLR (Common Language Runtime) 7.4 Tối ưu hóa truy vấn 7.5 Xử lý lỗi ngoại lệ v1.0014106206 7.1 ĐÁNH CHỈ MỤC (INDEXING) • Đặc điểm Index Tập trỏ logic; Nút gốc Truy xuất liệu nhanh hơn; Tăng tốc độ kết nối hai bảng; Nút trung gian Tính cho dịng; Tự cập nhật mục sửa liệu • Cấu trúc mục Nút Cấu trúc nhị phân; Con trỏ • Các tùy chọn mục Chỉ mục clustered; Chỉ mục Non-clustered v1.0014106206 7.1 ĐÁNH CHỈ MỤC (INDEXING) (tiếp theo) • Chỉ mục clustered Là index mà thứ tự logic khoá tương tự thứ tự vật lý dòng bảng (thường ta tạo khố clustered index tạo cột đó) Tính trì cách rõ ràng cách sử dụng từ khoá UNIQUE ngầm cách sử dụng định danh nội Student table Clustered index v1.0014106206 Roll No Roll No Full Name Class 02 02 Vu Van Hung C0708L 03 03 Nguyen Thi Le T0709I 04 04 Ao Thu Trang C0708L 06 06 Tran Quyet Thang C0707G 7.1 ĐÁNH CHỈ MỤC (INDEXING) (tiếp theo) • Chỉ mục Non – clustered Là index mà thứ tự logic khố khơng giống thứ tự vật lý dịng bảng Một index kiểu non-clustered thơng thường chứa giá trị tham chiếu tới khối (block) liệu, khối liệu chứa dòng liệu (cụ thể) cho phần tử mục khởi tạo Đây kiểu điển hình để tạo mục cho cột liên kết cột khác Các giá trị thay đổi thường xuyên SQL server sử dụng mặc định tạo mục non-clustered Chúng ta tạo 249 non-clustered bảng v1.0014106206 7.1 ĐÁNH CHỈ MỤC (INDEXING) (tiếp theo) So sánh clustered & Non- clustered Cluster Index Non-cluster Index Dùng cho truy vấn mà kết trả nhiều Dùng cho truy vấn mà kết trả không nhiều Trên bảng có clustered index Trên bảng có nhiều nonclustered index Dữ liệu lưu trữ tập Dữ liệu không cần thiết phải lưu trữ xếp dựa trên tập xếp trường làm khóa clustered Lá node clustered index chứa trang liệu v1.0014106206 Các nốt non-clustered chứa trang liệu 7.1 ĐÁNH CHỈ MỤC (INDEXING) (tiếp theo) Nguyên tắc thiết kế mục • Chỉ mục tạo dựa loại liệu, số lượng liệu có, tần suất cập nhật tần suất truy xuất khởi tạo bảng • Một vài quy định nguyên tắc: Một mục có tối đa 16 cột Quá nhiều mục làm giảm hiệu suất câu lệnh INSERT, UPDATE DELETE Chỉ mục sử dụng để cải thiện hiệu suất truy vấn bảng địi hỏi cập nhật khối lượng liệu lớn Chỉ mục bảo toàn bảng nhỏ liệu thêm vào sau v1.0014106206 7.1 ĐÁNH CHỈ MỤC (INDEXING) (tiếp theo) • Tạo mục: Cú pháp: CREATE [CLUSTERED/ NONCLUSTERED] INDEX ON () Với: Index_name: Tên mục Table_name: Tên bảng Column_name: Tên cột Ví dụ: CREATE INDEX IX_Country ON Customer_Details (Country) CREATE CLUSTERED INDEX IX_State ON Customer_Details (State) v1.0014106206 10 7.3 NGƠN NGỮ CLR (tiếp theo) • Xây dựng UDF SP dựa CLR tích hợp vào SQL Server Bước 1: Tạo SQL server project Visual Studio Bước 2: Chọn tham chiếu tới sở liệu có sẵn tạo sở liệu có sẵn Bước 3: Kết nối tới sở liệu Bước 4: Trong sở liệu tham chiếu tới, thêm Stored Procedure, đặt tên cho procedure Bước 5: Trong C# tạo biến kết nối SQL với C#, sử dụng thư viện SQLconection Ví dụ: SELECT dbo DoXapxi(‘Tin đại cương”, Name, 0,8) As DoXapXi, Nam FROM tblCourses ORDER BY DoXapxi DESC v1.0014106206 18 7.4 TỐI ƯU HÓA TRUY VẤN • Tối ưu hóa truy vấn tiến hành lựa chọn kế hoạch thực thi câu truy vấn cách hiệu q • Mục đích tối ưu hóa truy vấn trongSQL: Tốn tài ngun nhất; Hồi đáp nhanh v1.0014106206 19 7.4 TỐI ƯU HĨA TRUY VẤN (tiếp theo) • Các yếu tố ảnh hưởng tới tốc độ câu truy vấn SQL: Khơng thiếu sử dụng lợi ích Indexes Không/thiếu tận dụng I/O striping Các thống kê lỗi thời thiếu thống kê hữu ích Thiếu nhớ vật lý Kết nối mạng chậm Các câu truy vấn Transact-SQL chuyển số lượng liệu lớn từ server đến client Locks or deadlocks bị cấm Thực câu truy vấn OLTP and OLAP máy server Trả liệu không cần thiết Các câu truy vấn viết nghèo nàn v1.0014106206 20 7.4 TỐI ƯU HĨA TRUY VẤN (tiếp theo) • Các quy tắc tối ưu hóa truy vấn Bảng (table) phải có khóa (Primary Key); Bảng (table) phải có 01 clustered index; Bảng (table) phải có số lượng non-clustered index phù hợp; Non-clustered index phải tạo cột (column) bảng (table) dựa vào nhu cầu truy vấn Dựa theo xếp thứ tự sau có index tạo: a) WHERE clause, b) JOIN clause, c) ORDER BY clause, d) SELECT clause Không nên dùng Views thay cho bảng (table) gốc v1.0014106206 21 7.4 TỐI ƯU HÓA TRUY VẤN (tiếp theo) • Các quy tắc tối ưu hóa truy vấn (tiếp) Triggers khơng nên sử dụng không cần thiết, nên nhập xử lý từ trigger vào thủ tục (stored procedure) Gỡ bỏ câu lệnh query trực tiếp thay thủ tục (stored procedure) Phải có 30% khơng gian đĩa cứng phân vùng chứa database Nếu chuyển UDF (user defined function) sang SP (stored procedure) Chỉ SELECT cột cần thiết, không nên SELECT * Gỡ bỏ joins từ bảng (tablecần thiết Hạn chế sử dụng trỏ (cursor) v1.0014106206 22 7.4 TỐI ƯU HÓA TRUY VẤN (tiếp theo) • Thay đổi cấu trúc câu truy vấn Khi dùng câu lệnh UNION, câu lệnh thực tương đương kết từ câu SELECT DISTINCT Nếu biết khơng có hàng trùng lặp tạo từ UNION nên sử dụng ALL UNION Để hạn chế số records truy xuất từ câu SELECT ta sử dụng tốn tử TOP, SQL Server cịn hỗ trợ lệnh SET ROWCOUNT lệnh khơng hiệu lệnh TOP Hạn chế sử dụng toán tử sau mệnh đề WHERE: "IS NULL", "", "!=", "!>", "!