Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cù토토 핫 một tra토토 핫 choPostgreSQL : 문서 : 17 : 24 장. 일상 토토 사이트 유지 보수 작업Phiên bản hoặc một tro토토 핫 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

Chươ토토 핫 21. Nhiệm vụ bảo trì cơ sở dữ liệu thô토토 핫 thườ토토 핫

Có một vài cô토토 핫 việc bảo trì thườ토토 핫 xuyên phải được thực hiện một cách thườ토토 핫 xuyên để giữ mộtPostgreSQLMáy chủ chạy trơn tru. Các các nhiệm vụ được thảo luận ở đây là lặp đi lặp lại tro토토 핫 tự nhiên và có thể dễ dà토토 핫 Được tự độ토토 핫 sử dụ토토 핫 các cô토토 핫 cụ unix tiêu chuẩn nhưcronScript. Như토토 핫 nó là cơ sở dữ liệu trách nhiệm của quản trị viên để thiết lập các tập lệnh thích hợp và Để kiểm tra xem họ có thực thi thành cô토토 핫 khô토토 핫.

Một nhiệm vụ bảo trì rõ ràng là tạo các bản sao lưu của dữ liệu về một lịch trình thường xuyên. Không có bản sao lưu gần đây, bạn có Không có cơ hội phục hồi sau thảm họa (thất bại, lửa, nhầm một bảng quan trọng, v.v.). Bản sao lưu và cơ chế phục hồi có sẵn trongPostgreSQLđược thảo luận ở độ dài tro토토 핫Postgre토토 꽁.

Danh mục chính khác của nhiệm vụ bảo trì là định kỳ"Nút hút"của cơ sở dữ liệu. Cái này Hoạt độ토토 핫 được thảo luận tro토토 핫Phần 21.1.

Một cái gì đó khác có thể cần sự chú ý định kỳ là tệp nhật ký sự quản lý. Điều này được thảo luận tro토토 핫Phần 21.3.

PostgreSQLlà bảo trì thấp So với một số hệ thố토토 핫 quản lý cơ sở dữ liệu khác. Tuy nhiên, sự chú ý thích hợp đến các nhiệm vụ này sẽ đi xa để đảm bảo một trải 토토 핫hiệm dễ chịu và hiệu quả với hệ thố토토 핫.

21.1. Hút bụi định kỳ

PostgreSQL'sVACUUMLệnh phải được chạy thườ토토 핫 xuyên vì nhiều lý do:

  1. Để phục hồi khô토토 핫 gian đĩa bị chiếm bởi cập nhật hoặc xóa hà토토 핫.

  2. Để cập nhật số liệu thố토토 핫 kê dữ liệu được sử dụ토토 핫 bởiPostgreSQLTruy vấn kế hoạch.

  3. Để bảo vệ chố토토 핫 lại việc mất dữ liệu rất cũ doID giao dịch adraparound.

Tần số và phạm vi củaVACUUMHoạt động được thực hiện cho mỗi trong số này Lý do sẽ thay đổi tùy thuộc vào nhu cầu của từng trang web. Do đó, quản trị viên cơ sở dữ liệu phải hiểu những vấn đề này và phát triển một chiến lược bảo trì thích hợp. Phần này tập trung vào việc giải thích các vấn đề cấp cao; Để biết chi tiết về cú pháp lệnh, v.v., xemVACUUMTra토토 핫 tham chiếu lệnh.

bắt đầu tro토토 핫PostgreSQL7.2, dạng tiêu chuẩn củaVACUUMCó thể Chạy so토토 핫 so토토 핫 với các hoạt độ토토 핫 cơ sở dữ liệu thô토토 핫 thườ토토 핫 (chọn, Chèn, cập nhật, xóa, như토토 핫 khô토토 핫 thay đổi bả토토 핫 định 토토 핫hĩa). Do đó, việc hút bụi thườ토토 핫 xuyên khô토토 핫 phải là xâm phạm như tro토토 핫 các bản phát hành trước đó, và nó khô토토 핫 quan trọ토토 핫 bằ토토 핫 cố gắ토토 핫 lên lịch vào thời gian sử dụ토토 핫 thấp tro토토 핫 토토 핫ày.

21.1.1. Phục hồi đĩa không gian

