Download pdf - Management Statistics

Transcript
Page 1: Management Statistics
Page 2: Management Statistics
Page 3: Management Statistics

1. Định nghĩa- Statistics (thống kê): được lập trên một cột của một bảng- Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao gồm đếm chúng)- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất

Header Density Vector Histogram

Page 4: Management Statistics

Tên Statistics TGian Update Số dòng trong bảng Số dòng được thống kê Số giá trị

1. Định nghĩa- Statistics (thống kê): được lập trên một cột của một bảng- Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao gồm đếm chúng)- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất

Page 5: Management Statistics

Tần số lặp lại của mỗi giá trị

Cột lập thống kê

1. Định nghĩa- Statistics (thống kê): được lập trên một cột của một bảng- Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao gồm đếm chúng)- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất

Page 6: Management Statistics

Giá trị khóa Số dòng nằm trong khoảng giá trị Số dòng cùng giá trị Số giá trị

1. Định nghĩa- Statistics (thống kê): được lập trên một cột của một bảng- Quá trình sắp xếp (tăng hoặc giảm), gom nhóm các ô có cùng giá trị (bao gồm đếm chúng)- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu nhất

Page 7: Management Statistics

1. Tạo Statistic (Statistics được tạo ra khi nào ???)* Một Statistic được tạo đồng thời khi Index được khởi tạo

* Câu truy vấn tự phát sinh Statistic

* Tạo thủ công bằng Transct-SQL

- Tùy chọn Auto Create Statistics của Database là true- Khi Statistic không đủ thông tin đáp ứng quá trình truy vấn

CREATE STATISTICS STATS_SINHVIEN_MALOPQLON SINHVIEN(MaLopQL)

CREATE STATISTICS [Tên Statistic]ON [Tên bảng](Tên cột)

Demo

Demo

Demo

Page 8: Management Statistics

* Tạo Statistics

* Cập nhật Statistics

CREATE STATISTICS STA_SV_TENSVON SINHVIEN(TenSV)

* Xem thông tin StatisticsDBCC SHOW_STATISTICS (SINHVIEN,STA_SV_TENSV)

* Xóa StatisticsDROP STATISTICS SINHVIEN.STA_SV_TENSV

UPDATE STATISTICS SINHVIEN- Khi nào Statistics được cập nhật (làm rõ ở phần sau)

1. Tạo, xóa, cập nhật Statistics

* Liệt kê các StatisticsEXEC sp_helpstats SINHVIEN, 'ALL'

Page 9: Management Statistics

- Index là một cấu trúc dữ liệu được lưu trữ trên ổ cứng tương đương với table- Index chứa các key được xây dựng từ một hay nhiều cột trong bảng được lưu thành câu trúc dạng B-Tree cho phép việc tìm kiếm một hay tập hợp các khóa nhanh chóng

1. Clustered Index* Clustered Index

- Clustered Index sắp xếp và lưu trữ dữ liệu ở tầng vật lý (ngay trên bảng)- Clustered Index được tạo mặc định cho cột khóa chính trong bảng

CLUSTERED INDEX PK_SINHVIENON SINHVIEN(MaSV)

* Non-Clustered IndexDemo CREATE CLUSTERED INDEX [IndexName]

ON [TableName]([ColumnName])

Page 10: Management Statistics

1. Non-Clustered Index* Non-Clustered Index

- Non-Clustered Index được lưu tách biệt với dữ liệu thật trong bảng- Mỗi chỉ mục có con trỏ, trỏ đến dữ liệu thật trong bảng

CREATE NONCLUSTERED INDEX [IndexName]ON [TableName](ColumnName)

SV00004 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00006 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00008 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00007 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00009 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00002 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00010 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00001 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00005 con trỏ tới dòng dữ liệu tương ứng trong bảng

SV00003 con trỏ tới dòng dữ liệu tương ứng trong bảng

Demo

Page 11: Management Statistics

DatabaseName: CreditTable: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Truy vấn

SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWHERE m.FirstName LIKE 'Kim%'

+ Lần 1:

SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWHERE m.FirstName LIKE 'Ki%'

SELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWHERE m.FirstName LIKE 'K%'

+ Lần 2:

+ Lần 3:

? Statistics được sử dùng như thế nào ?

Page 12: Management Statistics

DatabaseName: CreditTable: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Tạo IndexCREATE INDEX Member_LNameON member(Lastname, FirstName, MiddleInitial)

* Truy vấnSELECT m.LastName, m.FirstName, m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWHERE m.FirstName LIKE 'Kim%'

+ Câu truy vấn phát sinh Statistics

StatisticsName: _WA_Sys_00000003_0CBAE877

+ Thực thi truy vấn

Nonclustered Index Scan trên Index Member_LName

