Tôi có một cấu trúc dữ liệu mà trông như thế này:Làm cách nào để nhập * khối dữ liệu khổng lồ vào PostgreSQL?
Model Place
primary key "id"
foreign key "parent" -> Place
foreign key "neighbor" -> Place (symmetryc)
foreign key "belongtos" -> Place (asymmetric)
a bunch of scalar fields ...
tôi có hơn 5 triệu hàng trong bảng mô hình, và tôi cần phải chèn ~ 50 triệu hàng vào mỗi hai bảng chính nước ngoài. Tôi có SQL
file mà trông như thế này:
INSERT INTO place_belongtos (from_place_id, to_place_id) VALUES (123, 456);
và họ sắp 7 Gb mỗi. Vấn đề là, khi tôi làm psql < belongtos.sql
, tôi mất khoảng 12 giờ để nhập ~ 4 triệu hàng trên CPU AMD Turion64x2 của tôi. Hệ điều hành là Gentoo ~ amd64, PostgreSQL là phiên bản 8.4, được biên dịch cục bộ. Các dir dữ liệu là một gắn kết gắn kết, nằm trên phân vùng mở rộng thứ hai của tôi (ext4
), mà tôi tin rằng không phải là nút cổ chai.
Tôi nghi ngờ mất nhiều thời gian để chèn quan hệ khóa ngoài vì psql
kiểm tra các ràng buộc chính cho mỗi hàng, có thể thêm một số chi phí không cần thiết, vì tôi biết chắc chắn rằng dữ liệu hợp lệ. Có cách nào để tăng tốc quá trình nhập, tức là tạm thời vô hiệu hóa kiểm tra ràng buộc không?
có nhưng tôi nghĩ rằng chỉ trong 8.4+ hmm phải tìm kiếm ... – xenoterracide