Top Banner
1 1 HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO HocLapTrinhWeb.COM
24

BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

Jun 21, 2015

Download

Documents

Các tính năng tăng cường của ADO.NET trong .NET Framework 2.0
SQL Server Provider Statistics
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

11

HỌC LẬP TRÌNH WEB TỪ CƠ BẢN ĐẾN NÂNG CAO

HocLapTrinhWeb.COM

Page 2: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 3: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 4: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 5: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 6: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 7: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 8: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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)

Page 9: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 10: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 11: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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ộ

Page 12: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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>)

Page 13: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 14: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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)

Page 15: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 16: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 17: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 18: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 19: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 20: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 21: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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

Page 22: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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ê

Page 23: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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ê

….

Page 24: BÀI 10 : Nâng cao hiệu quả hoạt động cơ sở dữ liệu

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