Không có Statistics Có Statistic trên FirstName

+ Thực thi truy vấn

Clustered Index Scan trên Index member_ident

*member_ident: Clustered Index mặc định của Primary Key

Theo thống kê có 1.96078 dòng trả về(Estimated Number of Rows)

Logical reads: 144

Logical reads: 46

Demo

Page 13: Management Statistics

DatabaseName: CreditTable: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Truy vấnSELECT m.LastName, m.FirstName,m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWHERE m.FirstName LIKE 'Ki%'

SELECT m.LastName, m.FirstName,m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWITH(INDEX(member_ident))WHERE m.FirstName LIKE 'Ki%'+ Thực thi truy vấn

Clustered Index Scan trên Index member_ident

+ Thực thi truy vấn

Nonclustered Index Scan trên Index Member_LName

Logical reads: 82 Logical reads: 144

Estimated Number of Rows : 19.6078 dòngEstimated Number of Rows : 19.6078 dòng

Chi phí thực hiện truy vấn

Thấp Cao

Demo

Page 14: Management Statistics

DatabaseName: CreditTable: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Truy vấnSELECT m.LastName, m.FirstName,m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWHERE m.FirstName LIKE 'K%'

SELECT m.LastName, m.FirstName,m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWITH(INDEX(Member_LName))WHERE m.FirstName LIKE 'K%'+ Thực thi truy vấn

Nonclustered Index Scan trên Index Member_LName

+ Thực thi truy vấn

Clustered Index Scan trên Index member_ident

Logical reads: 144 Logical reads: 935

Estimated Number of Rows : 431,373 dòngEstimated Number of Rows : 431,373 dòng

Chi phí thực hiện truy vấn

Thấp Cao

Demo

Page 15: Management Statistics

DatabaseName: CreditTable: member(member_no,lastname,firstname,middleinitial,city,phone_no)

? Khi nào Statistics được cập nhật ?* Update dữ liệuUPDATE memberSET firstname = 'Kimberly'WHERE member_no >= 1 AND member_no <= 1000

* Truy vấnSELECT m.LastName, m.FirstName,m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWITH (INDEX (member_ident))WHERE m.FirstName LIKE 'Kim%'

SELECT m.LastName, m.FirstName,m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWHERE m.FirstName LIKE 'Kim%'

Update 1.000 dòng = 10% tổng số dòng Tổng số dòng: 10.000

+ Thực thi truy vấn

Nonclustered Index Scan trên Index Member_LName

+ Thực thi truy vấn

Clustered Index Scan trên Index member_ident

Logical reads: 144 Logical reads: 2072

Estimated Number of Rows : 1.96078 dòng

Actual Number of Rows: 1001

Demo

Page 16: Management Statistics

UPDATE memberSET firstname = 'Kimberly'WHERE member_no > 1000 AND member_no <= 2500

DatabaseName: CreditTable: member(member_no,lastname,firstname,middleinitial,city,phone_no)

* Update dữ liệuSố dòng Updaet1.500 dòng = 15% tổng số dòng

Số dòng Update:1000 + 1500 = 2500 dòng> 20% tổng số dòng

* Truy vấnSELECT m.LastName, m.FirstName,m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWITH (INDEX (member_ident))WHERE m.FirstName LIKE 'Kim%'

SELECT m.LastName, m.FirstName,m.MiddleInitial, m.Phone_no, m.CityFROM dbo.Member AS mWHERE m.FirstName LIKE 'Kim%'

+ Thực thi truy vấn

Clustered Index Scan trên Index member_ident

+ Thực thi truy vấn

Clustered Index Scan trên Index member_ident

Logical reads: 144 Logical reads: 144

Estimated Number of Rows : 2509,8 dòng

Actual Number of Rows: 2501

Demo

Page 17: Management Statistics

- Statistics giúp SQL lựa chọn phương án thực hiện truy vấn tối ưu- Tùy chọn Auto Create Statistics cho db là true- Không nhất thiết tạo Index cho thuộc tính không thường xuyên truy vấn - Cần có kế hoạch truy vấn rõ ràng để quản lý Statistics- Update Statistics bằng Transact-SQL để đảm bảo truy vấn luôn tối ưu

Page 19: Management Statistics
Page 20: Management Statistics

CREATE CLUSTERED INDEX

Page 21: Management Statistics

CREATE NONCLUSTERED INDEX

Page 22: Management Statistics

STATISTICS TẠO ĐỒNG THỜI VỚI INDEX

Page 23: Management Statistics

CÂU TRUY VẤN PHÁT SINH STATISTICS

Page 24: Management Statistics

TẠO STATISTICS BẰNG TRANSCT-SQL

Page 25: Management Statistics
Page 26: Management Statistics

Recommended