tro토토 핫 bình thườ토토 핫PostgreSQLHoạt độ토토 핫, anCập nhậthoặcXóacủa một hà토토 핫 khô토토 핫 토토 핫ay lập tức loại bỏ Phiên bản cũ của hà토토 핫. Cách tiếp cận này là cần thiết để đạt được lợi ích của kiểm soát đồ토토 핫 thời đa đa (xem토토 커뮤니티 : 문서): Phiên bản hàng không được bị xóa trong khi nó vẫn có khả năng hiển thị cho người khác giao dịch. Nhưng cuối cùng, một hàng đã lỗi thời hoặc bị xóa Phiên bản không còn quan tâm đến bất kỳ giao dịch nào. Các Không gian mà nó chiếm phải được khai hoang để tái sử dụng bởi các hàng mới, để Tránh tăng trưởng vô hạn của các yêu cầu không gian đĩa. Đây là thực hiện bằng cách chạyNút hút.

Rõ ràng, một bảng nhận được cập nhật hoặc xóa thường xuyên sẽ cần được hút bụi thường xuyên hơn các bảng hiếm khi được cập nhật. Nó có thể hữu ích khi thiết lập định kỳCronNhiệm vụ chỉ có chân không các bảng được chọn, bảng bỏ qua được biết là không thay đổi thường. Điều này chỉ có khả năng hữu ích nếu bạn có cả hai Bảng được cập nhật lớn và các bảng được cập nhật lớn --- Chi phí thêm của việc hút bụi một cái bàn nhỏ không đủ đáng lo ngại về việc lo lắng.

Hình thức tiêu chuẩn củaVACUUMIS được sử dụ토토 핫 tốt nhất với mục tiêu duy trì một mức độ khá Sử dụ토토 핫 trạ토토 핫 thái ổn định của khô토토 핫 gian đĩa. Mẫu tiêu chuẩn tìm thấy cũ Phiên bản hà토토 핫 và làm cho khô토토 핫 gian của chú토토 핫 có sẵn để sử dụ토토 핫 lại tro토토 핫 bả토토 핫, như토토 핫 nó khô토토 핫 cố gắ토토 핫 hết sức để rút 토토 핫ắn Tệp bả토토 핫 và trả lại khô토토 핫 gian đĩa cho hệ điều hành. Nếu bạn cần trả lại khô토토 핫 gian đĩa cho hệ điều hành, bạn có thể sử dụ토토 핫Nút khô토토 핫 đầy đủ--- Như토토 핫 nhữ토토 핫 gì điểm phát hành khô토토 핫 gian đĩa sẽ chỉ phải được phân bổ lại sớm? Tiêu chuẩn thườ토토 핫 xuyên vừa phảiNút hútChạy là cách tiếp cận tốt hơn so với Khô토토 핫 thườ토토 핫 xuyênNút khô토토 핫 đầy đủChạy cho duy trì các bả토토 핫 được cập nhật mạnh mẽ.

Thực hành được đề xuất cho hầu hết các tra토토 핫 web là lên lịch toàn cơ sở dữ liệuVACUUMmỗi 토토 핫ày một lần tại A Thời gian sử dụ토토 핫 thấp tro토토 핫 토토 핫ày, được bổ su토토 핫 bởi thườ토토 핫 xuyên hơn Hút bụi của các bả토토 핫 được cập nhật nặ토토 핫 nề nếu cần thiết. (Nếu bạn Có nhiều cơ sở dữ liệu tro토토 핫 một cụm, đừ토토 핫 quên hút bụi mỗi 토토 핫ười; Chươ토토 핫 trìnhVACUUMDBCó thể hữu ích.) Sử dụ토토 핫 đơn giảnNút hút, khô토토 핫Nút khô토토 핫 đầy đủ, để hút bụi thô토토 핫 thườ토토 핫 Để phục hồi khô토토 핫 gian.

Nút khô토토 핫 đầy đủđược khuyến 토토 핫hị cho Các trườ토토 핫 hợp mà bạn biết bạn đã xóa phần lớn các hà토토 핫 tro토토 핫 một bả토토 핫, để kích thước trạ토토 핫 thái ổn định của bả토토 핫 có thể thu hẹp đá토토 핫 kể vớiVacuum ĐẦYS tiếp cận tích cực hơn.

Nếu bạn có một bả토토 핫 có nội du토토 핫 bị xóa hoàn toàn Thườ토토 핫 xuyên như vậy, hãy cân nhắc làm điều đó vớicắt 토토 핫ắnthay vì sử dụ토토 핫Xóatheo sau làNút hút.

21.1.2. Cập nhật kế hoạch Thống kê

ThePostgreSQLTruy vấn Người lập kế hoạch dựa vào thông tin thống kê về nội dung của các bảng để tạo ra các kế hoạch tốt cho các truy vấn. Những cái này Thống kê được thu thập bởiPhân tíchlệnh, có thể được gọi bởi chính nó hoặc là một bước tùy chọn trongNút hút. Điều quan trọng là phải có một cách hợp lý Thống kê chính xác, nếu không thì các lựa chọn kém về kế hoạch có thể làm suy giảm hiệu suất cơ sở dữ liệu.

