pushLog
hàm cam kết mỗi lần chèn riêng biệt và cam kết chậm.
Như đã giải thích trong Điền cơ sở dữ liệu của tài liệu :
Ngoài ra:
Tuy nhiên, trong trường hợp của bạn, đó sẽ là một vấn đề hơn là một lợi ích, vì mỗi INSERT có thể không thành công khi vi phạm khóa chính, do đó sẽ hủy các INSERT trước đó kể từ lần cam kết cuối cùng. Lưu ý rằng đây cũng sẽ là một vấn đề với COPY , bạn có nên sử dụng cái đó không.
Vì thực sự cần thiết phải nhóm các truy vấn trong giao dịch để đạt hiệu suất, bạn cần phải xử lý các vi phạm khóa chính theo cách không hủy bỏ giao dịch.
Hai phương pháp thường được sử dụng:
-
Tránh lỗi:
INSERT INTO ... WHERE KHÔNG TỒN TẠI (CHỌN 1 TỪ bảng WHERE primary_key =...)
-
Gỡ lỗi bằng cách chèn vào bên trong một hàm plpgsql có khối EXCEPTION bỏ qua nó. (Các) CHÈN cụ thể gây ra trùng lặp sẽ bị hủy nhưng giao dịch sẽ không bị hủy bỏ.
Nếu bạn chèn đồng thời, các phương pháp này cần được tinh chỉnh bằng chiến lược khóa.