Điều chỉnh hiệu suất Entity Framework Core DB (dành cho SQL Server)
Khi triển khai lập trình cơ sở dữ liệu với .NET Entity Framework Core, bạn có thể hiểu các vấn đề về hiệu suất truy vấn và DB cũng như tìm hiểu cách cải thiện chúng để đạt được hiệu suất tốt hơn và lập trình EF Core ổn định hơn.
Tìm hiểu các vấn đề về hiệu suất và giải pháp cho các truy vấn được tạo tự động của EF Core
Tìm hiểu các tính năng cần thiết của EF Core và SQL Server để cải thiện hiệu suất DB
Điều chỉnh hiệu suất dựa trên .NET EF/EF Core, Ổn định hơn và mạnh mẽ hơn!
Phát triển .NET mạnh mẽ hơn, Chìa khóa nằm ở câu hỏi!
“Không phải tất cả các truy vấn do EF Core tạo ra đều có dạng đúng.”
Trong nhiều trường hợp, các truy vấn được tạo hoặc xử lý tự động bởi các ứng dụng sử dụng .NET EF hoặc EF Core (hoặc các môi trường ORM tương tự) không phù hợp với SQL Server, ảnh hưởng đến hiệu suất cơ sở dữ liệu hoặc truy vấn . Điều này đặc biệt đúng đối với việc thay đổi dữ liệu và xử lý giao dịch. Hơn nữa, các quản trị viên cơ sở dữ liệu thường phàn nàn về khó khăn trong việc quản lý các truy vấn, chẳng hạn như theo dõi và sửa đổi truy vấn.
Cách điều chỉnh hiệu suất lập trình DB dựa trên .NET Entity Framework Core
Trong bài giảng này, chúng ta sẽ tìm hiểu các vấn đề hiệu suất hiện tại và chia sẻ các giải pháp để triển khai EF Core, một công cụ lập trình tuyệt vời dành cho các nhà phát triển .NET, với hiệu suất truy vấn tốt hơn và phương pháp xử lý ổn định hơn. Chúng tôi cũng sẽ giới thiệu các tính năng cải tiến của phiên bản mới nhất (V7).
Gửi đến những người này Tôi khuyên bạn nên làm vậy.
Nhà phát triển .NET
Nhà phát triển EF Core hoặc người dùng
EF hoặc EF Core Hoạt động trong môi trường quản trị viên hệ thống
Hiệu suất DB của EF Core Người dùng quan tâm
💬 “Tôi mới bắt đầu học lập trình .NET và đây là lần đầu tiên tôi học EF Core. Tôi có thể học khóa học này không?”
Nếu bạn đã có kinh nghiệm với .NET và EF Core, bạn sẽ thấy nội dung dễ hiểu hơn. Tuy nhiên, đối với những người mới làm quen với EF Core, chúng tôi cũng đã bao gồm một số tài liệu học tập hữu ích . Bạn nên xem lại các tài liệu học tập này trước để hiểu sâu hơn. Hơn nữa, dự án ví dụ là một ứng dụng console, giúp việc truy cập tương đối dễ dàng.
💬 “Liệu có sự khác biệt tùy theo phiên bản EF Core không?”
Tài liệu và bản demo bao gồm từ EF5 đến EF7 gần đây , giới thiệu những cải tiến và khác biệt giữa các phiên bản mới, giúp bạn dễ dàng sử dụng. Đối với các tính năng chính, chúng tôi đã bao gồm các phiên bản giới thiệu để giúp bạn đưa ra quyết định sáng suốt.
Một bản thân đã phát triển thêm một bước nữa Bạn có thể gặp.
Bạn có thể lập trình EF Core để tạo ra các truy vấn phù hợp và hiệu quả hơn .
EF Core có thể triển khai Chèn/Cập nhật/Xóa, giao dịch và khóađáng tin cậy hơn.
Bạn có thể thảo luận các truy vấn có thể gây ra vấn đề về hiệu suất với người quản lý DB, các phòng ban liên quan và các chuyên viên để ngăn ngừa sự cố .
Theo dõi truy vấn SQL Server
Thiết lập các hoạt động và xử lý riêng biệt
💡 Biết cách giải quyết các vấn đề về hiệu suất truy vấn cần thiết cho quá trình phát triển thực tế
Tùy thuộc vào cách triển khai .NET EF Core hoặc dạng biểu thức Lambda/LINQ , loại truy vấn được tạo tự động sẽ khác nhau,ảnh hưởng đến hiệu suất truy vấn và hiệu suất cơ sở dữ liệu . Trong khóa đào tạo này, bạn có thể xem xét nội dung của các truy vấn được tạo tự động theo cách triển khai EF Core, các vấn đề về hiệu suất và tìm hiểu các phương pháp giải quyết chúng. Bạn cũng sẽ hiểu các vấn đề quan trọng phát sinh trong thực tế do các thao tác sửa đổi dữ liệu (DML) hoặc các vấn đề xử lý giao dịch.
Đặc biệt, chuyên gia chia sẻ kiến thức là người đã có thời gian dài tư vấn và giảng dạy SQL Server, sử dụng các tình huống thường gặp trong thực tế làm ví dụ cho từng chủ đề, do đó được tổ chức để có thể áp dụng trực tiếp vào thực tế.
Chương trình giảng dạy chi tiết ✅
1) Giới thiệu khóa học
Giới thiệu
Tài liệu học tập trước cho người mới bắt đầu
Giới thiệu khóa học
Giới thiệu SalesSimple DB cho bản demo
Giới thiệu Dự án Demo Visual Studio
Bản demo cấu hình Visual Studio và biểu thức LINQ (Dành cho người mới bắt đầu)
Các yếu tố chính của việc điều chỉnh hiệu suất DB
2) Cân nhắc về hiệu suất Code-First
Điều chỉnh thuộc tính cơ sở dữ liệu
Định dạng và độ dài dữ liệu
Chỉ định một khóa tổng hợp hoặc chỉ mục
Tạo chỉ mục khi chỉ định khóa ngoại (tham chiếu)
3) Ghi nhật ký truy vấn và giám sát hiệu suất
Công cụ theo dõi và phân tích hiệu suất truy vấn
Ghi nhật ký đơn giản
Theo dõi truy vấn SQL Server
Bộ đếm Dotnet
BenchmarkDotNet
Tổng quan về Quy trình Truy cập Dữ liệu - Mục Tiêu thụ Thời gian Phản hồi Truy vấn (T)
4) Kết nối DB
Chuỗi kết nối Các mục quan trọng
Trình xây dựng tùy chọn DbContext
DbContextPool
Hiểu về các điểm mở và đóng kết nối DB
Kết nối nhiều Active ResultSets (MARS)
5) Truy xuất dữ liệu - Phần 1
giới thiệu
Xử lý đồng bộ so với xử lý không đồng bộ
Truy vấn ad hoc so với truy vấn tham số
ToQueryString()
Các truy vấn không theo dõi
CHỌN chỉ các cột cần thiết (Chiếu)
Điểm chuẩn - Hiệu suất theo phương pháp truy xuất dữ liệu
IQueryable so với IEnumerable
Where(), Find(), First() so với FirstOrDefault(), SingleOrDefault()
Các vấn đề về FirstOrDefault()/SingleOrDefault() và Subquery
Ví dụ triển khai SingleOrDefault() và SQL LIKE
Sử dụng EF.Functions, Điều kiện SQL IN và Hàm STRING_AGG()
6) Truy xuất dữ liệu - Phần 2
NỐI CHÉO/BÊN TRONG/BÊN NGOÀI
ÁP DỤNG triển khai
.Include(), .ThenInclude(), Truy vấn phân tách và Bộ đệm nội bộ EF
Tải chậm so với Tải nhanh và Tránh các truy vấn trùng lặp không cần thiết
Các phép toán tập hợp (giao/hợp/hiệu) và xử lý riêng biệt
7) Truy xuất dữ liệu - Phần 3
Điều kiện tiên quyết để sử dụng chỉ số SARG
Hiểu về các loại không phải SARG
8) Các truy vấn nâng cao và nhiều hơn nữa
Truy vấn phân trang
Truy vấn điều kiện tìm kiếm động (hay còn gọi là tra cứu chung)
Biên dịch truy vấn
Dừng truy vấn không đồng bộ
Chú thích các truy vấn với .Tag()
9) Sử dụng trực tiếp SQL
Phân loại các hàm hỗ trợ sử dụng trực tiếp SQL
Truy vấn Adhoc hoặc Tham số hóa
Gọi các hàm có giá trị bảng (TVF)
Gọi truy vấn kiểu vô hướng (không phải thực thể)
Gọi thủ tục lưu trữ dựa trên thực thể
Gọi một thủ tục được lưu trữ để truy vấn
Gọi một thủ tục được lưu trữ trả về nhiều tập kết quả
10) Các thao tác DML (CHÈN/CẬP NHẬT/XÓA), EF 6 so với EF7
CHÈN Đơn hoặc Hàng loạt
Thay đổi dữ liệu hàng loạt và xử lý hàng loạt
Cải thiện SaveChanges() trong EF Core 7
CẬP NHẬT Đơn hoặc Hàng loạt
XÓA đơn lẻ hoặc hàng loạt
ExecuteUpdate() hoặc ExecuteDelete() để cập nhật hàng loạt
Sử dụng trực tiếp các câu lệnh UPDATE hoặc DELETE
11) Giao dịch và Khóa
Xử lý giao dịch xem xét hiệu suất DB
Giao dịch, mức độ cô lập, Cam kết/Hoàn tác/Lưu điểm
Đọc Mức độ cô lập đã cam kết và Chặn khóa
Mức độ cô lập Đọc lặp lại
Vấn đề giao dịch không hoạt động
Nghiên cứu điển hình – Các vấn đề về hiệu suất “Giao dịch không hoạt động”
Tránh chặn trong các truy vấn chỉ đọc (NOLOCK hoặc RCS)
12) Giao dịch phân tán (TransactionScope)
Các vấn đề về hiệu suất lớp TransactionScope, cách khắc phục và quản lý
13) Phụ lục
Gọi các hàm do người dùng định nghĩa có giá trị vô hướng (UDF)
Hỗ trợ đồng thời EF Core Optimistic
Kế thừa DbCommandInterceptor – Thêm gợi ý vào truy vấn
Thiết lập gợi ý truy vấn mà không sửa đổi mã ứng dụng
Hỏi & Đáp 💬
H. Đây có phải là khóa học mà sinh viên không chuyên ngành cũng có thể tham gia không?
Nếu bạn đã có kiến thức cơ bản về .NET và SQL, bạn có thể tham gia khóa học này. Ngay cả khi còn thiếu một chút kiến thức, bạn vẫn có thể học những kiến thức cơ bản cần thiết trong quá trình học.
H. Tôi có cần chuẩn bị gì trước khi tham dự buổi thuyết trình không?
Nếu bạn mới làm quen với .NET EF Core, hãy xem lại và làm theo các tài liệu học tập trước được giới thiệu ở đầu khóa học. Bạn cũng có thể tải xuống các tài liệu khác, bao gồm cơ sở dữ liệu demo và dự án mẫu EF Core, trước. Cấu hình và nội dung cơ sở dữ liệu demo sẽ được giải thích trong quá trình đào tạo. Bạn cũng sẽ cần SQL Server để sử dụng làm cơ sở dữ liệu, cũng như các công cụ quản lý như SSMS, vì vậy vui lòng cài đặt chúng trước.
H. Tôi có cần đáp ứng bất kỳ yêu cầu nào trước khi tham gia khóa học không?
Bạn cần có Visual Studio (Phiên bản Cộng đồng hoặc cao hơn) và SQL Server. Khuyến nghị sử dụng phiên bản mới nhất. Đối với người mới bắt đầu sử dụng .NET, chúng tôi cũng sẽ giới thiệu ngắn gọn và hướng dẫn cách tải xuống và cấu hình Visual Studio ở phần trước của khóa học.
Người chia sẻ kiến thức của bài giảng này Xin giới thiệu.
Kim Jeong-seon SQL
Lịch sử
Tổng giám đốc/Giám đốc của Sequlo Co., Ltd. (www.sqlroad.com) (từ năm 2005)
Tư vấn SQL Server, hỗ trợ kỹ thuật, bài giảng và phát triển giải pháp
Phát triển SQLBigEyes (giải pháp giám sát hiệu suất SQL Server, www.sqlbigeyes.com)
Phát triển SQLBigEyes (giải pháp giám sát hiệu suất SQL Server, www.sqlbigeyes.com)
MVP Nền tảng dữ liệu của Microsoft
Được trao tặng trong 21 năm kể từ năm 2002 (tính đến năm 2022), Giải thưởng Thành tựu MVP năm 2008