Đạt được khả năng hiển thị trong thời gian dài CHERTN VÀO CHỌN


7

Tôi có một câu lệnh chèn SQL lớn cập nhật bảng tóm tắt. Quá trình này thường chạy hàng giờ và mất khoảng 5 đến 10 phút để tính toán các khoảng thời gian trong khoảng thời gian đó. Tôi "dại dột" chọn chạy nó trong khoảng thời gian 15 ngày và tôi tự hỏi liệu tôi có thể làm gì để có được tầm nhìn vào nơi nó đang ở. Quá trình đã chạy được 9 giờ rồi. Tôi chỉ đơn giản muốn biết liệu đó vẫn là truy vấn CHỌN đang chạy hay nếu nó đang chèn dữ liệu: Tôi cần biết liệu tôi có nên dừng nó và thực hiện các lô nhỏ hơn hay không, nếu tôi nên để nó kết thúc.

Tôi biết máy chủ đã ở đó được 9 giờ vì câu nói đó:

select
    now() - xact_start
  , procpid
  , client_addr
  , client_port
  , current_query
from pg_stat_activity
where xact_start is not null
order by 1 desc

Truy vấn thực tế là:

INSERT INTO summary_show_unique_personas(period, show_id, persona_id, interactions_count)
  SELECT
      date_trunc('hour', created_at) AS period
    , show_id
    , persona_id
    , COUNT(*)
  FROM
          twitter_interactions
    JOIN  show_bindings        USING(interaction_id)
    JOIN  twitter_personas     USING(screen_name)
  WHERE
        created_at >= '__PERIOD_START_AT__' AND created_at < '__PERIOD_END_AT__'
    AND interaction_created_at >= '__PERIOD_START_AT__' AND interaction_created_at < '__PERIOD_END_AT__'
  GROUP BY
    1, 2, 3;

Có bao nhiêu hàng bạn dự kiến ​​sẽ được chèn?
Jack nói hãy thử topanswers.xyz

Điều này đã được chạy đi chạy lại và có thể làm phồng bảng đích? Bạn nói rằng phải mất 5 đến 10 phút để chạy và bạn đã chạy nó hơn 15 ngày, vì vậy tôi tự hỏi liệu điều đó có nghĩa là bạn chạy nó nhiều lần.
Scott Marlowe

Câu trả lời:


8

Postgres không cho phép đọc bẩn vì vậy chúng tôi cần một số phương tiện khác để kiểm tra xem các hàng có được chèn từ giao dịch thứ hai hay không, chẳng hạn như:

select pg_relation_size('summary_show_unique_personas');

Giá trị được trả về bởi truy vấn này sẽ tăng lên nếu hiện tại việc chèn (trừ khi, tôi nghĩ rằng, chúng đang lấp đầy không gian được giải phóng bởi các deletecâu lệnh trước ).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.