Câu hỏi phỏng vấn Cosmos DB
Câu hỏi

Các truy vấn chéo phân vùng trong Cosmos DB là gì?

Câu trả lời

Trong Azure Cosmos DB, truy vấn chéo phân vùng (cross-partition query) là loại truy vấn mà không giới hạn truy vấn trong một phân vùng logic duy nhất mà phải tìm kiếm dữ liệu qua nhiều phân vùng vật lý. Điều này thường xảy ra khi truy vấn không bao gồm bộ lọc trên partition key hoặc khi bộ lọc không chỉ định một giá trị cụ thể cho partition key.

Cách Thức Hoạt Động

Khi bạn thực hiện một truy vấn không có bộ lọc partition key, Cosmos DB phải kiểm tra mọi phân vùng vật lý để tìm kiếm dữ liệu phù hợp. Mỗi phân vùng vật lý có chỉ mục riêng của nó, và truy vấn sẽ được thực hiện trên mỗi chỉ mục này. Cosmos DB sau đó tự động tổng hợp kết quả từ các phân vùng khác nhau.

Ví Dụ

Giả sử bạn có một truy vấn tìm kiếm tất cả các mục có Location = 'Seattle' nhưng không chỉ định partition key:

sql Copy
SELECT * FROM c WHERE c.Location = 'Seattle'

Truy vấn này sẽ phải được thực hiện trên tất cả các phân vùng vật lý, vì không có bộ lọc nào trên partition key để hạn chế phạm vi truy vấn.

Tác Động và Khuyến Nghị

  • Chi phí RU cao hơn: Truy vấn chéo phân vùng thường tiêu tốn nhiều RU hơn vì nó cần truy cập nhiều phân vùng.
  • Độ trễ cao hơn: Do phải kiểm tra nhiều phân vùng, truy vấn có thể mất nhiều thời gian hơn để hoàn thành.
  • Khuyến nghị: Nên tránh truy vấn chéo phân vùng nếu có thể, đặc biệt là với các container lớn, bằng cách sử dụng partition key trong bộ lọc truy vấn để hạn chế phạm vi truy vấn đến một hoặc một số phân vùng cụ thể.

Tối Ưu Hóa

Azure Cosmos DB cũng hỗ trợ thực thi truy vấn song song qua các phân vùng, giúp giảm độ trễ cho các truy vấn chéo phân vùng. Bạn có thể điều chỉnh các tham số như MaxConcurrencyMaxBufferedItemCount để quản lý hiệu suất truy vấn song song.

middle

middle

Gợi ý câu hỏi phỏng vấn

middle

Sự khác biệt giữa Phân vùng LogicPhân vùng Vật lý trong Cosmos DB là gì?

middle

Giải thích thế nào là Point Read trong Cosmos DB?

entry

Cosmos DB là gì?

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào