PostgreSQLCơ sở dữ kèo bóng đá pháp yêu cầu bảo trì định kỳ được gọi làHút bụi. Đối với nhiều cài đặt, nó là đủ để cho phép hút bụi bởiDaemon Autovacuum, được mô tả trongPhần 24.1.6. Bạn có thể cần điều chỉnh kèo bóng đá pháp tham số tự động hóa được mô tả ở đó để có được kết quả tốt nhất cho tình huống của bạn.VACUUM
kèo bóng đá pháp lệnh, thường được thực thi theo lịch trình củaCronhoặcLập lịch tác vụScript. Để thiết lập hút bụi được quản lý thủ công đúng cách, điều cần thiết là phải hiểu kèo bóng đá pháp vấn đề được thảo luận trong một vài tiểu mục tiếp theo.
PostgreSQL'sVACUUMLệnh phải xử lý mỗi bảng một cách thường xuyên vì nhiều lý do:
Mỗi lý do này ra lệnh thực hiệnVACUUM
Hoạt động có tần số và phạm vi khác nhau, như được giải thích trong kèo bóng đá pháp tiểu mục sau.
Có hai biến thể củaNút hút
: StandardVACUUM
vàNút kèo bóng đá pháp đầy đủ
. Nút kèo bóng đá pháp đầy đủ
có thể lấy lại nhiều kèo bóng đá pháp gian đĩa hơn nhưng chạy chậm hơn nhiều. Ngoài ra, dạng tiêu chuẩn củaVACUUM
Có thể chạy song song với các hoạt động cơ sở dữ kèo bóng đá pháp sản xuất. (Các lệnh nhưChọn
, Chèn
, Cập nhật
vàXóa
sẽ tiếp tục hoạt động bình thường, mặc dù bạn sẽ không thể sửa đổi định nghĩa của bảng với kèo bóng đá pháp lệnh nhưBảng thay đổi
Trong khi nó đang được hút bụi.)Nút kèo bóng đá pháp đầy đủ
yêu cầuAccess Exclusive
Khóa trên bảng nó đang hoạt động và do đó kèo bóng đá pháp thể được thực hiện song song với việc sử dụng bảng khác. Nói chung, do đó, quản trị viên nên cố gắng sử dụng tiêu chuẩnVACUUM
và tránhNút kèo bóng đá pháp đầy đủ
.
VACUUM
Tạo một lượng lưu lượng I/O đáng kể, có thể gây ra hiệu suất kém cho kèo bóng đá pháp phiên hoạt động khác. Có kèo bóng đá pháp tham số cấu hình có thể được điều chỉnh để giảm tác động hiệu suất của việc hút bụi nền - xemPhần 19.4.4.
inPostgreSQL, anCập nhật
hoặcXóa
của một hàng kèo bóng đá pháp ngay lập tức xóa phiên bản cũ của hàng. Cách tiếp cận này là cần thiết để đạt được những lợi ích của kiểm soát đồng thời đa nhân (MVCC, xemChương 13): Không được xóa phiên bản hàng trong khi nó vẫn có khả năng hiển thị cho kèo bóng đá pháp giao dịch khác. Nhưng cuối cùng, một phiên bản hàng đã lỗi thời hoặc bị xóa không còn được quan tâm đến bất kỳ giao dịch nào.VACUUM
.
Hình thức tiêu chuẩn củaNút hút
Xóa kèo bóng đá pháp phiên bản hàng chết trong kèo bóng đá pháp bảng và chỉ mục và đánh dấu không gian có sẵn để tái sử dụng trong tương lai. Tuy nhiên, nó sẽ không trả lại không gian cho hệ điều hành, ngoại trừ trong trường hợp đặc biệt khi một hoặc nhiều trang ở cuối bảng trở nên hoàn toàn miễn phí và có thể dễ dàng lấy khóa bảng độc quyền.Nút kèo bóng đá pháp đầy đủ
Tích cực nén kèo bóng đá pháp bảng bằng cách viết một phiên bản hoàn chỉnh mới của tệp bảng không có không gian chết. Điều này giảm thiểu kích thước của bảng, nhưng có thể mất nhiều thời gian.
Mục tiêu thông thường của việc hút bụi thông thường là thực hiện tiêu chuẩnVACUUM
S thường đủ để tránh cầnNút kèo bóng đá pháp đầy đủ
. Daemon Autovacuum cố gắng hoạt động theo cách này, và trên thực tế sẽ kèo bóng đá pháp bao giờ phát hànhNút kèo bóng đá pháp đầy đủ
. Theo cách tiếp cận này, ý tưởng không phải là giữ kèo bóng đá pháp bảng ở kích thước tối thiểu của chúng, mà là để duy trì việc sử dụng không gian đĩa ổn định: mỗi bảng chiếm không gian tương đương với kích thước tối thiểu của nó cộng với nhiều không gian được sử dụng giữa kèo bóng đá pháp lần chạy chân không.Nút kèo bóng đá pháp đầy đủ
có thể được sử dụng để thu nhỏ một bảng trở lại kích thước tối thiểu của nó và trả lại kèo bóng đá pháp gian đĩa cho hệ điều hành, kèo bóng đá pháp có nhiều điểm nào nếu bảng sẽ phát triển trở lại trong tương lai. Do đó, tiêu chuẩn thường xuyên vừa phảiVACUUM
Chạy là một cách tiếp cận tốt hơn so với kèo bóng đá pháp thường xuyênNút kèo bóng đá pháp đầy đủ
Chạy để duy trì kèo bóng đá pháp bảng cập nhật mạnh mẽ.
Một số quản trị viên thích tự lên lịch hút bụi, ví dụ như thực hiện tất cả công việc vào ban đêm khi tải thấp. Khó khăn khi thực hiện hút bụi theo một lịch trình cố định là nếu một bảng có sự tăng đột biến bất ngờ trong hoạt động cập nhật, nó có thể bị bồng bềnh đến mứcNút kèo bóng đá pháp đầy đủ
thực sự cần thiết để đòi lại kèo bóng đá pháp gian. Sử dụng daemon Autovacuum làm giảm bớt vấn đề này, vì lịch trình daemon hút bụi tự động để đáp ứng với hoạt động cập nhật.Nút hút
s dự kiến sẽ thực hiện phần lớn công việc khi tải là điển hình.
Đối với những người không sử dụng autovacuum, một cách tiếp cận điển hình là lên lịch cho toàn cơ sở dữ kèo bóng đá phápNút hút
Một lần một ngày trong khoảng thời gian sử dụng thấp, được bổ sung bằng cách hút bụi thường xuyên hơn của kèo bóng đá pháp bảng được cập nhật nhiều khi cần thiết. .Nút hút
mỗi người; Chương trìnhVACUUMDBcó thể hữu ích.
trơnNút hút
có thể không thỏa đáng khi một bảng chứa số lượng lớn kèo bóng đá pháp phiên bản hàng chết do cập nhật lớn hoặc xóa hoạt động. Nếu bạn có một bảng như vậy và bạn cần phải đòi lại không gian đĩa dư mà nó chiếm, bạn sẽ cần sử dụngNút kèo bóng đá pháp đầy đủ
hoặc cách kháccụmhoặc một trong kèo bóng đá pháp biến thể viết bảng củaBảng thay đổi. kèo bóng đá pháp lệnh này viết lại toàn bộ bản sao mới của bảng và xây dựng kèo bóng đá pháp chỉ mục mới cho nó.Access Exclusive
khóa. Lưu ý rằng họ cũng tạm thời sử dụng không gian đĩa phụ xấp xỉ bằng kích thước của bảng, vì kèo bóng đá pháp bản sao cũ của bảng và kèo bóng đá pháp chỉ mục không thể được phát hành cho đến khi kèo bóng đá pháp bản mới hoàn tất.
Nếu bạn có một bảng có toàn bộ nội dung bị xóa trên cơ sở định kỳ, hãy xem xét việc thực hiện nó vớicắt ngắnthay vì sử dụngXóa
theo sau làVACUUM
. cắt ngắn
Xóa toàn bộ nội dung của bảng ngay lập tức mà kèo bóng đá pháp yêu cầu tiếp theoVACUUM
hoặcNút kèo bóng đá pháp đầy đủ
Để đòi lại kèo bóng đá pháp gian đĩa chưa sử dụng. Nhược điểm là ngữ nghĩa MVCC nghiêm ngặt bị vi phạm.
ThePostgreSQLTruy vấn kế hoạch dựa vào thông tin thống kê về nội dung của kèo bóng đá pháp bảng để tạo kèo bóng đá pháp kế hoạch tốt cho kèo bóng đá pháp truy vấn. Những thống kê này đượ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 trongVACUUM
. Điều quan trọng là phải có số kèo bóng đá pháp thống kê chính xác hợp lý, nếu không các lựa chọn kém về kế hoạch có thể làm giảm hiệu suất cơ sở dữ kèo bóng đá pháp.
Daemon Autovacuum, nếu được bật, sẽ tự động phát hànhPhân tích
kèo bóng đá pháp lệnh bất cứ khi nào nội dung của bảng đã thay đổi đủ. Tuy nhiên, kèo bóng đá pháp quản trị viên có thể thích dựa vào lịch trình thủ côngPhân tích
Hoạt động, đặc biệt nếu người ta biết rằng hoạt động cập nhật trên bảng sẽ không ảnh hưởng đến số kèo bóng đá pháp thống kê củaHồithú vịCột. Lịch trình daemonPhân tích
Nghiêm túc như là một hàm của số lượng hàng được chèn hoặc cập nhật; Nó không có kiến thức về việc kèo bóng đá pháp điều đó sẽ dẫn đến những thay đổi thống kê có ý nghĩa.
Tuples thay đổi trong các phân vùng và trẻ em kế thừa không kích hoạt phân tích trên bảng cha mẹ. Nếu bảng cha mẹ trống hoặc hiếm khi thay đổi, nó có thể không bao giờ được xử lý bằng ô tô và số kèo bóng đá pháp thống kê cho cây kế thừa nói chung sẽ không được thu thập.Phân tích
Trên bảng cha mẹ theo cách thủ công để cập nhật số kèo bóng đá pháp thống kê.
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 kê thường xuyên hữu ích hơn cho các bảng được cập nhật nhiều so với các bảng được cập nhật hiếm khi. Nhưng ngay cả đối với một bảng được cập nhật mạnh mẽ, có thể không cần cập nhật thống kê nếu phân phối dữ kèo bóng đá pháp thống kê không thay đổi nhiều.Dấu thời gian
Cột chứa thời gian cập nhật hàng sẽ có giá trị tối đa tăng liên tục khi kèo bóng đá pháp hàng được thêm và cập nhật; Một cột như vậy có thể sẽ cần kèo bóng đá pháp bản cập nhật thống kê thường xuyên hơn, giả sử, một cột chứa kèo bóng đá pháp URL cho kèo bóng đá pháp trang được truy cập trên một trang web.
Có thể chạyPhân tích
Trên các bảng cụ thể và thậm chí chỉ là các cột cụ thể của bảng, do đó, tính linh hoạt tồn tại để cập nhật một số số kèo bóng đá pháp thống kê thường xuyên hơn so với các cột khác nếu ứng dụng của bạn yêu cầu. Tuy nhiên, trong thực tế, tốt nhất là chỉ cần phân tích toàn bộ cơ sở dữ kèo bóng đá pháp, bởi vì nó là một hoạt động nhanh.Phân tích
Sử dụng lấy mẫu ngẫu nhiên thống kê của kèo bóng đá pháp hàng của bảng thay vì đọc từng hàng.
Mặc dù điều chỉnh trên mỗi cộtPhân tích
Tần suất có thể không hiệu quả, bạn có thể thấy đáng để điều chỉnh mỗi cột của mức độ chi tiết của các số kèo bóng đá pháp thống kê được thu thập bởiPhân tích
. kèo bóng đá pháp cột được sử dụng nhiều trongWHERE
Các điều khoản và có phân phối dữ kèo bóng đá pháp không đều có thể yêu cầu biểu đồ dữ kèo bóng đá pháp hạt mịn hơn so với các cột khác. Nhìn thấyThay đổi bảng thống kê
hoặc thay đổi mặc định toàn cơ sở dữ kèo bóng đá pháp bằng cách sử dụngdefault_statistic_targetTham số cấu hình.
Ngoài ra, theo mặc định, có thông tin hạn chế có sẵn về tính chọn lọc của các chức năng. Tuy nhiên, nếu bạn tạo một chỉ mục biểu thức sử dụng cuộc gọi chức năng, các số kèo bóng đá pháp thống kê hữu ích sẽ được thu thập về hàm, điều này có thể cải thiện đáng kể các kế hoạch truy vấn sử dụng chỉ mục biểu thức.
Daemon Autovacuum kèo bóng đá pháp phát hànhPhân tích
Các lệnh cho các bảng nước ngoài, vì nó không có phương tiện để xác định mức độ thường xuyên có thể hữu ích. Nếu các truy vấn của bạn yêu cầu số kèo bóng đá pháp thống kê trên các bảng nước ngoài để lập kế hoạch phù hợp, thì bạn nên chạy thủ công theo cách thủ côngPhân tích
kèo bóng đá pháp lệnh trên kèo bóng đá pháp bảng đó trên một lịch trình phù hợp.
Daemon Autovacuum kèo bóng đá pháp phát hànhPhân tích
lệnh cho kèo bóng đá pháp bảng được phân vùng. Cha mẹ kế thừa sẽ chỉ được phân tích nếu chính cha mẹ bị thay đổi - thay đổi đối với kèo bóng đá pháp bảng con không kích hoạt tự động trên bảng cha.Phân tích
Trên các bảng đó để cập nhật số kèo bóng đá pháp thống kê.
Vacuum duy trì Akèo bóng đá việtĐối với mỗi bảng để theo dõi các trang nào chỉ chứa các bộ dữ kèo bóng đá pháp được biết là có thể hiển thị cho tất cả các giao dịch hoạt động (và tất cả các giao dịch trong tương lai, cho đến khi trang được sửa đổi một lần nữa). Điều này có hai mục đích.
Thứ hai, nó cho phépPostgreSQLĐể trả lời một số truy vấn chỉ sử dụng chỉ mục, kèo bóng đá pháp tham chiếu đến bảng cơ bản. TừPostgreSQLChỉ mục kèo bóng đá pháp chứa thông tin khả năng hiển thị Tuple, một chỉ mục thông thường tìm nạp bộ tuple heap cho mỗi mục chỉ mục phù hợp, để kiểm tra xem có nên nhìn thấy bởi giao dịch hiện tại hay kèo bóng đá pháp. MỘTQuét chỉ có chỉ mục, mặt khác, kiểm tra bản đồ hiển thị trước. Nếu người ta biết rằng tất cả các bộ dữ kèo bóng đá pháp trên trang đều có thể nhìn thấy, có thể bỏ qua heap.
PostgreSQL'sMVCCngữ nghĩ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ó XID chèn lớn hơn XID của giao dịch hiện tại làTrong tương lai”và kèo bóng đá pháp nên hiển thị cho giao dịch hiện tại. Nhưng vì ID giao dịch có kích thước giới hạn (32 bit), một cụm chạy trong một thời gian dài (hơn 4 tỷ giao dịch) sẽ bị ảnh hưởngID giao dịch adraparoundTóm lại, mất dữ kèo bóng đá pháp thảm khốc.
Lý do hút bụi định kỳ giải quyết vấn đề làVACUUM
Sẽ đánh dấu kèo bóng đá pháp hàng làFrozen, chỉ ra rằng chúng được chèn vào một giao dịch đủ xa trong quá khứ rằng kèo bóng đá pháp tác động của giao dịch chèn chắc chắn sẽ được hiển thị cho tất cả kèo bóng đá pháp giao dịch hiện tại và tương lai. XID bình thường được so sánh bằng cách sử dụng modulo-232Số học. Điều này có nghĩa là đối với mỗi XID thông thường, có hai tỷ XID làMạnhcũHồivà hai tỷ đó làMới hơnxông; Một cách khác để nói rằng kèo bóng đá pháp gian XID bình thường là hình tròn kèo bóng đá pháp có điểm cuối.Trong quá khứĐối với hai tỷ giao dịch tiếp theo, bất kể chúng tôi đang nói đến XID bình thường nào. 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 nhiên xuất hiện trong tương lai.PostgreSQLDự trữ một xid đặc biệt,frozentransactionid
, không tuân theo kèo bóng đá pháp quy tắc so sánh XID thông thường và luôn được coi là cũ hơn mọi XID thông thường. kèo bóng đá pháp phiên bản hàng đông lạnh được xử lý như thể XID chèn làfrozentransactionid
, để chúng có vẻ làTrong quá khứ31340_31484
inPostgreSQLPhiên bản trước 9.4, đóng băng được thực hiện bằng cách thực sự thay thế XID chèn của một hàng bằngfrozentransactionid
, có thể nhìn thấy trong hàngxmin
Cột hệ thống. kèo bóng đá pháp phiên bản mới hơn chỉ cần đặt bit cờ, bảo tồn bản gốc của hàngxmin
để sử dụng pháp y có thể. Tuy nhiên, hàng vớixmin
bằngfrozentransactionid
(2) vẫn có thể được tìm thấy trong cơ sở dữ kèo bóng đá pháppg_upgrade'D từ kèo bóng đá pháp phiên bản Pre-9.4.
Ngoài ra, danh mục hệ thống có thể chứa kèo bóng đá pháp hàng vớixmin
bằngbootstraptransactionid
(1), chỉ ra rằng chúng đã được chèn trong giai đoạn đầu tiên củainitDB. GiốngfrozentransactionId
, XID đặc biệt này được coi là cũ hơn mọi XID thông thường.
VACUUM_FREEZE_MIN_AGEĐiều khiển giá trị xid phải bao nhiêu trước khi kèo bóng đá pháp hàng mang XID sẽ bị đóng băng. Việc tăng cài đặt này có thể tránh được công việc không cần thiết nếu kèo bóng đá pháp hàng sẽ bị đóng băng sẽ sớm được sửa đổi lại, nhưng việc giảm cài đặt này làm tăng số lượng giao dịch có thể trôi qua trước khi bảng phải được hút lại.
VACUUM
sử dụngkèo bóng đá việtĐể xác định trang nào của bảng phải được quét. Thông thường, nó sẽ bỏ qua kèo bóng đá pháp trang không có bất kỳ phiên bản hàng chết nào ngay cả khi kèo bóng đá pháp trang đó vẫn có thể có phiên bản hàng có giá trị XID cũ.Nút hút
S sẽ kèo bóng đá pháp luôn đóng băng mọi phiên bản hàng cũ trong bảng. Định kỳ,VACUUM
sẽ thực hiệnMáy hút bụi hung hăng, Chỉ bỏ qua kèo bóng đá pháp trang đó không chứa hàng chết cũng như bất kỳ giá trị XID hoặc MXID nào.VACUUM_FREEZE_TABLE_AGEđiều khiển khiVACUUM
33820_33971VACUUM_FREEZE_TABLE_AGE
trừVACUUM_FREEZE_MIN_AGE
. Cài đặtVACUUM_FREEZE_TABLE_AGE
đến 0 lựcVACUUM
Để sử dụng chiến lược tích cực hơn này cho tất cả kèo bóng đá pháp lần quét.
Thời gian tối đa mà một bảng có thể kèo bóng đá pháp có giá trị là hai tỷ giao dịch trừVACUUM_FREEZE_MIN_AGE
Giá trị tại thời điểm của chân không tích cực cuối cùng. Nếu nó không được đưa ra lâu hơn thế, mất dữ kèo bóng đá pháp có thể dẫn đến.autovacuum_freeze_max_age. (Điều này sẽ xảy ra ngay cả khi Autovacuum bị vô hiệu hóa.)
Điều này ngụ ý rằng nếu một bảng kèo bóng đá pháp được hút bụi, Autovacuum sẽ được gọi trên đó khoảng một lầnautovacuum_freeze_max_age
trừVACUUM_FREEZE_MIN_AGE
Giao dịch. Đối với kèo bóng đá pháp bảng thường xuyên được hút bụi cho mục đích cải tạo không gian, điều này ít quan trọng.autovacuum_freeze_max_age
hoặc giảmVACUUM_FREEZE_MIN_AGE
.
Tối đa hiệu quả choVACUUM_FREEZE_TABLE_AGE
là 0,95 *autovacuum_freeze_max_age
; Một cài đặt cao hơn thế sẽ được giới hạn tối đa.autovacuum_freeze_max_age
sẽ kèo bóng đá pháp có ý nghĩa vì một loại autovacuum chống Wraparound sẽ được kích hoạt tại thời điểm đó, và số nhân 0,95 để lại một số phòng thở để chạy thủ côngVACUUM
Trước khi điều đó xảy ra. Như một nguyên tắc,VACUUM_FREEZE_TABLE_AGE
nên được đặt thành một giá trị phần nào bên dướiautovacuum_freeze_max_age
, để lại khoảng cách đủ để được lên lịch thường xuyênNút hút
hoặc Autovacuum được kích hoạt bởi hoạt động xóa và cập nhật bình thường được chạy trong cửa sổ đó. Thiết lập nó quá gần có thể dẫn đến kèo bóng đá pháp ô tô chống quá pháp, mặc dù bảng gần đây đã được hút bụi để đòi lại không gian, trong khi kèo bóng đá pháp giá trị thấp hơn dẫn đến hút bụi tích cực thường xuyên hơn.
Nhược điểm duy nhất của việc tăngautovacuum_freeze_max_age
(vàVACUUM_FREEZE_TABLE_AGE
cùng với nó) làPG_XACT
vàpg_commit_ts
SubDirectories của cụm cơ sở dữ kèo bóng đá pháp sẽ có nhiều không gian hơn, vì nó phải lưu trữ trạng thái cam kết và (nếuTrack_Commit_Timestamp
được bật) dấu thời gian của tất cả kèo bóng đá pháp giao dịch trở lạiautovacuum_freeze_max_age
Horizon. Trạng thái cam kết sử dụng hai bit cho mỗi giao dịch, vì vậy nếuautovacuum_freeze_max_age
được đặt thành giá trị được phép tối đa là hai tỷ,PG_XACT
có thể được dự kiến sẽ tăng lên khoảng nửa gigabyte vàpg_commit_ts
đến khoảng 20GB. Nếu điều này là tầm thường so với tổng kích thước cơ sở dữ kèo bóng đá pháp của bạn, cài đặtautovacuum_freeze_max_age
Giá trị được phép tối đa của nó được khuyến nghị. Nếu kèo bóng đá pháp, hãy đặt nó tùy thuộc vào những gì bạn sẵn sàng cho phépPG_XACT
vàpg_commit_ts
Lưu trữ. (Mặc định, 200 triệu giao dịch, có nghĩa là khoảng 50MBPG_XACT
Lưu trữ và khoảng 2GBpg_commit_ts
lưu trữ.)
Một nhược điểm của việc giảmVACUUM_FREEZE_MIN_AGE
Có thể gây raNút hút
Để thực hiện công việc vô dụng: đóng băng phiên bản hàng là một sự lãng phí thời gian nếu hàng được sửa đổi ngay sau đó (khiến nó có được XID mới). Vì vậy, cài đặt phải đủ lớn để kèo bóng đá pháp hàng không bị đóng băng cho đến khi chúng không thể thay đổi nữa.
Để theo dõi tuổi của các XID không đóng băng lâu đời nhất trong cơ sở dữ kèo bóng đá pháp,Nút hút
Lưu trữ số kèo bóng đá pháp thống kê XID trong các bảng hệ thốngPG_Class
vàpg_database
. Cụ thể,relfrozenxid
Cột của bảngpg_ class
Hàng chứa Xid đóng băng được sử dụng bởi sự hung hăng cuối cùngNút hút
Đối với bảng đó. Tất cả kèo bóng đá pháp hàng được chèn bởi kèo bóng đá pháp giao dịch có XID cũ hơn XID cắt này được đảm bảo đã bị đóng băng.Datfrozenxid
Cột của cơ sở dữ kèo bóng đá pháppg_database
Hàng là giới hạn thấp hơn trên các XID không đóng băng xuất hiện trong cơ sở dữ kèo bóng đá pháp đó-nó chỉ là mức tối thiểu của mỗi bànrelfrozenxid
Giá trị trong cơ sở dữ kèo bóng đá pháp. Một cách thuận tiện để kiểm tra thông tin này là thực hiện các truy vấn như:
Chọn C.OID :: RegClass as tabl
TheAge
Cột đo số lượng giao dịch từ XID cắt đến XID của giao dịch hiện tại.
Nút hút
Thông thường chỉ quét kèo bóng đá pháp trang đã được sửa đổi kể từ chân không cuối cùng, nhưngrelfrozenxid
Chỉ có thể được nâng cao khi mọi trang của bảng có thể chứa XIDs kèo bóng đá pháp đóng băng được quét. Điều này xảy ra khirelfrozenxid
nhiều hơnVACUUM_FREEZE_TABLE_AGE
Giao dịch cũ, khiVACUUM
'sFreeze
Tùy chọn được sử dụng hoặc khi tất cả kèo bóng đá pháp trang chưa có tất cả đóng gói để yêu cầu hút bụi để loại bỏ kèo bóng đá pháp phiên bản hàng chết. KhiVACUUM
Quét mọi trang trong bảng chưa đóng gói, nó nên đặtAge (Relfrozenxid)
với giá trị chỉ nhiều hơn một chút so vớiVACUUM_FREEZE_MIN_AGE
Cài đặt đã được sử dụng (nhiều hơn bởi số lượng giao dịch bắt đầu kể từVACUUM
Bắt đầu). Nếu kèo bóng đá pháprelfrozenxid
-AdvancingVACUUM
được cấp trên bảng cho đến khiautovacuum_freeze_max_age
được đạt được, một Autovacuum sẽ sớm bị ép buộc cho bảng.
Nếu vì lý do nào đó Autovacuum không xóa XID cũ khỏi bảng, hệ thống sẽ bắt đầu phát ra các thông báo cảnh báo như thế này khi XIDS lâu đời nhất của cơ sở dữ kèo bóng đá pháp đạt mười một triệu giao dịch từ điểm bao quanh:
Cảnh báo: Cơ sở dữ kèo bóng đá pháp "MyDB" phải được hút bụi trong 10985967 Giao dịch
(một hướng dẫnVACUUM
nên khắc phục sự cố, như được đề xuất bởi gợi ý; Nhưng lưu ý rằngNút hút
phải được thực hiện bởi một siêu người dùng, nếu không nó sẽ không xử lý các danh mục hệ thống và do đó không thể tiến hành cơ sở dữ kèo bóng đá phápDatfrozenxid
.) Nếu những cảnh báo này bị bỏ qua, hệ thống sẽ ngừng hoạt động và từ chối bắt đầu bất kỳ giao dịch mới nào khi còn ít hơn 1 triệu giao dịch cho đến khi kết thúc:
Lỗi: Cơ sở dữ kèo bóng đá pháp không chấp nhận các lệnh để tránh mất dữ kèo bóng đá pháp bao quanh trong cơ sở dữ kèo bóng đá pháp "MyDB"
Biên độ an toàn chuyển đổi 1 triệu tồn tại để cho quản trị viên phục hồi mà không mất dữ kèo bóng đá pháp, bằng cách thực hiện thủ công yêu cầuNút hút
lệnh. Tuy nhiên, vì hệ thống sẽ không thực thi kèo bóng đá pháp lệnh khi nó đã chuyển sang chế độ tắt an toàn, nên cách duy nhất để làm điều này là dừng máy chủ và khởi động máy chủ ở chế độ người dùng đơn để thực thiNút hút
. Chế độ tắt máy kèo bóng đá pháp được thực thi ở chế độ người dùng đơn.PostgresTrang tham khảo để biết chi tiết về việc sử dụng chế độ người dùng đơn.
ID Multixactđược sử dụng để hỗ trợ khóa hàng bằng nhiều giao dịch. Vì chỉ có kèo bóng đá pháp gian giới hạn trong tiêu đề tuple để lưu trữ thông tin khóa, thông tin đó được mã hóa dưới dạngnhiều ID giao dịchhoặc hoàn toàn là ID Multixact, bất cứ khi nào có nhiều giao dịch đồng thời khóa một hàng. Thông tin về ID giao dịch nào được bao gồm trong bất kỳ ID đa dạng cụ thể nào được lưu trữ riêng trongpg_multixact
SubDirectory và chỉ ID đa biến xuất hiện trongxmax
Trường trong tiêu đề tuple. Giống như ID giao dịch, ID Multixact được triển khai dưới dạng bộ đếm 32 bit và lưu trữ tương ứng, tất cả đều yêu cầu quản lý lão hóa cẩn thận, dọn dẹp lưu trữ và xử lý bao quanh.
Bất cứ khi nàoNút hút
Quét bất kỳ phần nào của bảng, nó sẽ thay thế bất kỳ ID multixact nào mà nó gặp phải cũ hơnbởi một giá trị khác, có thể là giá trị bằng kèo bóng đá pháp, ID giao dịch duy nhất hoặc ID Multixact mới hơn. Đối với mỗi bảng,pg_ class
.relminmxid
Lưu trữ ID đa biến lâu đời nhất có thể vẫn xuất hiện trong bất kỳ tuple nào của bảng đó. Nếu giá trị này cũ hơnVACUUM_MULTIXACT_FREEZE_TABLE_AGE, một khoảng trống mạnh mẽ là bị ép buộc. Như đã thảo luận trong phần trước, một khoảng trống hung hăng có nghĩa là chỉ những trang được biết là toàn bộ sẽ bị bỏ qua.MXID_AGE ()
có thể được sử dụng trênpg_ class
.relMinMXID
Để tìm tuổi của nó.
hung hăngVACUUM
quét, bất kể nguyên nhân gây ra chúng, cho phép nâng cao giá trị cho bảng đó. Cuối cùng, vì tất cả các bảng trong tất cả các cơ sở dữ kèo bóng đá pháp được quét và các giá trị đaxact lâu đời nhất của chúng được nâng cao, có thể loại bỏ bộ lưu trữ trên đĩa cho các multixact cũ hơn.
Là một thiết bị an toàn, quét chân kèo bóng đá pháp tích cực sẽ xảy ra đối với bất kỳ bảng nào có Multixact-Age lớn hơnautovacuum_multixact_freeze_max_age. Quét chân không tích cực cũng sẽ diễn ra dần dần cho tất cả kèo bóng đá pháp bảng, bắt đầu với những bảng có độ tuổi đa dạng lâu đời nhất, nếu lượng không gian lưu trữ thành viên được sử dụng vượt quá 50% không gian lưu trữ có địa chỉ.
PostgreSQLCó tính năng tùy chọn nhưng rất được khuyến khích gọi làAutovacuum, có mục đích là tự động hóa việc thực hiệnVACUUM
vàPhân tích
lệnh. Khi được bật, kiểm tra autovacuum cho các bảng đã có một số lượng lớn các bộ dữ kèo bóng đá pháp được chèn, cập nhật hoặc xóa.Track_countsđược đặt thànhTRUE
. Trong cấu hình mặc định, tự động hóa được bật và kèo bóng đá pháp tham số cấu hình liên quan được đặt một cách thích hợp.
TheHồiDaemon AutovacuumHàngThực tế bao gồm nhiều quy trình. Có một quy trình daemon liên tục, được gọi làLauncher autovacuum, chịu trách nhiệm bắt đầuCông nhân AutovacuumQuy trình cho tất cả các cơ sở dữ kèo bóng đá pháp. Trình khởi chạy sẽ phân phối công việc theo thời gian, cố gắng khởi động một công nhân trong mỗi cơ sở dữ kèo bóng đá pháp mỗi cơ sở dữ kèo bóng đá phápAutovacuum_naptimegiây. (Do đó, nếu cài đặt cón
Cơ sở dữ kèo bóng đá pháp, một công nhân mới sẽ được ra mắt mỗiautovacuum_naptime
/n
giây.) Tối đaautovacuum_max_workerskèo bóng đá pháp quy trình công nhân được phép chạy cùng một lúc. Nếu có nhiều hơnautovacuum_max_workers
Cơ sở dữ kèo bóng đá pháp sẽ được xử lý, cơ sở dữ kèo bóng đá pháp tiếp theo sẽ được xử lý ngay khi công nhân đầu tiên hoàn thành. Mỗi quy trình của công nhân sẽ kiểm tra từng bảng trong cơ sở dữ kèo bóng đá pháp của nó và thực thiVACUUM
và/hoặcPhân tích
khi cần.log_autovacuum_min_durationCó thể được đặt để giám sát hoạt động của công nhân tự động.
Nếu một số bảng lớn, tất cả đều đủ điều kiện để hút bụi trong một khoảng thời gian ngắn, tất cả các công nhân tự động có thể bị chiếm giữ với hút bụi các bảng đó trong một thời gian dài. Điều này sẽ dẫn đến các bảng và cơ sở dữ kèo bóng đá pháp khác không được hút bụi cho đến khi một công nhân có sẵn.Max_ConnectionshoặcSuperuser_reserved_connectionsGiới hạn.
Bảng córelfrozenxid
Giá trị nhiều hơnautovacuum_freeze_max_ageGiao dịch cũ luôn được hút bụi (điều này cũng áp dụng cho kèo bóng đá pháp bảng có độ tuổi đóng băng tối đa đã được sửa đổi thông qua kèo bóng đá pháp tham số lưu trữ; xem bên dưới). Nếu khôngVACUUM
vượt quángưỡng chân kèo bóng đá pháp”, bảng được hút bụi. Ngưỡng chân kèo bóng đá pháp được xác định là:
ngưỡng chân không = ngưỡng cơ sở chân không + Hệ số tỷ lệ chân không * Số lượng bộ dữ kèo bóng đá pháp
trong đó ngưỡng cơ sở chân kèo bóng đá pháp làautovacuum_vacuum_threshold, Hệ số tỷ lệ chân kèo bóng đá pháp làautovacuum_vacuum_scale_factorvà số lượng tổng làpg_ class
.Reltuples
. Số lượng các bộ dữ kèo bóng đá pháp lỗi thời được lấy từ người thu thập thống kê;Cập nhật
vàXóa
Hoạt động. (Nó chỉ là bán chính xác vì một số thông tin có thể bị mất dưới tải nặng.) Nếurelfrozenxid
Giá trị của bảng nhiều hơnVACUUM_FREEZE_TABLE_AGE
Giao dịch cũ, một khoảng trống tích cực được thực hiện để đóng băng các bộ dữ kèo bóng đá pháp cũ và tiến bộrelfrozenxid
; Nếu không, chỉ có kèo bóng đá pháp trang đã được sửa đổi kể từ lần chân không cuối cùng được quét.
Để phân tích, một điều kiện tương tự được sử dụng: ngưỡng, được định nghĩa là:
Phân tích ngưỡng = Phân tích ngưỡng cơ sở + Phân tích Hệ số tỷ lệ * Số lượng bộ dữ kèo bóng đá pháp
được so sánh với tổng số bộ dữ kèo bóng đá pháp được chèn, cập nhật hoặc xóa kể từ lần cuốiPhân tích
.
Các bảng được phân vùng không trực tiếp lưu trữ các bộ dữ kèo bóng đá pháp và do đó không được xử lý bởi Autovacuum. .Phân tích
Trên kèo bóng đá pháp bảng được phân vùng và điều này có thể gây ra kèo bóng đá pháp kế hoạch dưới mức tối ưu cho kèo bóng đá pháp truy vấn tham chiếu thống kê bảng được phân vùng. Bạn có thể giải quyết vấn đề này bằng cách chạy thủ côngPhân tích
Trên các bảng được phân vùng khi chúng được điền lần đầu tiên và một lần nữa bất cứ khi nào phân phối dữ kèo bóng đá pháp trong các phân vùng của chúng thay đổi đáng kể.
Bảng tạm thời không thể được truy cập bằng AutovacUum. Do đó, nên thực hiện kèo bóng đá pháp hoạt động chân không và phân tích phù hợp thông qua kèo bóng đá pháp lệnh sql phiên.
Ngưỡng mặc định và kèo bóng đá pháp yếu tố tỷ lệ được lấy từPostgreSql.conf
, nhưng có thể ghi đè chúng (và nhiều tham số điều khiển tự động khác) trên cơ sở mỗi bảng; nhìn thấyTham số lưu trữĐể biết thêm thông tin. Nếu một cài đặt đã được thay đổi thông qua kèo bóng đá pháp tham số lưu trữ của bảng, giá trị đó được sử dụng khi xử lý bảng đó;Phần 19.10Để biết thêm chi tiết về cài đặt toàn cầu.
Khi nhiều công nhân đang chạy, kèo bóng đá pháp tham số độ trễ chi phí tự động (xemPhần 19.4.4) làCân bằngTrong số tất cả kèo bóng đá pháp công nhân đang điều hành, do đó, tổng tác động I/O trên hệ thống là như nhau bất kể số lượng công nhân thực sự đang chạy. Tuy nhiên, bất kỳ bảng công nhân nào có bảng có bàn mỗi bànAutovacuum_vacuum_cost_delay
hoặcAutovacuum_vacuum_cost_limit
Thông số lưu trữ đã được đặt kèo bóng đá pháp được xem xét trong thuật toán cân bằng.
Công nhân Autovacuum thường không chặn kèo bóng đá pháp lệnh khác. Nếu một quá trình cố gắng để có được một khóa xung đột vớiCập nhật chia sẻ độc quyền
53951_54059Bảng 13.2. Tuy nhiên, nếu Autovacuum đang chạy để ngăn chặn ID giao dịchpg_stat_activity
Xem kết thúc bằng(để ngăn chặn sự bao bọc)
), Autovacuum kèo bóng đá pháp tự động bị gián đoạn.
Thường xuyên chạy kèo bóng đá pháp lệnh có được khóa mâu thuẫn vớiCập nhật chia sẻ độc quyền
Khóa (ví dụ: phân tích) có thể ngăn chặn hiệu quả kèo bóng đá pháp ô tô không bao giờ hoàn thành.