Tải bản đầy đủ (.ppt) (24 trang)

công nghệ ado.net cới c# - nâng cao hiệu quả hoạt động cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (221.58 KB, 24 trang )

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 MARS
Minh 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 Operations
Asynchronous 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 Updates
Batch 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 Copies
Minh 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

….
2424
HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO
HocLapTrinhWeb.COM
Minh họa truy xuất Statistics
Minh 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

×