2011-09-20 22 views
12

Tôi có một bộ điều khiển trả về JSON hoặc XML từ một truy vấn quan hệ khá phức tạp với một số logic điều khiển.Rails - Thời gian hoàn thành cho một yêu cầu cao hơn đáng kể so với lần xem và DB

Tôi đã điều chỉnh phía DB bằng cách tinh chỉnh truy vấn của mình và đảm bảo các chỉ mục của tôi là chính xác cho truy vấn của tôi.

Trong log của tôi, tôi thấy các mục như thế này:

Completed in 740ms (View: 1, DB: 50) 

Vì vậy, nếu tôi hiểu đúng điều này có nghĩa quan điểm mất 1 giây để render và truy vấn DB là 50ms. Là tất cả thời gian còn lại trong bộ điều khiển? Tôi đã cố gắng bỏ qua logic điều khiển của tôi và chỉ cần để lại to_json của tôi và to_xml trong đó và nó chỉ là chậm. Như một điểm tham chiếu, kết quả trả về JSON trung bình của tôi là 168k.

Có các bước khác đi vào thời gian đã hoàn thành không? Liệu nó có bao gồm thời gian cho đến khi byte cuối cùng cho việc chuyển mạng?

Cập nhật: tôi quấn phần khác nhau của bộ điều khiển của tôi trong khối benchmarking:

self.class.benchmark("Active Record Find") do 
    #my query here 
end 

gì tôi thấy được rằng mặc dù dòng nhật ký nói DB: 50 hoạt động kỷ lục tìm tôi đang tiến hành hầu hết các thời gian còn lại. Vì vậy, bây giờ tôi đang bối rối như những gì mà số DB có nghĩa là và lý do tại sao dòng chuẩn sẽ nói ~ 600ms nhưng DB: thời gian sẽ là ~ 50.

Cảm ơn

+0

Xin vui lòng gửi các truy vấn và logic điều khiển – jschorr

+0

bạn đã có nghĩa là 1ms cho xem để render ? – lulalala

Trả lời

10

Số DB của bạn là thời gian thực sự được sử dụng trong cơ sở dữ liệu nhưng không tải đối tượng ActiveRecord.

Vì vậy, nếu bạn đang tải 168.000 đối tượng ruby ​​active_record để render thì như JSON, điều này sẽ giải thích 550 ms của bạn (hoặc nhiều hơn nữa!)

+0

Không phải bản ghi 168k. 168k giá trị của văn bản JSON. Nhưng có bạn là đúng thời hạn của DB là thấp nhưng "lấy trong" là cao do một số lượng lớn: bao gồm. Cảm ơn bạn đã xóa số ý nghĩa đó. Tôi đã có thể không về vấn đề này. – Nick

Các vấn đề liên quan