강의

멘토링

로드맵

Inflearn brand logo image
BEST
Programming

/

Back-end

SQL hiệu năng cao (High-Performance SQL) dành cho nhà phát triển JPA (ORM)

Tận dụng tối đa hệ thống cơ sở dữ liệu quan hệ!

(4.8) 23 đánh giá

540 học viên

  • Vlad Mihalcea
SQL
performance-tuning
sql-query
DBMS/RDBMS

Đánh giá từ những học viên đầu tiên

Dịch cái này sang tiếng Việt

  • Học hỏi bí quyết điều chỉnh và tối ưu hóa hiệu suất SQL từ chuyên gia hàng đầu thế giới trong lĩnh vực Hibernate và JPA.

  • Tìm hiểu cách viết SQL hiệu quả, có tính đến sự tương tác hiệu quả giữa ứng dụng backend và cơ sở dữ liệu.

  • Để xác định chiến lược SQL nào có thể tối ưu hóa hiệu suất trong môi trường ORM (Object-Relational Mapping) như JOIN, Subquery, CTE (Common Table Expressions), Window Function, cần đưa ra các tiêu chí đánh giá sau:

  • So sánh các chiến lược truy vấn cải thiện hiệu suất trong các RDBMS hàng đầu như Oracle, SQL Server, MySQL, PostgreSQL, v.v., đồng thời chỉ rõ các tình huống hoạt động hiệu quả hoặc không hiệu quả trong từng cơ sở dữ liệu.

  • Bạn có thể học cách tận dụng các kỹ thuật truy vấn nâng cao như Upsert, Merge trong nhiều môi trường RDBMS khác nhau, tập trung vào các trường hợp thực tế.

  • Nắm vững các chủ đề SQL mới nhất như các vấn đề về mức độ cô lập giao dịch, chiến lược khóa, xử lý dữ liệu JSON, chiến lược lập chỉ mục nâng cao, v.v. để nâng cao khả năng tối đa hóa hiệu suất ứng dụng.

Vlad-banner (đã chỉnh sửa)

Học hỏi từ các chuyên gia toàn cầu
Chiến lược điều chỉnh SQL hiệu suất cao

SQL mà bạn đang viết có thực sự được tối ưu hóa không?

Hiệu suất DB được xác định bởi 'thiết kế truy vấn', không phải tối ưu hóa mã.

" Ngay khi bạn hiểu được bản chất của truy vấn , cơ sở dữ liệu của bạn sẽ thay đổi ."

Nhiều nhà phát triển quen thuộc với việc viết SQL và triển khai logic, nhưng điều thực sự quyết định hiệu suất cơ sở dữ liệu là cách viết các truy vấn.

Các truy vấn trả về kết quả giống hệt nhau có thể có sự khác biệt về hiệu suất gấp hàng chục lần tùy thuộc vào thứ tự nối, vị trí của các truy vấn phụ và cách sử dụng chỉ mục.
Tuy nhiên, nếu bạn không đọc kế hoạch thực thi và chỉ sử dụng SQL do ORM tạo ra hoặc chỉ lặp lại các mẫu quen thuộc, thì nút thắt sẽ luôn bị "ẩn sâu" và gây gánh nặng cho hoạt động.

Mặc dù không phải mọi nhà phát triển ứng dụng đều cần có hiểu biết về SQL ở cấp độ DBA, nhưng có một số kỹ thuật hiệu suất SQL cốt lõi không bao giờ được bỏ qua khi phát triển ứng dụng.

Nhiều nhà phát triển chỉ quen thuộc với ORM hoặc ngược lại, chỉ quen thuộc với SQL, nhưng hiếm khi hiểu và sử dụng hai ngôn ngữ này một cách hiệu quả.
Bài giảng này sẽ giúp bạn xem ORM và SQL không phải là những công nghệ riêng biệt mà là những công cụ có thể tạo ra sự tương tác với nhau .

