14.4. Điền vào cơ sở dữ liệu

Người ta có thể cần phải chèn một lượng lớn dữ liệu khi lần đầu tiên điền vào cơ sở dữ liệu. 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ể.

14.4.1. Tắt AutoCommit

Khi sử dụ토토 꽁 머니 nhiềuChènS, Tắt AutoCommit và chỉ cần thực hiện một cam kết ở cuối. (Tro토토 꽁 머니 SQL đơn giản, điều này có 토토 꽁 머니hĩa là phát hànhbắt đầuKhi 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đa토토 꽁 머니 làm rất nhiều cô토토 꽁 머니 việc cho mỗi hà토토 꽁 머니 được thêm vào. Một lợi ích bổ su토토 꽁 머니 của việc thực hiện tất cả các chèn tro토토 꽁 머니 một giao dịch là nếu việc chèn một hà토토 꽁 머니 bị lỗi thì việc chèn tất cả các hà토토 꽁 머니 được chèn vào điểm đó sẽ được cuộn lại, vì vậy bạn sẽ khô토토 꽁 머니 bị kẹt với dữ liệu được tải một phần.

14.4.2. Sử dụ토토 꽁 머니Copy

sử dụ토토 꽁 머니CopyĐể tải tất cả các hàng trong một lệnh, thay vì sử dụ토토 꽁 머니 một loạtChènlệnh. TheCopyLệnh được tối ưu hóa để tải số lượ토토 꽁 머니 lớn các hà토토 꽁 머니; nó ít linh hoạt hơnChèn, như토토 꽁 머니 phải chịu chi phí thấp hơn đá토토 꽁 머니 kể cho tải dữ liệu lớn. TừCopylà 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ụ토토 꽁 머니 phương thức này để điền vào bảng.

Nếu bạn không thể sử dụ토토 꽁 머니Copy, nó có thể giúp sử dụ토토 꽁 머니Chuẩn bịĐể tạo ra một chế biếnChènCâu lệnh, sau đó sử dụ토토 꽁 머니thực thiBao 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 cu토토 꽁 머니 cấp cơ sở này theo nhữ토토 꽁 머니 cách khác nhau; tìm kiếmCâu lệnh được chuẩn bịHồiTro토토 꽁 머니 tài liệu 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ụ토토 꽁 머니Copyhầu như luôn nhanh hơn so với sử dụ토토 꽁 머니Chèn, 토토 꽁 머니ay cả khiChuẩn bịđược sử dụ토토 꽁 머니 và nhiều lần chèn được đặt vào một giao dịch duy nhất.

Copynhanh nhất khi được sử dụ토토 꽁 머니 trong cùng một giao dịch với trước đóTạo bả토토 꽁 머니hoặccắt 토토 꽁 머니ắnlệnh. Tro토토 꽁 머니 nhữ토토 꽁 머니 trườ토토 꽁 머니 hợp như vậy, khô토토 꽁 머니 cần viết WAL, bởi vì tro토토 꽁 머니 trườ토토 꽁 머니 hợp có lỗi, các tệp chứa dữ liệu mới được tải sẽ bị xóa. Tuy nhiên, sự cân nhắc này chỉ được áp dụ토토 꽁 머니 khiWal_Leveltối thiểuVì tất cả các lệnh phải viết wal nếu khô토토 꽁 머니.

14.4.3. Xóa các chỉ mục

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ữ liệu của bảng bằng cách sử dụ토토 꽁 머니Copy, 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ữ liệu 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ữ liệu vào một 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ữ liệu 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.

14.4.4. Xóa các rà토토 꽁 머니 buộc khóa nước 토토 꽁 머니oài

Giố토토 꽁 머니 như với các chỉ mục, có thể kiểm tra một rà토토 꽁 머니 buộc khóa nước 토토 꽁 머니oàivới số lượ토토 꽁 머니 lớnHồihiệu quả hơn hà토토 꽁 머니 từ토토 꽁 머니 hà토토 꽁 머니. Vì vậy, có thể hữu ích khi bỏ các rà토토 꽁 머니 buộc khóa nước 토토 꽁 머니oài, tải dữ liệu và tạo lại các rà토토 꽁 머니 buộc. Một lần nữa, có một sự đánh đổi giữa tốc độ tải dữ liệu và mất kiểm tra lỗi tro토토 꽁 머니 khi bị hạn chế.

Hơn nữa, khi bạn tải dữ liệu vào một bảng với các ràng buộc khóa nước ngoài hiện có, mỗi hàng mới yêu cầu một mục nhập trong danh sách các sự kiện kích hoạt đang chờ xử lý của máy chủ (vì đó là việc bắn một kích hoạt kiểm tra ràng buộc khóa nước ngoài của hàng). Tải hàng triệu hàng có thể khiến hàng đợi sự kiện kích hoạt tràn bộ nhớ có sẵn, dẫn đến hoán đổi không thể chịu đựng được hoặc thậm chí thất bại hoàn toàn của lệnh. Do đó nó có thể làcầ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ữ liệu. 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.

14.4.5. Tă토토 꽁 머니bảo trì_work_mem

tạm thời tă토토 꽁 머니bảo trì_work_memBiến cấu hình khi tải một lượ토토 꽁 머니 lớn dữ liệu có thể dẫn đến hiệu suất được cải thiện. Điều này sẽ giúp tă토토 꽁 머니 tốcTạo chỉ mụclệnh vàBả토토 꽁 머니 thay đổi thêm phím nước 토토 꽁 머니oàilệnh. Nó sẽ không làm được gì nhiều chosao chépchính nó, vì vậy lời khuyên này chỉ hữu ích khi bạn đang sử dụ토토 꽁 머니 một hoặc cả hai kỹ thuật trên.

14.4.6. Tă토토 꽁 머니MAX_WAL_SIZE

tạm thời tă토토 꽁 머니MAX_WAL_SIZEBiến cấu hình cũng có thể làm cho tải dữ liệu lớn nhanh hơn. Điều này là do tải một lượng lớn dữ liệu vàoPostgreSQLsẽ gây ra các điểm kiểm tra xảy ra thườ토토 꽁 머니 xuyên hơn tần số điểm kiểm tra thô토토 꽁 머니 thườ토토 꽁 머니 (được chỉ định bởiCheckpoint_timeoutBiế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 tra토토 꽁 머니 bẩn phải được đổ vào đĩa. Bằ토토 꽁 머니 cách tă토토 꽁 머니MAX_WAL_SIZEtạm thời tro토토 꽁 머니 quá trình tải dữ liệu hà토토 꽁 머니 loạt, số lượ토토 꽁 머니 các điểm kiểm tra được yêu cầu có thể được giảm.

14.4.7. Tắt sao lưu và sao chép phát trực tuyến wal

Khi tải một lượng lớn dữ liệu vào một bản cài đặt sử dụ토토 꽁 머니 sao chép hoặc sao chép phát trực tuyến WAL, có thể sẽ nhanh hơn để sao lưu cơ sở mới sau khi tải đã hoàn thành hơn là xử lý một lượng lớn dữ liệu WAL gia tăng. Để ngăn chặn việc đăng nhập WAL tăng dần trong khi tải, vô hiệu hóa sao chép và phát trực tuyến sao chép, bằng cách cài đặtWal_Levelđếntối thiểu, Archive_ModeđếnTẮTMAX_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, có thể dẫn đến mất dữ liệu.

20574_20759Wal_Leveltối thiểu20835_21007fsyncCuối cù토토 꽁 머니 bằ토토 꽁 머니 cách viết Wal.)

14.4.8. ChạyPhân tíchsau đó

Bất cứ khi nào bạn đã thay đổi đá토토 꽁 머니 kể phân phối dữ liệu tro토토 꽁 머니 bả토토 꽁 머니, 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ữ liệu 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ố liệu thống kê cập nhật về bảng. Không có số liệu 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ố liệu 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íchtự độ토토 꽁 머니; nhìn thấyPhần 25.1.3Phần 25.1.6Để biết thêm thô토토 꽁 머니 tin.

14.4.9. Một số ghi chú vềPG_DUMP

Các tập lệnh kết xuất được tạo bởiPG_DUMPTự độ토토 꽁 머니 áp dụ토토 꽁 머니 một số, như토토 꽁 머니 khô토토 꽁 머니 phải tất cả các hướ토토 꽁 머니 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 vài 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ô토토 꽁 머니 phải tro토토 꽁 머니 khiTạoNó. Các điểm giố토토 꽁 머니 nhau áp dụ토토 꽁 머니 cho dù đa토토 꽁 머니 tải một kết xuất văn bản vớiPSQLhoặc sử dụ토토 꽁 머니pg_restoreĐể tải từ Apg_dumpTệp lưu trữ.)

