Bài 10 Nâng cao hiệu quả hoạt động cơ sở dữ liệu - Công nghệ ADO.NET với C#


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ợ


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

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

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

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

Thi hành đồng bộ (Syschronous Execution)

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

Thi hành không đồng đồng bộ (Asyschronous Execution)

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ộ
  • Khai báo: bổ sung vào chuỗi ConnectionString thuộc tính async= true
IAsyncResult <biến IAs> = <Command>.BeginExecuteReader()
…
SqlDataReader <biến> = <Command>.EndExecuteReader(<biến IAs>)

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

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

2. SQL Server Provider Statistics

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ê
<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ê
….

Chia sẽ bài viết :


Bài viết liên quan

Machine Learning là gì

Ai là người quan tâm Machine Learning. Business Leaders: muốn giải pháp cho các vấn đề kinh doanh. Software Developers: muốn tạo ra các ứng dụng tốt h ...

Apache Spark là gì

Apache Spark in-memory clusters đang là tiêu điểm chú ý của nhiều doanh nghiệp trong việc ứng dụng công nghệ vào phân tích và xử lý dữ liệu nhanh chón ...