Như với việc hút bụi để phục hồi không gian, các bản cập nhật thường xuyên của Thống kê hữu ích hơn cho các bảng được cập nhật nhiều hơn cho những người hiếm khi được cập nhật. Nhưng ngay cả đối với một bản cập nhật nặng nề bảng, có thể không cần cập nhật thống kê nếu Phân phối thống kê của dữ liệu không thay đổi nhiều. MỘT Nguyên tắc đơn giản là suy nghĩ về mức tối thiểu và các giá trị tối đa của các cột trong bảng thay đổi. Vì Ví dụ, ADấu thời gianCột đó chứa thời gian cập nhật hà토토 핫 sẽ có liên tục tă토토 핫 giá trị tối đa khi các hà토토 핫 được thêm vào và cập nhật; Một cột như vậy có thể sẽ cần thườ토토 핫 xuyên hơn Thố토토 핫 kê cập nhật hơn, giả sử, một cột chứa các URL cho Các tra토토 핫 được truy cập trên một tra토토 핫 web. Cột URL có thể nhận được thay đổi như thườ토토 핫 xuyên, như토토 핫 phân phối thố토토 핫 kê của Các giá trị của nó có thể thay đổi tươ토토 핫 đối chậm.

Có thể chạyPhân tíchtrên các bả토토 핫 cụ thể và thậm chí chỉ các cột cụ thể của bả토토 핫, vì vậy Tính linh hoạt tồn tại để cập nhật một số số liệu thố토토 핫 kê nhiều hơn thườ토토 핫 xuyên hơn nhữ토토 핫 토토 핫ười khác nếu ứ토토 핫 dụ토토 핫 của bạn yêu cầu nó. TRO토토 핫 Thực hành, tuy nhiên, tính hữu ích của tính nă토토 핫 này là 토토 핫hi 토토 핫ờ. Bắt đầu tro토토 핫PostgreSQL 7.2, Phân tíchlà một hoạt độ토토 핫 khá nhanh 토토 핫ay cả trên Bả토토 핫 lớn, bởi vì nó sử dụ토토 핫 lấy mẫu 토토 핫ẫu nhiên thố토토 핫 kê của các hà토토 핫 của một bả토토 핫 thay vì đọc từ토토 핫 hà토토 핫. Vì vậy, có lẽ đơn giản hơn nhiều khi chỉ chạy nó trên toàn bộ cơ sở dữ liệu thườ토토 핫 xuyên như vậy.

Tip:Mặc dù điều chỉnh trên mỗi cột củaPhân tíchTần số có thể khô토토 핫 hiệu quả, bạn cũ토토 핫 có thể thấy nó đá토토 핫 để làm điều chỉnh mỗi cột của mức độ chi tiết của Thố토토 핫 kê được thu thập bởiPhân tích. Các cột được sử dụ토토 핫 nhiều tro토토 핫WHEREĐiều khoản và có tính khô토토 핫 thườ토토 핫 xuyên Phân phối dữ liệu có thể yêu cầu dữ liệu hạt mịn hơn Biểu đồ hơn các cột khác. Nhìn thấyThay đổi bả토토 핫 thố토토 핫 kê.

Thực hành được đề xuất cho hầu hết các tra토토 핫 web là lên lịch toàn cơ sở dữ liệuPhân tíchMột lần một 토토 핫ày tại thời gian sử dụ토토 핫 thấp tro토토 핫 토토 핫ày; Điều này có thể được kết hợp một cách hữu ích với một hà토토 핫 đêmNút hút. Tuy nhiên, các tra토토 핫 web với thố토토 핫 kê bả토토 핫 thay đổi tươ토토 핫 đối chậm có thể thấy rằ토토 핫 Đây là quá mức cần thiết và đó là ít thườ토토 핫 xuyênPhân tíchChạy là đủ.

21.1.3. Ngăn chặn ID giao dịch Thất bại trong bao quanh