SQL không chỉ là ngôn ngữ truy vấn dữ liệu; nó còn là công cụ để đưa ra quyết định về cơ sở dữ liệu và hiệu suất.
Khi bạn hiểu được bản chất của truy vấn, việc cải thiện hiệu suất sẽ trở thành quyết định về thiết kế, chứ không phải là vấn đề trực giác.

Được thiết kế cho hiệu suất
Suy nghĩ về SQL

Nếu bạn tham gia khóa học "SQL hiệu suất cao",

SQL thực tế thiết kế các cấu trúc chiến lược , không chỉ liệt kê các hàm.

Chìa khóa cho ứng dụng thực tế không nằm ở từng hàm JOIN, truy vấn con, CTE và hàm cửa sổ riêng lẻ, mà nằm ở cách kết hợp chúng và thời điểm lựa chọn . Khóa học này không chỉ đơn thuần là liệt kê các hàm. Nó rèn luyện kỹ năng tư duy thực tế, so sánh các chiến lược khác nhau dựa trên cấu trúc dữ liệu và yêu cầu, đồng thời thiết kế cấu trúc truy vấn tối ưu .

Một phương pháp học "trực tiếp thu thập" hiệu suất truy vấn.

Khóa học này không chỉ đơn thuần là học ngữ pháp. Nó được thiết kế để giúp bạn thực hiện các truy vấn thực tế, so sánh thời gian phản hồi và tích lũy kinh nghiệm thực tế bằng cách xác định các điểm nghẽn và cải thiện cấu trúc từng dòng . Tập trung vào các nguyên tắc thiết kế SQL có thể áp dụng trên nhiều môi trường khác nhau như PostgreSQL, MySQL và Oracle, khóa học này cho phép bạn nắm vững các khái niệm cốt lõi về tối ưu hóa hiệu suất mà không cần dựa vào các công cụ cụ thể.

Từ giao dịch đến JSON, nâng cao kỹ năng của bạn với SQL nâng cao

Từ các hàm cửa sổ và mức độ cô lập giao dịch đến khóa lạc quan và bi quan và xử lý JSON—chúng tôi sẽ trình bày một cách có hệ thống các chủ đề nâng cao thường gặp trong thực tế nhưng khó nắm vững. Khóa học này sẽ giúp bạn vượt ra ngoài các kỹ năng viết truy vấn đơn giản.
Bạn sẽ có được các kỹ năng SQL thực tế bao gồm hiệu suất, tính đồng thời và thiết kế dữ liệu .

Nội dung học tập

Nhiều phương pháp JOIN và chiến lược tối ưu hóa hiệu suất

So sánh các phương thức nối SQL khác nhau, bao gồm INNER, OUTER, NATURAL và LATERAL JOIN, đồng thời phân tích tiêu chí lựa chọn và sự khác biệt về hiệu suất dựa trên tình huống. Tìm hiểu quy trình tối ưu hóa truy vấn tập trung vào kế hoạch thực thi và phát triển khả năng xác định điểm nghẽn hiệu suất thực sự xảy ra ở đâu.

Cấu trúc truy vấn bằng cách sử dụng các truy vấn phụ và các bảng được suy ra

So sánh ưu và nhược điểm của JOIN và truy vấn con, đồng thời hiểu rõ cơ chế hoạt động bên trong của các biểu thức truy vấn con khác nhau, chẳng hạn như EXISTS, IN và ANY/ALL. Bạn cũng sẽ thực hành tái cấu trúc cấu trúc các truy vấn phức tạp bằng cách sử dụng các bảng dẫn xuất và biểu thức bảng chung (CTE), đảm bảo cả khả năng đọc và hiệu suất.

Truy vấn đệ quy và xử lý dữ liệu phân cấp

