Upload
hoc-lap-trinh-web
View
732
Download
7
Embed Size (px)
DESCRIPTION
Các tính năng tăng cường của ADO.NET trong .NET Framework 2.0 SQL Server Provider Statistics
Citation preview
11
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
22
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Nâng cao hiệu quả hoạt động cơ sở dữ liệu
1. Các tính năng tăng cường của ADO.NET trong .NET Framework 2.0
2. SQL Server Provider Statistics
33
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
1. Các tính năng tăng cường của ADO.NET trong .NET Framework 2.0
•Multiple Active Result Sets (MARS)
•Asynchronous Operations
•Batch DataSet Updates
•Bulk Data Copies
44
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Multiple Active Result Sets (MARS)
•MARS cho phép sử dụng một connection để tạo ra nhiều tập kết quả cùng một lúc
•Sử dụng cùng một connection để thực hiện nhiều command xen kẽ
• MARS được phép sử dụng trên các connection đến các CSDL có hổ trợ MARS như Microsoft SQL Server 2005
55
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Multiple Active Result Sets (MARS)
•Khai báo
Bổ sung vào chuỗi ConnectionString thuộc tính MultipleActiveResultSets = true
•Áp dụng
MARS thường được sử dụng với đối tượng SqlCommand và SqlDataReader
66
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa MARSMinh họa MARS
•Khai báo 2 chuỗi ConnectionString: chuỗi 1 có MARS, chuỗi 2 không có MARS
•Tạo 2 command:
Command 1: có câu lệnh Select từ table Contact – Cha
Command 2: có câu lệnh Select từ table Employee – Con
•Sử dụng Connection 1 và thi hành 2 command, sau đó đổi Connection 2 nhận xét
77
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Multiple Active Result Sets (MARS)
•Một số lưu ý khi sử dụng MARS
MARS chỉ được hổ trợ từ .NET 2.0 trở lên và SQL Server 2005 trở lên
Các hoạt động của MARS là đồng bộ (synchronous)
Các connection có MARS sẽ tạo ra các logical Sessions làm tốn thêm chi phí phải cân nhắc có dùng hay không
Các hoạt động có MARS là Thread không an toàn
88
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Bài thực hành
•Sử dụng 1 connection, tạo 2 DataReader có nguồn từ 2 table Production.Product và Production.ProductDocument
•Xuất dữ liệu từ 2 DataReader trên ra màn hình (điều khiển tùy chọn)
99
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Asynchronous Operations
•So sánh họat động đồng bộ và không đồng
Thi hành đồng bộ (Syschronous Execution): mỗi lệnh phải hoàn tất trước khi lệnh kế tiếp bắt đầu thi hành
1010
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Asynchronous Operations
•So sánh họat động đồng bộ và không đồng
Thi hành không đồng đồng bộ (Asyschronous Execution): ứng dụng vẫn tiếp tục thi hành các lệnh trong khi chờ kết quả xử lý của dòng lệnh trước
1111
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Asynchronous Operations
•Tổng quan về thi hành không đồng bộ
ADO.NET 2.0 có các phương thức BeginXXX and EndXXX để khởi tạo hoạt động không đồng bộ và nhận kết quả rồi xóa sạch các tài nguyên đang hổ trợ nó
Sử dụng giao tiếp IAsyncResult để giám sát hoạt động không đồng bộ
1212
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Asynchronous Operations
•Tổng quan về thi hành không đồng bộ
Khai báo: bổ sung vào chuỗi ConnectionString thuộc tính async= true
Sử dụng:
IAsyncResult <biến IAs> = <Command>.BeginExecuteReader()
…
SqlDataReader <biến> = <Command>.EndExecuteReader(<biến IAs>)
1313
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa Minh họa Asynchronous OperationsAsynchronous Operations
•Tạo 2 Connection từ 2 CSDL riêng biệt
•Tạo Command 1 trên Connection 1 và thi hành
•Tạo Command 2 trên Connection 2 và thi hành
•Thi hành kết thúc 2 command trên
•Tính thời gian thi hành và xuất ra màn hình
1414
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Batch DataSet Updates
•Cải tiến thao tác truy cập dữ liệu bằng cách giảm sự xoay vòng dữ liệu trong quá trình cập nhật
•Sử dụng thuộc tính UpdateBatchSize của đối tượng DataAdapter để xác định số lệnh có thể thi hành trong một lô (batch)
1515
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Batch DataSet Updates
•Các giá trị của UpdateBatchSize:
= 1: mặc định (không áp dụng Batch Update)
= 0: số dòng tối đa được cập nhật trong một batch mà khả năng của server cho phép
= x : x là số dòng do người lập trình khai báo
1616
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa Minh họa Batch Dataset UpdatesBatch Dataset Updates
•Tạo Connection, DataAdapter và Dataset
•Khai báo 2 biến chuỗi để lưu trữ giá trị số lần cập nhật và số dòng được cập nhật
•Phát sinh 2 sự kiện RowUpdated và RowUpdating của DataAdapter để tính toán 2 biến chuỗi
•Tạo Command có câu lệnh rút trích khoảng 11 dòng
•Tạo bộ lệnh cập nhật cho DataAdapter
•Cập nhật 1 field nào đó có giá trị bằng chính nó cộng thêm chuỗi “abc”, tất cả các dòng trong Table
•Khai báo số lần dòng trong 1 lần cập nhật là 3, thực hiện cập nhật
•Xuất ra màn hình giá trị 2 biến chuỗi
1717
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Bài thực hành
•Cập nhật filed Name trong bảng Production.Product (lấy giá trị của chính field này + “- Edit” )
•Xuất ra số lần cập nhật
1818
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Bulk Data Copies
•Bulk Copy cho phép bạn thực hiện các hoạt động sao chép cho một số lượng lớn dữ liệu giữa một nguồn dữ liệu lưu trữ và một bảng của nguồn đích
•Sử dụng lớp SqlBulkCopy để thực hiện kỹ thuật này
1919
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Bulk Data Copies
•Khai báo và sử dụng
//mở 2 connection trên 2 CSDL khác nhau
….
//tạo <DataReader> từ <Connection 1>
…
SqlBulkCopy <biến bcp> = new SqlBulkCopy(<Connection2>)
<biến bcp>.DestinationTableName = “Tên Table đích”;
<biến bcp>.WriteToServer(<DataReader>); //Thực hiện copy
2020
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa Bulk Data CopiesMinh họa Bulk Data Copies
•Tạo 2 Connection trên 2 CSDL khác nhau
•Tạo Command 1 trên connection 1 có câu lệnh rút trích table HumanResources.Employee
•Mở 2 connection
•Tạo DataReader từ command 1
•Thực hiện Bulk Copy
2121
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
2. SQL Server Provider Statistics
•Truy xuất các Statistic trên kết nối SQL Server
2222
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Truy xuất các Statistic trên kết nối SQL Server
•Bật thuộc tính StatisticsEnabled của đối tượng Connection
•Sử dụng phương thức RetrieveStatistics của đối tượng Connection để lưu trữ bộ dữ liệu thống kê
2323
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Truy xuất các Statistic trên kết nối SQL Server
•Khai báo và sử dụng
<connection>.StatisticsEnabled = true;
… // mở connection và thi hành Comand hoặc tạo DataReader
IDictionary <biến IDc> = <connection>.RetrieveStatistics();
… //duyệt <biến IDc> và xuất ra màn hình để xem các số liệu thống kê
….
2424
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa truy xuất StatisticsMinh họa truy xuất Statistics
•Tạo Connection có thuộc tính StatisticsEnabled=true
•Sử dụng Command để tạo nguồn dữ liệu cho DataTable
•Xuất dữ liệu của DataTable ra DataGridview 1
•Tạo mảng kiểu Idictionary để lưu số thống kê
•Xuất mảng này ra DataGriview 2