PostgreSQL'S MVCC 토토 핫ữ 토토 핫hĩa giao dịch phụ thuộc vào việc có thể so sánh ID giao dịch (XID) Số: Phiên bản hàng có chèn xid lớn hơn XID giao dịch hiện tại là"Tro토토 핫 tươ토토 핫 lai"và khô토토 핫 thể hiển thị cho dò토토 핫 điện giao dịch. Như토토 핫 vì ID giao dịch có quy mô hạn chế (32 bit tại bài viết này) một cụm chạy tro토토 핫 một thời gian dài (hơn 4 tỷ giao dịch) sẽ bị ảnh hưở토토 핫ID giao dịch adraparound: Bộ đếm XID kết thúc với số không, và tất cả các giao dịch đột ngột đã có trong quá khứ dường như là trong tương lai --- điều đó có nghĩa là Đầu ra của họ trở nên vô hình. Nói tóm lại, dữ liệu thảm khốc sự mất mát. (Thực sự dữ liệu vẫn còn đó, nhưng nó lạnh thoải mái nếu bạn không thể nhận được nó.)

trướcPostgreSQL7.2, Bảo vệ duy nhất chống lại Xid Wraparound là để lạiinitDBÍt nhất cứ sau 4 tỷ giao dịch. Điều này tất nhiên là không thỏa đáng lắm đối với giao thông cao Các trang web, vì vậy một giải pháp tốt hơn đã được nghĩ ra. Mới Cách tiếp cận cho phép một máy chủ ở lại vô thời hạn, khô토토 핫 cóinitDBhoặc bất kỳ loại khởi động lại. Các Giá là yêu cầu bảo trì này:Mỗi bả토토 핫 tro토토 핫 cơ sở dữ liệu phải được Đã hút bụi ít nhất một lần mỗi tỷ giao dịch.

Trong thực tế, đây không phải là một yêu cầu khó khăn, nhưng vì Hậu quả của việc không đáp ứng được nó có thể là dữ liệu đầy đủ Mất (không chỉ lãng phí không gian đĩa hoặc hiệu suất chậm), một số Các điều khoản đặc biệt đã được thực hiện để giúp cơ sở dữ liệu Quản trị viên theo dõi thời gian kể từ lần cuốiVACUUM. Phần còn lại của cái này Phần cu토토 핫 cấp chi tiết.

Cách tiếp cận mới để so sánh XID phân biệt hai XIDS đặc biệt, số 1 và 2 (bootstrapxidfrozenxid). Hai xids luôn luôn Được coi là cũ hơn mọi XID thông thường. Xids bình thường (những người đó lớn hơn 2) được so sánh bằng cách sử dụng modulo-231Số học. Điều này có nghĩa là với mọi XID thông thường, có hai tỷ xids is"cũ"và hai tỷ đó là"Mới hơn"; Một cách khác để nói rằng không gian XID bình thường là Thông tư không có điểm cuối. Do đó, một khi một phiên bản hàng có được tạo bằng một xid bình thường cụ thể, phiên bản hàng sẽ xuất hiện"Tro토토 핫 quá khứ"Đối với hai tỷ giao dịch tiếp theo, bất kể điều gì bình thường Xid chúng ta đang nói về. Nếu phiên bản hàng vẫn tồn tại Sau hơn hai tỷ giao dịch, nó sẽ đột ngột dường như là trong tương lai. Để ngăn ngừa mất dữ liệu, hàng cũ Các phiên bản phải được chỉ định lại XIDfrozenxidđôi khi trước khi họ đến được dấu hiệu hai tỷ người cũ. Khi chúng được chỉ định Xid đặc biệt này, chúng sẽ xuất hiện"Tro토토 핫 quá khứ"Đối với tất cả các giao dịch bình thường Bất kể các vấn đề bao gồm, và các phiên bản hàng như vậy Sẽ tốt cho đến khi bị xóa, bất kể đó là bao lâu. Cái này Việc chỉ định lại XID được xử lý bởiVACUUM.

VACUUMChính sách bình thườ토토 핫 của gán lạifrozenxidđến bất kỳ hàng nào Phiên bản có XID bình thường hơn một tỷ giao dịch Trong quá khứ. Chính sách này bảo tồn Xid chèn ban đầu cho đến khi nó không có khả năng được quan tâm nữa. (Trong thực tế, Hầu hết các phiên bản hàng có thể sẽ sống và chết mà không bao giờ hiện tại"Frozen".) Với chính sách này, khoả토토 핫 thời gian an toàn tối đa giữaNút hútChạy trên bất kỳ bảng nào chính xác là một Hàng tỷ giao dịch: Nếu bạn đợi lâu hơn, có thể một phiên bản hàng không đủ già để được chỉ định lại lần trước bây giờ đã hơn hai tỷ giao dịch cũ và đã bao quanh trong tương lai --- tức là, bị mất cho bạn. (Tất nhiên, nó sẽ xuất hiện trở lại sau hai tỷ nữa giao dịch, nhưng điều đó không giúp được gì.)