Tìm hiểu cách xử lý dữ liệu phân cấp hiệu quả, chẳng hạn như cấu trúc cây hoặc biểu đồ tổ chức, bằng cách sử dụng CTE đệ quy. Chúng tôi sẽ đề cập đến phương pháp thực hiện và các cân nhắc về hiệu suất của truy vấn đệ quy, đồng thời tìm hiểu các kỹ năng SQL cần thiết để triển khai logic kinh doanh thực tế.

Xây dựng các truy vấn phân tích phức tạp với các hàm cửa sổ

Triển khai logic phân tích phức tạp như tổng hợp, sắp xếp và xếp hạng bằng SQL thông qua các hàm cửa sổ như ROW_NUMBER, RANK, DENSE_RANK và LAG/LEAD. Hiểu được cách thức hoạt động bên trong của khung Windows và PARTITION BY, đồng thời thực hành các kỹ thuật nâng cao để tổng hợp dữ liệu mà không làm giảm hiệu suất.

Kỹ thuật sử dụng SQL thường được sử dụng trong thực tế

Tìm hiểu cách xử lý lệnh chèn và cập nhật đồng thời bằng các câu lệnh Upsert và Merge, đồng thời tìm hiểu các kỹ thuật để chuyển đổi linh hoạt hình dạng dữ liệu bằng Pivot/Unpivot. Bạn cũng sẽ hiểu rõ hơn về thứ tự thực thi SQL, tìm hiểu cách thức hoạt động của nhiều phương pháp phân trang khác nhau và hiểu rõ hơn về luồng truy vấn.

SQL nâng cao, bao gồm giao dịch và xử lý JSON

Tìm hiểu các kỹ thuật kiểm soát đồng thời dựa trên thuộc tính ACID và mức độ cô lập giao dịch, đồng thời so sánh các chiến lược khóa bi quan/lạc quan. Chúng tôi cũng đề cập đến cách xử lý các kiểu dữ liệu JSON trong SQL, mở rộng khả năng của SQL để hỗ trợ các mô hình dữ liệu hiện đại.

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Dành cho những ai sử dụng ORM nhưng vẫn khao khát cải thiện hiệu suất

  • Những người khao khát có kinh nghiệm cải thiện hiệu suất SQL vì DBA phụ trách việc điều chỉnh SQL.

  • Những người sử dụng SQL nhưng cảm thấy thiếu các phương pháp cải thiện hiệu suất hoặc tiêu chí lựa chọn chiến lược

  • Những ai muốn trau dồi khả năng giải quyết các vấn đề truy vấn phức tạp thường gặp trong thực tế công việc

  • Dành cho các nhà phát triển muốn học một cách có hệ thống các chủ đề SQL nâng cao như JOIN, CTE, Transaction, JSON, v.v.

Cần biết trước khi bắt đầu?

  • Hướng dẫn sử dụng cơ bản JAVA, Spring Framework

  • Khả năng viết SQL cơ bản

  • Kinh nghiệm sử dụng cơ sở dữ liệu quan hệ

Xin chào
Đây là

1,163

Học viên

62

Đánh giá

4.4

Xếp hạng

2

Các khóa học

My name is Vlad Mihalcea, and I’m a Java Champion. I wrote the High-Performance Java Persistence book, which became one of the best-selling Java books on Amazon.

 

I'm currently developing the amazing Hypersistence Optimizer, and in my free time, I develop various open-source projects (e.g., Hypersistence Utils and FlexyPool) and answer questions on StackOverflow.

 

저는 Java 챔피언이자 Hibernate ORM 프로젝트의 주요 기여자입니다. Hypersistence Optimizer 도구를 만들었으며, 이 도구는 애플리케이션 구성과 매핑을 스캔하여 데이터 액세스 계층 속도를 향상시키는 데에 필요한 변경 사항을 알려주는 도구입니다.

StackOverflow에서 Hibernate, Java, JPA 태그에 관련된 수천 개의 질문에 답변하며 골드 배지를 획득했습니다.

흥미로운 것을 발견하면 개인 블로그에 공유하는 것을 좋아합니다. 그는 오픈 소스 소프트웨어를 신뢰하며, 모든 개발자가 어떤 방식으로든 참여해야 한다고 생각합니다.

