Tôi nhận thấy rằng lần đầu tiên tôi chạy truy vấn trên RedShift, phải mất 3-10 giây. Khi tôi chạy cùng một truy vấn một lần nữa, ngay cả với các đối số khác nhau trong điều kiện WHERE, nó chạy nhanh (0,2 giây). Truy vấn Tôi đã nói về chạy trên một bảng của ~ 1M hàng, trên 3 cột nguyên.Thời gian chạy dài khi truy vấn được thực hiện lần đầu tiên trong RedShift
Đây có phải là sự khác biệt lớn trong thời gian thực thi gây ra bởi thực tế là RedShift biên dịch truy vấn lần đầu tiên chạy, và sau đó tái sử dụng mã đã biên dịch?
Nếu có - cách luôn giữ bộ nhớ cache của các truy vấn được biên dịch này ấm áp?
Một câu hỏi khác: Cho truy vấnA và truy vấnB. Giả sử queryA được biên dịch và thực thi trước. Làm thế nào tương tự nên queryB được queryA, như vậy mà thực hiện queryB sẽ sử dụng mã được biên dịch cho queryA?
Điều này hoàn toàn chính xác. Tôi đào sâu hơn để tìm ra chính xác nguyên nhân gây ra việc biên dịch lại mã: https://medium.com/@pingram/redshift-code-compilation-977143576e89 – Phil
Làm cách nào để bạn biết lần thứ hai, kết quả không đến từ kết quả được lưu trong bộ nhớ cache? Bạn có thể thực sự dựa vào thời gian thực hiện cho lần thử thứ hai của cùng một truy vấn để thử nghiệm hiệu suất không? Một liên kết khác http://docs.aws.amazon.com/redshift/latest/dg/c-query-performance.html – Faiz
bạn có thể kiểm tra tác động của việc biên dịch truy vấn một cách riêng biệt bằng cách thử các truy vấn khác nhau trên một bảng trống, để loại bỏ dữ liệu bộ nhớ đệm dưới dạng biến. Tôi thấy rằng truy vấn biên dịch độ trễ với độ phức tạp của truy vấn: đặc biệt, số lượng bảng và tham gia liên quan. Xem: http://wrschneider.github.io/2017/06/02/redshift-compile-latency.html – wrschneider