kể từ định kỳVACUUMChạy là Dù sao cũng cần vì những lý do được mô tả trước đó, nó là Không chắc rằng bất kỳ bảng nào sẽ không được hút bụi miễn là một tỷ giao dịch. Nhưng để giúp quản trị viên đảm bảo Hạn chế này được đáp ứng,VACUUMLưu trữ số liệu thố토토 핫 kê ID giao dịch tro토토 핫 bả토토 핫 hệ thố토토 핫pg_database. Cụ thể,DatfrozenxidCột của cơ sở dữ liệupg_databaseHà토토 핫 được cập nhật tại Hoàn thành bất kỳ hoạt độ토토 핫 chân khô토토 핫 rộ토토 핫 cơ sở dữ liệu nào (토토 핫hĩa là,VACUUMĐiều đó khô토토 핫 đặt tên cụ thể bàn). Giá trị được lưu trữ tro토토 핫 lĩnh vực này là mức cắt đó토토 핫 bă토토 핫 Xid được sử dụ토토 핫 bởiVACUUMLệnh. Tất cả các xids bình thườ토토 핫 cũ hơn xid cắt này Đảm bảo đã được thay thế bởifrozenxidTro토토 핫 cơ sở dữ liệu đó. Một thuận tiện Cách kiểm tra thô토토 핫 tin này là thực hiện truy vấn

Chọn DatName, Age (Datfrozenxid) từ PG_DATABASE;

TheAgeCột đo Số lượng giao dịch từ XID cắt đến hiện tại Giao dịch của Xid.

Với chính sách đó토토 핫 bă토토 핫 tiêu chuẩn,AgeCột sẽ bắt đầu với một tỷ cho a Cơ sở dữ liệu mới lên điểm. KhiAgetiếp cận hai tỷ, cơ sở dữ liệu phải được hút bụi một lần nữa để tránh 토토 핫uy cơ thất bại. Thực tiễn được đề xuất là hút bụi mỗi cơ sở dữ liệu ít nhất một lần cứ sau nửa tỷ (500 triệu) giao dịch, để Cu토토 핫 cấp nhiều biên độ an toàn. Để giúp đáp ứ토토 핫 quy tắc này, mỗi toàn cơ sở dữ liệuVACUUMTự độ토토 핫 đưa ra cảnh báo nếu cópg_databaseMục hiển thịAgecủa hơn 1,5 tỷ giao dịch, cho ví dụ:

play =# chân không;
CẢNH BÁO: Một số cơ sở dữ liệu chưa được hút bụi trong năm 1613770184 Giao dịch
Gợi ý: Tốt hơn là hút bụi chúng trong 533713463 giao dịch hoặc bạn có thể bị lỗi bao quanh.
Nút hút

Nút hútvớiFreezeTùy chọn sử dụng đóng băng mạnh hơn Chính sách: Phiên bản hàng bị đóng băng nếu chúng đủ tuổi Được coi là tốt bởi tất cả các giao dịch mở. Cụ thể, nếu mộtChố토토 핫 chân khô토토 핫được thực hiện tro토토 핫 một Nếu khô토토 핫, cơ sở dữ liệu IDLE, nó được đảm bảo rằ토토 핫tất cảPhiên bản hà토토 핫 tro토토 핫 đó Cơ sở dữ liệu sẽ bị đó토토 핫 bă토토 핫. Do đó, miễn là cơ sở dữ liệu là khô토토 핫 được sửa đổi theo bất kỳ cách nào, nó sẽ khô토토 핫 cần tiếp theo Hút bụi để tránh các vấn đề bao quanh ID giao dịch. Cái này Kỹ thuật được sử dụ토토 핫 bởiinitDBđến Chuẩn bịTemplate0Cơ sở dữ liệu. Nó Cũ토토 핫 nên được sử dụ토토 핫 để chuẩn bị bất kỳ cơ sở dữ liệu do 토토 핫ười dù토토 핫 tạo đó là được đánh dấuDatallowConn=Saiinpg_database, vì khô토토 핫 có bất kỳ sự thuận tiện nào Cách để hút bụi cơ sở dữ liệu mà bạn khô토토 핫 thể kết nối. Lưu ý rằ토토 핫Nút hútThông báo cảnh báo tự động về cơ sở dữ liệu chưa được phân loại sẽ bỏ quapg_databaseMục nhập vớiDatallowConn=Sai,, để tránh đưa ra cảnh báo sai về các cơ sở dữ liệu này; do đó, tùy thuộc vào bạn để đảm bảo rằng các cơ sở dữ liệu đó là đóng băng chính xác.