Người ta có thể cần phải chèn một lượng lớn dữ soi kèo bóng đá truoctran khi lần đầu tiên điền vào cơ sở dữ soi kèo bóng đá truoctran. Phần này chứa một số đề xuất về cách làm cho quá trình này hiệu quả nhất có thể.
Khi sử dụng nhiềuChèn
S, Tắt AutoCommit và chỉ cần thực hiện một cam kết ở cuối. (Trong SQL đơn giản, điều này có nghĩa là phát hànhBắt đầu
Khi bắt đầu vàcam kết
Ở cuối. Một số thư viện máy khách có thể làm điều này sau lưng của bạn, trong trường hợp đó bạn cần đảm bảo thư viện thực hiện nó khi bạn muốn nó được thực hiện.) Nếu bạn cho phép mỗi lần chèn được cam kết riêng biệt,POSTGRESQLđang làm rất nhiều công việc cho mỗi hàng được thêm vào. Một lợi ích bổ sung của việc thực hiện tất cả các chèn trong một giao dịch là nếu việc chèn một hàng không thành công thì việc chèn tất cả các hàng được chèn vào điểm đó sẽ được cuộn lại, vì vậy bạn sẽ không bị kẹt với dữ soi kèo bóng đá truoctran được tải một phần.
Copy
#sử dụngCopy
Để tải tất cả các hàng trong một lệnh, thay vì sử dụng một loạtChèn
lệnh. TheCopy
Lệnh được tối ưu hóa để tải số lượng lớn các hàng; nó ít linh hoạt hơnChèn
, nhưng phải chịu chi phí thấp hơn đáng kể cho tải dữ soi kèo bóng đá truoctran lớn. TừCopy
là một lệnh duy nhất, không cần phải vô hiệu hóa AutoCommit nếu bạn sử dụng phương thức này để điền soi kèo bóng đá truoctran bảng.
Nếu bạn không thể sử dụngCopy
, nó có thể giúp sử dụngChuẩn bị
Để tạo ra một chế biếnChèn
câu lệnh, sau đó sử dụngthực thi
Bao nhiêu lần theo yêu cầu. Điều này tránh được một số chi phí của phân tích và lập kế hoạch liên tụcChèn
. Các giao diện khác nhau cung cấp cơ sở này theo những cách khác nhau; tìm kiếmCâu lệnh được chuẩn bịTrong tài soi kèo bóng đá truoctran giao diện.
Lưu ý rằng việc tải một số lượng lớn các hàng bằng cách sử dụngCopy
hầu như luôn nhanh hơn sử dụngChèn
, ngay cả khiChuẩn bị
được sử dụng và nhiều lần chèn được đặt soi kèo bóng đá truoctran một giao dịch duy nhất.
Copy
nhanh nhất khi được sử dụng trong cùng một giao dịch với trước đóTạo bảng
hoặccắt ngắn
lệnh. Trong những trường hợp như vậy, không cần viết WAL, bởi vì trong trường hợp có lỗi, các tệp chứa dữ soi kèo bóng đá truoctran mới được tải sẽ bị xóa. Tuy nhiên, sự cân nhắc này chỉ được áp dụng khiWal_Levellà15527_15536
Vì tất cả các lệnh phải viết wal nếu không.
Nếu bạn đang tải một bảng mới được tạo, phương pháp nhanh nhất là tạo bảng, tải số lượng lớn dữ soi kèo bóng đá truoctran của bảng bằng cách sử dụngCopy
, sau đó tạo bất kỳ chỉ mục nào cần thiết cho bảng. Tạo một chỉ mục trên dữ soi kèo bóng đá truoctran tồn tại trước đó nhanh hơn so với việc cập nhật nó tăng dần khi mỗi hàng được tải.
Nếu bạn đang thêm một lượng lớn dữ soi kèo bóng đá truoctran vào bảng hiện có, thì có thể là một chiến thắng để bỏ các chỉ mục, tải bảng và sau đó tạo lại các chỉ mục. Tất nhiên, hiệu suất cơ sở dữ soi kèo bóng đá truoctran cho người dùng khác có thể bị ảnh hưởng trong thời gian các chỉ mục bị thiếu. Người ta cũng nên suy nghĩ hai lần trước khi bỏ một chỉ mục duy nhất, vì việc kiểm tra lỗi được cung cấp bởi ràng buộc duy nhất sẽ bị mất trong khi chỉ số bị thiếu.
Giống như với các chỉ mục, có thể kiểm tra một ràng buộc khóa nước ngoàivới số lượng lớn16991_16994hiệu quả hơn hàng từng hàng. Vì vậy, có thể hữu ích khi bỏ các ràng buộc khóa nước ngoài, tải dữ soi kèo bóng đá truoctran và tạo lại các ràng buộc. Một lần nữa, có một sự đánh đổi giữa tốc độ tải dữ soi kèo bóng đá truoctran và mất kiểm tra lỗi trong khi bị hạn chế.
17254_17689cần thiết, không chỉ mong muốn, để giảm và áp dụng lại các khóa nước ngoài khi tải một lượng lớn dữ soi kèo bóng đá truoctran. Nếu tạm thời loại bỏ ràng buộc không được chấp nhận, thì duy nhất có thể là chia hoạt động tải thành các giao dịch nhỏ hơn.
bảo trì_work_mem
#tạm thời tăng18391_18413Biến cấu hình khi tải một lượng lớn dữ soi kèo bóng đá truoctran có thể dẫn đến hiệu suất được cải thiện. Điều này sẽ giúp tăng tốcTạo chỉ mục
lệnh vàBàn thay đổi thêm phím nước ngoài
lệnh. Nó sẽ không làm được gì nhiều chosao chép
chính nó, vì vậy lời khuyên này chỉ hữu ích khi bạn đang sử dụng một hoặc cả hai kỹ thuật trên.
MAX_WAL_SIZE
#tạm thời tăngMAX_WAL_SIZEBiến cấu hình cũng có thể làm cho tải dữ soi kèo bóng đá truoctran lớn nhanh hơn. Điều này là do tải một lượng lớn dữ soi kèo bóng đá truoctran vàoPostgreSQLsẽ gây ra các điểm kiểm tra xảy ra thường xuyên hơn tần số điểm kiểm tra thông thường (được chỉ định bởiCheckPoint_Timeout
Biến cấu hình). Bất cứ khi nào một điểm kiểm tra xảy ra, tất cả các trang bẩn phải được đổ soi kèo bóng đá truoctran đĩa. Bằng cách tăngMAX_WAL_SIZE
tạm thời trong quá trình tải dữ soi kèo bóng đá truoctran hàng loạt, số lượng các điểm kiểm tra được yêu cầu có thể được giảm.
20074_20418Wal_Levelđếntối thiểu
, archive_modeđếnTẮT
vàMAX_WAL_SENDERSđến 0. Nhưng lưu ý rằng việc thay đổi các cài đặt này yêu cầu khởi động lại máy chủ và thực hiện bất kỳ bản sao lưu cơ sở nào được thực hiện trước khi không có sẵn để khôi phục lưu trữ và máy chủ dự phòng, điều này có thể dẫn đến mất dữ soi kèo bóng đá truoctran.
20956_21141Wal_Level
làtối thiểu
và Subtransaction hiện tại (hoặc giao dịch cấp cao nhất) đã tạo hoặc cắt bỏ bảng hoặc chỉ mục mà họ thay đổi. (Họ có thể đảm bảo an toàn sự cố với giá rẻ hơn bằng cách thực hiệnfsync
ở cuối hơn bằng cách viết Wal.)
Phân tích
sau đó#Bất cứ khi nào bạn đã thay đổi đáng kể phân phối dữ soi kèo bóng đá truoctran trong bảng, chạyPhân tích
được khuyến nghị mạnh mẽ. Điều này bao gồm tải số lượng lớn một lượng lớn dữ soi kèo bóng đá truoctran vào bảng. Đang chạyPhân tích
(hoặcPhân tích chân không
) đảm bảo rằng người lập kế hoạch có số soi kèo bóng đá truoctran thống kê cập nhật về bảng. Không có số soi kèo bóng đá truoctran thống kê hoặc thống kê lỗi thời, người lập kế hoạch có thể đưa ra quyết định kém trong quá trình lập kế hoạch truy vấn, dẫn đến hiệu suất kém trên bất kỳ bảng nào có số soi kèo bóng đá truoctran thống kê không chính xác hoặc không tồn tại. Lưu ý rằng nếu trình nền Autovacuum được bật, nó có thể chạyPhân tích
tự động; nhìn thấy22621_22642vàPhần 24.1.6Để biết thêm thông tin.
Các tập lệnh kết xuất được tạo bởipg_dumpTự động áp dụng một số, nhưng không phải tất cả các hướng dẫn trên. Để khôi phục mộtpg_dumpDump càng nhanh càng tốt, bạn cần phải làm thêm một soi kèo bóng đá truoctrani thứ theo cách thủ công. (Lưu ý rằng các điểm này áp dụng trong khiKhôi phụcMột bãi rác, không phải trong khiTạoNó. Các điểm giống nhau áp dụng cho dù đang tải một kết xuất văn bản vớiPSQLhoặc sử dụngpg_restoreĐể tải từ Apg_dumpTệp lưu trữ.)
Theo mặc định,pg_dumpsử dụngsao chép
và khi nó tạo ra một kết xuất lược đồ và dữ soi kèo bóng đá truoctran hoàn chỉnh, sẽ cẩn thận tải dữ soi kèo bóng đá truoctran trước khi tạo các chỉ mục và khóa nước ngoài. Vì vậy, trong trường hợp này, một số hướng dẫn được xử lý tự động. Những gì còn lại để bạn làm là:
Đặt các giá trị phù hợp (nghĩa là lớn hơn bình thường) chobảo trì_work_mem
vàMAX_WAL_SIZE
.
Nếu sử dụng sao chép hoặc phát trực tuyến WAL, hãy xem xét việc vô hiệu hóa chúng trong quá trình khôi phục. Để làm điều đó, đặtArchive_Mode
đếnTẮT
, Wal_Level
đếntối thiểu
vàMAX_WAL_SENDERS
24736_24847
Thử nghiệm với các chế độ kết xuất và khôi phục song song của cả haipg_dumpvàpg_restorevà tìm số lượng công việc đồng thời tối ưu để sử dụng. Bán phá giá và khôi phục song song bằng-J
Tùy chọn sẽ cung cấp cho bạn hiệu suất cao hơn đáng kể so với chế độ nối tiếp.
Xem xét soi kèo bóng đá truoctran toàn bộ bãi rác có nên được khôi phục như một giao dịch duy nhất hay không. Để làm điều đó, vượt qua-1
hoặc--Single-Transaction
Tùy chọn dòng lệnh thànhPSQLhoặcPG_RESTORE. Khi sử dụng chế độ này, ngay cả các lỗi nhỏ nhất cũng sẽ cuộn lại toàn bộ khôi phục, có thể loại bỏ nhiều giờ xử lý. Tùy thuộc vào mức độ liên quan của dữ soi kèo bóng đá truoctran, điều đó có vẻ thích hợp hơn để dọn dẹp thủ công, hoặc không.Copy
Các lệnh sẽ chạy nhanh nhất nếu bạn sử dụng một giao dịch duy nhất và đã tắt lưu trữ Wal.
Nếu có nhiều CPU có sẵn trong máy chủ cơ sở dữ soi kèo bóng đá truoctran, hãy xem xét sử dụngPG_RESTORE's--Jobs
Tùy chọn. Điều này cho phép tải dữ soi kèo bóng đá truoctran đồng thời và tạo chỉ mục.
chạyPhân tích
sau đó.
Một kết xuất chỉ có dữ soi kèo bóng đá truoctran vẫn sẽ sử dụngCopy
, nhưng nó không bỏ hoặc tạo lại các chỉ mục và nó thường không chạm soi kèo bóng đá truoctran các khóa nước ngoài.[14]Vì vậy, khi tải một kết xuất chỉ có dữ soi kèo bóng đá truoctran, bạn sẽ rơi và tạo lại các chỉ mục và khóa nước ngoài nếu bạn muốn sử dụng các kỹ thuật đó. Nó vẫn hữu ích để tăngMAX_WAL_SIZE
Trong khi tải dữ soi kèo bóng đá truoctran, nhưng đừng bận tâm tăngbảo trì_work_mem
; Thay soi kèo bóng đá truoctran đó, bạn sẽ làm điều đó trong khi tái tạo thủ công các chỉ mục và khóa nước ngoài sau đó. Và đừng quênPhân tích
Khi bạn hoàn thành; nhìn thấyPhần 24.1.3vàPhần 24.1.6Để biết thêm thông tin.
[14]Bạn có thể nhận được hiệu ứng vô hiệu hóa các khóa nước ngoài bằng cách sử dụng--bị-Triggers
Tùy chọn - Nhưng nhận ra rằng việc loại bỏ, thay vì chỉ là postpones, xác thực khóa nước ngoài và do đó có thể chèn dữ soi kèo bóng đá truoctran xấu nếu bạn sử dụng nó.
Nếu bạn thấy bất cứ điều gì trong tài soi kèo bóng đá truoctran không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài soi kèo bóng đá truoctran.