Django

Hiệu năng Django

Tối ưu query, vấn đề N+1, index cơ sở dữ liệu, connection pooling, profiling, monitoring

24 câu hỏi phỏng vấn·
Senior
1

Vấn đề hiệu năng phổ biến nhất liên quan đến các query ORM của Django là gì?

Câu trả lời

Vấn đề N+1 là vấn đề hiệu năng phổ biến nhất với Django ORM. Nó xảy ra khi một query ban đầu lấy N đối tượng, sau đó N query bổ sung được thực thi để lấy các đối tượng liên quan. Ví dụ, lặp qua các bài viết và truy cập tác giả của chúng tạo ra một query cho mỗi bài viết thay vì một query join duy nhất.

2

Nên dùng phương thức nào để giải quyết vấn đề N+1 với quan hệ ForeignKey?

Câu trả lời

select_related() là phương thức phù hợp để giải quyết vấn đề N+1 với quan hệ ForeignKey và OneToOneField. Nó thực hiện một join SQL và lấy các đối tượng liên quan trong một query duy nhất. prefetch_related() được dùng cho quan hệ ManyToMany hoặc quan hệ ngược (ForeignKey reverse).

3

Khi nào nên dùng prefetch_related() thay vì select_related()?

Câu trả lời

prefetch_related() được thiết kế cho quan hệ ManyToMany và quan hệ ngược (ForeignKey reverse). Khác với select_related() thực hiện join SQL, prefetch_related() thực thi một query riêng và thực hiện join trong Python. Điều này tránh việc trùng lặp dữ liệu sẽ xảy ra với join SQL trên các quan hệ many-to-many.

4

Làm thế nào để dùng Prefetch() để tùy chỉnh các query prefetch_related()?

5

Lợi ích chính của việc thêm index cơ sở dữ liệu trên một trường là gì?

+21 câu hỏi phỏng vấn

Nắm vững Django cho lần phỏng vấn tiếp theo

Truy cập tất cả câu hỏi, flashcards, bài kiểm tra kỹ thuật, bài tập code review và mô phỏng phỏng vấn.

Bắt đầu miễn phí