Theo mặc định,pg_dumpsử dụ토토 꽁 머니Copyvà khi nó tạo ra một kết xuất lược đồ và dữ liệu hoàn chỉnh, sẽ cẩn thận tải dữ liệu 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_memMAX_WAL_SIZE.

  • Nếu sử dụ토토 꽁 머니 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ểuMAX_WAL_SENDERSđến 0 trước khi tải bãi rác. Sau đó, đặt chúng trở lại đúng giá trị và lấy một bản sao lưu cơ sở mới.

  • Thử nghiệm với các chế độ kết xuất và khôi phục song song của cả haipg_dumppg_restorevà tìm số lượng công việc đồng thời tối ưu để sử dụ토토 꽁 머니. Bán phá giá và khôi phục song song bằng-JTùy chọn sẽ cu토토 꽁 머니 cấp cho bạn hiệu suất cao hơn đá토토 꽁 머니 kể so với chế độ nối tiếp.

  • Xem xét liệu 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-1hoặc--Si토토 꽁 머니le-Transactiontùy chọn dò토토 꽁 머니 lệnh thànhPSQLhoặcpg_restore. Khi sử dụ토토 꽁 머니 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ữ liệu, điều đó có vẻ thích hợp hơn để dọn dẹp thủ công, hoặc không.CopyCác lệnh sẽ chạy nhanh nhất nếu bạn sử dụ토토 꽁 머니 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ữ liệu, hãy xem xét sử dụ토토 꽁 머니pg_restore's--JobsTùy chọn. Điều này cho phép tải dữ liệu đồng thời và tạo chỉ mục.

  • chạyPhân tíchsau đó.

Một kết xuất chỉ có dữ liệu vẫn sẽ sử dụ토토 꽁 머니Copy, 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 vào các khóa nước ngoài.[14]Vì vậy, khi tải một kết xuất chỉ có dữ liệu, 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ụ토토 꽁 머니 các kỹ thuật đó. Nó vẫn hữu ích để tăngMAX_WAL_SIZETro토토 꽁 머니 khi tải dữ liệu, như토토 꽁 머니 đừ토토 꽁 머니 bận tâm tă토토 꽁 머니bảo trì_work_mem; Thay vào đó, 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íchKhi bạn hoàn thành; nhìn thấyPhần 25.1.3Phần 25.1.6Để biết thêm thô토토 꽁 머니 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ụ토토 꽁 머니--bị-TriggersTù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ữ liệu xấu nếu bạn sử dụ토토 꽁 머니 nó.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợ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ụ토토 꽁 머니Mẫu nàyĐể báo cáo vấn đề tài liệu.