적절한 도구를 찾지 못하면 Hypersistence UtilsFlexyPool과 같은 새로운 오픈 소스 프로젝트를 시작하기도 합니다.

Chương trình giảng dạy

Tất cả

79 bài giảng ∙ (7giờ 37phút)

Tài liệu khóa học:

Tài liệu bài giảng
Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

23 đánh giá

4.8

23 đánh giá

  • tjsahr9191님의 프로필 이미지
    tjsahr9191

    Đánh giá 25

    Đánh giá trung bình 5.0

    5

    34% đã tham gia

    Nhờ giải thích chi tiết như vậy mà tôi có thể học được cách các nhà phát triển hàng đầu suy nghĩ và phát triển. Tôi sẽ nghiền ngẫm hết những bài giảng còn lại!

    • vladmihalcea
      Giảng viên

      Cảm ơn bạn vì đánh giá. Tôi rất vui vì bạn thấy khóa học hữu ích.

  • hahahl님의 프로필 이미지
    hahahl

    Đánh giá 46

    Đánh giá trung bình 5.0

    5

    9% đã tham gia

    Tôi học được rất nhiều điều từ phương pháp học luồng tư duy. Tôi nghe bằng tiếng Anh và tua nhanh gấp đôi tốc độ khi nghe lại bằng tiếng Hàn để tiết kiệm thời gian, nhưng nghe không hề khó chịu chút nào.

    • vladmihalcea
      Giảng viên

      Tôi rất vui vì bạn thích nó. Khóa học của tôi được ghi bằng tiếng Anh, nhưng nền tảng Inflearn đã cung cấp phần lồng tiếng và phụ đề bằng tiếng Hàn.

  • jiggyjiggy03237700님의 프로필 이미지
    jiggyjiggy03237700

    Đánh giá 6

    Đánh giá trung bình 5.0

    5

    8% đã tham gia

    Tôi cũng biết có bài giảng của Vlad, nhưng vì không giỏi tiếng Anh nên đã do dự. Không biết Vlad học tiếng Hàn từ khi nào, nhưng cảm ơn vì đã chia sẻ kiến thức bằng tiếng Hàn... Slide bài giảng rất hay. Tôi có thể nắm bắt ngay những phần mà Vlad muốn truyền đạt. Tôi sẽ học nốt những phần còn lại.

    • vladmihalcea
      Giảng viên

      Cảm ơn bạn đã đánh giá cao khóa học của tôi. Tôi rất vui vì bạn thích nó.

  • limeade님의 프로필 이미지
    limeade

    Đánh giá 10

    Đánh giá trung bình 5.0

    5

    37% đã tham gia

    Bạn giải thích rất tốt về việc nên áp dụng chiến lược nào trong các tình huống khác nhau. Tôi nghĩ điều này sẽ giúp ích rất nhiều trong việc nâng cao năng lực SQL của tôi.

    • vladmihalcea
      Giảng viên

      Cảm ơn bạn và hãy theo dõi để biết thêm nhé.

  • 20181420196030님의 프로필 이미지
    20181420196030

    Đánh giá 2

    Đánh giá trung bình 5.0

    5

    6% đã tham gia

    Em toàn xem trên blog thôi, thấy có lớp học này mở ra là em đăng ký liền luôn!! Em cảm ơn thầy vì bài giảng hay quá ạ, thầy giảng bằng tiếng Hàn nên em nghe không bị áp lực gì hết luôn ạ~~~

    • vladmihalcea
      Giảng viên

      Cảm ơn bạn vì đã đăng ký nhanh chóng và hãy tận hưởng các bài học video nhé.

4.783.073 ₫

Khóa học khác của Vlad Mihalcea

Hãy khám phá các khóa học khác của giảng viên!

Khóa học tương tự

Khám phá các khóa học khác trong cùng lĩnh vực!