Lập trình JPA tiêu chuẩn Java ORM - Cơ bản
Những người mới làm quen với JPA hoặc sử dụng JPA trong thực tế nhưng thiếu lý thuyết cơ bản Bằng cách tìm hiểu kỹ lý thuyết cơ bản về JPA, ngay cả những người mới bắt đầu cũng có thể tự tin sử dụng JPA trong thực tế.


Ra mắt khóa học Tối ưu hóa hiệu suất cơ sở dữ liệu thực chiến của Kim Young-han
Xin chào mọi người.
Khóa học Tối ưu hóa hiệu suất cơ sở dữ liệu thực chiến của Kim Young-han cuối cùng đã chính thức ra mắt.
Nhân dịp ra mắt, lộ trình cơ sở dữ liệu đang được giảm giá 30% 🙂
Tiêu đề: Cơ sở dữ liệu thực chiến của Kim Young-han - Tối ưu hóa hiệu năng, chinh phục toàn diện Kế hoạch thực thi và Chỉ mục
Số bài giảng: 104
Thời lượng khóa học: 21 giờ 10 phút
Liên kết: https://inf.run/Gcg6N
Và để kỷ niệm việc hoàn thành toàn bộ các khóa học trong lộ trình Backend bao gồm cả lộ trình Cơ sở dữ liệu, chúng tôi xin giới thiệu Backend Master Pass của Kim Young-han trong thời gian có hạn.
Liên kết Master Pass: https://inf.run/uixFt
<Đặc điểm khóa học>
Đặc điểm quan trọng nhất của khóa học này là chúng ta sẽ nạp vào cơ sở dữ liệu hàng trăm triệu đến hàng chục triệu bản ghi dữ liệu thực tế sát với thực tiễn, sau đó cùng tôi tinh chỉnh từng bước một. Từ đó, bạn sẽ học được phương pháp thực chiến để tối ưu hóa các câu truy vấn vốn tốn hàng giây xuống mức cực hạn chỉ trong 0,01 giây.
<Nội dung khóa học>
Trong quá trình phát triển, có những truy vấn vốn hoạt động tốt bỗng nhiên chậm hẳn đi khi dữ liệu ngày càng nhiều.
Ban đầu, câu truy vấn chỉ mất 0.1 giây để thực thi, nhưng rồi có lúc thời gian thực thi vượt quá 1 giây, 10 giây, thậm chí trong trường hợp nghiêm trọng còn dẫn đến sự cố dịch vụ.
Trong tình huống này, chúng ta sẽ phải đối mặt với những băn khoăn như sau.
Chúng ta nên bắt đầu tìm nguyên nhân khiến truy vấn chậm từ đâu?
Những mục xuất hiện trong kế hoạch thực thi có ý nghĩa gì?
Đã tạo chỉ mục rồi mà sao không được sử dụng nhỉ?
Nên thiết kế chỉ mục phức hợp theo thứ tự nào?
Phải chăng càng nhiều chỉ mục thì hiệu suất càng cao?
Tại sao Using filesort lại xảy ra và làm thế nào để loại bỏ nó?
Tại sao truy vấn lại chậm dần khi phân trang về các trang sau?
Thứ tự join do ai quyết định và làm thế nào để tối ưu hóa?
Tại sao trình tối ưu hóa lại chọn kế hoạch thực thi khác với dự kiến?
Vấn đề hiệu năng cơ sở dữ liệu không thể giải quyết chỉ bằng việc nắm vững cú pháp SQL.
Chúng ta cần hiểu rõ cách cơ sở dữ liệu lưu trữ dữ liệu, cách duyệt chỉ mục, và các tiêu chí mà bộ tối ưu hóa sử dụng để lựa chọn kế hoạch thực thi.
Khóa học này không sửa các truy vấn chậm bằng cảm tính, mà hướng dẫn cách tìm nguyên nhân và khắc phục dựa trên kế hoạch thực thi và kết quả đo lường thực tế.
Trước tiên, hãy tìm hiểu cấu trúc nội bộ của MySQL và InnoDB, đồng thời phân tích cách truy vấn thực sự được thực thi thông qua EXPLAIN và EXPLAIN ANALYZE.
Sau đó, sử dụng hàng triệu bản ghi dữ liệu thực tế để trực tiếp tạo ra và giải quyết các vấn đề về hiệu suất.
Tối ưu hóa quét toàn bộ bảng thành quét chỉ mục
Xác định thứ tự cột trong chỉ mục phức hợp
Hiểu về B+Tree và cơ chế hoạt động nội bộ của chỉ mục
Phân tích chỉ mục phân cụm và chỉ mục thứ cấp
Chẩn đoán nguyên nhân Using filesort và kết thúc sớm
Cải thiện hiệu suất với ICP và chỉ mục bao phủ
Quét bỏ qua chỉ mục, hợp nhất chỉ mục, phân tích MRR
Ứng dụng trình tối ưu hóa và histogram
Tối ưu hóa thứ tự Join và truy cập ngẫu nhiên
Cải thiện hiệu suất sắp xếp, phân trang và phân nhóm
Tổng hợp luồng và thiết kế bảng tổng hợp trước
Không chỉ đơn thuần đưa ra kết luận kiểu "Hãy thêm chỉ mục vào đây".
Chúng ta sẽ kiểm tra từng bước lý do vì sao cần chỉ mục đó, những gì diễn ra bên trong cơ sở dữ liệu, cũng như kế hoạch thực thi và thời gian thực thi thực tế thay đổi như thế nào.
Hơn nữa, không chỉ dừng lại ở việc tối ưu tốc độ cho một câu truy vấn duy nhất, khóa học còn đi sâu vào những nguyên lý nền tảng, giúp bạn liên tục phân tích và giải quyết các vấn đề hiệu suất phát sinh trong thực tế.
<Những điều bạn sẽ đạt được qua khóa học này>
1. Khả năng đọc kế hoạch thực thi
Hiểu rõ các thành phần cốt lõi của EXPLAIN và EXPLAIN ANALYZE, đồng thời có thể xác định nguyên nhân gây ra các truy vấn chậm thông qua kế hoạch thực thi.
2. Khả năng tự thiết kế chỉ mục
Không chỉ dừng lại ở mức thêm một chỉ mục vào một cột duy nhất, bạn có thể thiết kế các chỉ mục kết hợp phù hợp với phân bố dữ liệu và điều kiện truy vấn.
3. Hiểu rõ cơ chế hoạt động bên trong cơ sở dữ liệu
Bạn sẽ nắm vững các nguyên lý cốt lõi bên trong chỉ mục như B+Tree, chỉ mục cụm, chỉ mục phụ, truy cập ngẫu nhiên, v.v.
4. Trải nghiệm tối ưu hóa hiệu suất thực chiến
Sử dụng hàng triệu bản ghi dữ liệu để trực tiếp phân tích các truy vấn chậm và trải nghiệm quá trình cải thiện hiệu suất lên gấp hàng chục đến hàng trăm lần.
5. Tiêu chí giải quyết vấn đề trong môi trường vận hành
Không chỉ những ưu điểm của chỉ mục, mà còn cân nhắc đến hiệu suất ghi, dung lượng lưu trữ và chi phí vận hành, bạn có thể lựa chọn giải pháp tối ưu nhất phù hợp với từng tình huống cụ thể.
<Toàn bộ mục lục khóa học>
Giới thiệu khóa học và tài liệu học tập
Thiết lập môi trường thực hành
Hiệu năng cơ sở dữ liệu và Kiến trúc MySQL
Kế hoạch thực thi 1 - Làm chủ hoàn toàn EXPLAIN
Kế hoạch thực thi 2 - Chinh phục hoàn toàn ANALYZE
Tối ưu hóa thực chiến 1 - Chẩn đoán quét toàn bảng và cơ bản về chỉ mục phức hợp
Cấu trúc nội bộ chỉ mục 1 - B+Tree
Cấu trúc nội bộ chỉ mục 2 - Chỉ mục cụm, chỉ mục phụ
Tinh chỉnh thực chiến 2 - Chẩn đoán Using filesort và Kết thúc sớm
Chuyên sâu về chỉ mục 1 - ICP, Covering, Skip Scan
Chuyên sâu về chỉ mục 2 - Merge, MRR, tính năng mới, hint, vận hành
Trình tối ưu hóa và Histogram
Tối ưu hóa Join
Thực chiến tinh chỉnh 3 - Chẩn đoán truy cập ngẫu nhiên khi Join và chỉ mục bao phủ
Tối ưu hóa sắp xếp, phân trang và nhóm
Thực chiến tối ưu 4 - Tổng hợp luồng và bảng tổng hợp trước
Tiếp theo,
Tối ưu hóa hiệu năng cơ sở dữ liệu không đơn thuần là việc học thuộc lòng một vài kỹ thuật tinh chỉnh SQL.
Đây là quá trình hiểu rõ lộ trình truy vấn dữ liệu, xác định điểm nghẽn dựa trên kế hoạch thực thi, và lựa chọn giải pháp tối ưu nhất trong số các phương án.
Thông qua khóa học này, tôi hy vọng các bạn sẽ trưởng thành trở thành những lập trình viên có thể tự mình phân tích chính xác nguyên nhân và giải quyết vấn đề khi đối mặt với các truy vấn chậm, thay vì vội vàng thêm chỉ mục một cách mơ hồ.
Tôi đã đưa vào bài giảng này toàn bộ kinh nghiệm tích lũy được qua quá trình giải quyết vô số vấn đề về hiệu suất trong thực tế, cùng với kết quả của những trăn trở và suy ngẫm suốt thời gian dài.
Hy vọng điều này sẽ giúp ích cho sự phát triển của các bạn.
Xin cảm ơn.




