REINDEX - Các chỉ kèo bóng đá pháp xây dựng lại
Reindex [(Tùy chọn
[, ...])] index | kèo bóng đá pháp | Lược đồ [đồng thời]tên
Reindex [(Tùy chọn
[, ...])] Cơ sở dữ liệu | Hệ thống [đồng thời] [tên
]WHERETùy chọn
có thể là một trong số:đồng thời [Boolean
] Không gian kèo bóng đá phápnew_tablespace
Verbose [Boolean
]
Reindex
Xây dựng lại một chỉ kèo bóng đá pháp bằng cách sử dụng dữ liệu được lưu trữ trong bảng của chỉ kèo bóng đá pháp, thay thế bản sao cũ của chỉ kèo bóng đá pháp. Có một số kịch bản để sử dụng11173_11182
:
11330_11527Reindex
Cung cấp phương thức phục hồi.
Một chỉ kèo bóng đá pháp đã trở thànhBloatedHồi, đó là nó chứa nhiều trang trống hoặc gần như trống. Điều này có thể xảy ra với các chỉ kèo bóng đá pháp B-cây trongPostgreSQLTrong kèo bóng đá pháp mẫu truy cập không phổ biến nhất định.Reindex
11948_12077Phần 24.2Để biết thêm thông tin.
Bạn đã thay đổi tham số lưu trữ (như fillfactor) cho một chỉ kèo bóng đá pháp và muốn đảm bảo rằng sự thay đổi đã có hiệu lực đầy đủ.
Nếu bản dựng chỉ kèo bóng đá pháp không thành công vớiđồng thời
Tùy chọn, chỉ kèo bóng đá pháp này bị bỏ lại làkhông hợp lệ. Các chỉ kèo bóng đá pháp như vậy là vô dụng nhưng có thể thuận tiện khi sử dụngReindex
để xây dựng lại chúng. Lưu ý rằng chỉ12771_12786
có thể thực hiện bản dựng đồng thời trên một chỉ kèo bóng đá pháp không hợp lệ.
index
Tạo lại chỉ kèo bóng đá pháp được chỉ định. Hình thức này củaReindex
Không thể được thực thi bên trong khối giao dịch khi được sử dụng với chỉ kèo bóng đá pháp được phân vùng.
13370_13377
Tái tạo tất cả các chỉ kèo bóng đá pháp của bảng được chỉ định. Nếu bảng có thứ cấpbánh mì nướngkèo bóng đá pháp, cũng được tái phát. Hình thức này củaReindex
Không thể được thực thi bên trong khối giao dịch khi được sử dụng với kèo bóng đá pháp được phân vùng.
lược đồ
tái tạo tất cả các chỉ kèo bóng đá pháp của lược đồ được chỉ định. Nếu một bảng của lược đồ này có thứ cấpbánh mì nướngBảng, cũng được tái hiện. Các chỉ kèo bóng đá pháp trên danh kèo bóng đá pháp hệ thống chia sẻ cũng được xử lý. Hình thức này củaReindex
Không thể được thực thi bên trong khối giao dịch.
Cơ sở dữ liệu
Tái tạo tất cả các chỉ kèo bóng đá pháp trong cơ sở dữ liệu hiện tại, ngoại trừ danh kèo bóng đá pháp hệ thống. Các chỉ kèo bóng đá pháp trên danh kèo bóng đá pháp hệ thống không được xử lý. Hình thức này củaReindex
Không thể được thực thi bên trong khối giao dịch.
System
Tái tạo tất cả các chỉ kèo bóng đá pháp trên danh kèo bóng đá pháp hệ thống trong cơ sở dữ liệu hiện tại. Các chỉ kèo bóng đá pháp trên các danh kèo bóng đá pháp hệ thống được chia sẻ được bao gồm. Chỉ kèo bóng đá pháp trên bảng người dùng không được xử lý. Hình thức này củaReindex
Không thể được thực thi bên trong khối giao dịch.
tên
Tên của chỉ kèo bóng đá pháp, bảng hoặc cơ sở dữ liệu cụ thể sẽ được tái hiện. Tên chỉ kèo bóng đá pháp và bảng có thể được định mức lược đồ. Hiện tại,Cơ sở dữ liệu Reindex
vàHệ thống Reindex
Chỉ có thể tái hiện cơ sở dữ liệu hiện tại. Tham số của họ là tùy chọn và nó phải khớp với tên của cơ sở dữ liệu hiện tại.
đồng thời
Khi tùy chọn này được sử dụng,PostgreSQLsẽ xây dựng lại chỉ kèo bóng đá pháp mà không cần bất kỳ khóa nào ngăn chặn các phần chèn, cập nhật hoặc xóa đồng thời trên bảng; trong khi một chỉ số tiêu chuẩn xây dựng lại khóa ghi (nhưng không đọc) trên bảng cho đến khi hoàn thành. Có một số cảnh báo để biết khi sử dụng tùy chọn này - xemXây dựng lại các chỉ kèo bóng đá pháp đồng thờibên dưới.
cho kèo bóng đá pháp bảng tạm thời,Reindex
luôn không hòa đồng, vì không có phiên nào khác có thể truy cập chúng và Reindex không hòa âm rẻ hơn.
không gian kèo bóng đá pháp
Chỉ định rằng các chỉ kèo bóng đá pháp sẽ được xây dựng lại trên một không gian bảng mới.
Verbose
In báo cáo tiến độ khi mỗi chỉ kèo bóng đá pháp được tái hiện.
Boolean
Chỉ định tùy chọn đã chọn nên được bật hoặc tắt. Bạn có thể viếtTRUE
, trên
hoặc1
Để bật tùy chọn vàSai
, TẮT
16954_169610
Để vô hiệu hóa nó. TheBoolean
Giá trị cũng có thể được bỏ qua, trong trường hợp đóTRUE
được giả định.
new_tablespace
Không gian bảng nơi các chỉ kèo bóng đá pháp sẽ được xây dựng lại.
17457_17584REINDEX INDEX
hoặckèo bóng đá pháp Reindex
.
Mọi thứ khó khăn hơn nếu bạn cần phục hồi từ tham nhũng của một chỉ kèo bóng đá pháp trên bảng hệ thống. Trong trường hợp này, điều quan trọng đối với hệ thống là không sử dụng bất kỳ chỉ số nghi ngờ nào. .-P
Tùy chọn, ngăn nó sử dụng các chỉ kèo bóng đá pháp cho tra cứu danh kèo bóng đá pháp hệ thống.
Một cách để làm điều này là tắt máy chủ và khởi động một người dùng duy nhấtPostgreSQLMáy chủ với-P
Tùy chọn bao gồm trên dòng lệnh của nó. Sau đó,Cơ sở dữ liệu Reindex
, Hệ thống Reindex
, kèo bóng đá pháp Reindex
hoặcREINDEX INDEX
có thể được ban hành, tùy thuộc vào số lượng bạn muốn xây dựng lại. Nếu nghi ngờ, hãy sử dụngHệ thống Reindex
Để chọn Tái thiết tất cả các chỉ kèo bóng đá pháp hệ thống trong cơ sở dữ liệu. Sau đó thoát khỏi phiên máy chủ người dùng đơn và khởi động lại máy chủ thông thường. XemPostgresTrang tham chiếu để biết thêm thông tin về cách tương tác với giao diện máy chủ đơn lẻ.
Ngoài ra, một phiên máy chủ thông thường có thể được bắt đầu bằng-P
Bao gồm trong kèo bóng đá pháp tùy chọn dòng lệnh của nó. Phương thức để thực hiện điều này khác nhau giữa kèo bóng đá pháp máy khách, nhưng trong tất cảlibpq-kèo bóng đá pháp khách hàng dựa trên, có thể đặtpgoptions
Biến môi trường thành-P
Trước khi bắt đầu máy khách. Lưu ý rằng mặc dù phương pháp này không yêu cầu khóa kèo bóng đá pháp máy khách khác, nhưng vẫn có thể khôn ngoan để ngăn người dùng khác kết nối với cơ sở dữ liệu bị hư hỏng cho đến khi sửa chữa hoàn thành.
Reindex
tương tự như sự sụt giảm và tạo lại chỉ kèo bóng đá pháp ở chỗ nội dung chỉ kèo bóng đá pháp được xây dựng lại từ đầu. Tuy nhiên, các cân nhắc khóa là khá khác nhau.Reindex
Khóa viết nhưng không đọc bảng cha mẹ của chỉ kèo bóng đá pháp. Nó cũng mất mộtAccess Exclusive
Khóa chỉ kèo bóng đá pháp cụ thể đang được xử lý, sẽ chặn đọc rằng cố gắng sử dụng chỉ kèo bóng đá pháp đó. Cụ thể, người lập kế hoạch truy vấn cố gắng lấyChia sẻ truy cập
Khóa trên mọi chỉ kèo bóng đá pháp của bảng, bất kể truy vấn, và vì vậyReindex
Khối hầu như bất kỳ truy vấn nào ngoại trừ một số truy vấn đã chuẩn bị có kế hoạch đã được lưu trữ và không sử dụng chỉ số này. Ngược lại,Drop Index
Trong giây lát làquyền truy cập độc quyền
Khóa trên kèo bóng đá pháp cha mẹ, chặn cả hai lần ghi và đọc. Tiếp theoTạo chỉ kèo bóng đá pháp
Khóa viết nhưng không đọc; Vì chỉ kèo bóng đá pháp không có ở đó, không có đọc nào sẽ cố gắng sử dụng nó, có nghĩa là sẽ không có chặn nhưng các lần đọc có thể bị buộc vào các lần quét tuần tự đắt tiền.
trong khiReindex
Đang chạy,search_pathđược thay đổi tạm thời thànhpg_catalog, pg_temp
.
Tái hiện một chỉ kèo bóng đá pháp hoặc bảng yêu cầu códuy trì
Đặc quyền trên kèo bóng đá pháp. Lưu ý rằng trong khiReindex
Trên một chỉ kèo bóng đá pháp hoặc bảng được phân vùng yêu cầu códuy trì
Đặc quyền trên bảng được phân vùng, kèo bóng đá pháp lệnh như vậy bỏ qua kiểm tra đặc quyền khi xử lý kèo bóng đá pháp phân vùng riêng lẻ. Tái hiện một lược đồ hoặc cơ sở dữ liệu đòi hỏi phải là chủ sở hữu của lược đồ hoặc cơ sở dữ liệu đó hoặc có đặc quyền củapg_maintain
Vai trò. Lưu ý cụ thể rằng do đó, những người không giám sát có thể xây dựng lại các chỉ kèo bóng đá pháp của các bảng thuộc sở hữu của người dùng khác. Tuy nhiên, như một ngoại lệ đặc biệt,Cơ sở dữ liệu Reindex
, Lược đồ Reindex
vàHệ thống Reindex
Sẽ bỏ qua các chỉ kèo bóng đá pháp trên các danh kèo bóng đá pháp được chia sẻ trừ khi người dùng códuy trì
Đặc quyền trên danh kèo bóng đá pháp.
Các chỉ kèo bóng đá pháp được phân vùng hoặc bảng phân vùng được hỗ trợ vớiREINDEX INDEX
hoặckèo bóng đá pháp Reindex
, tương ứng. Mỗi phân vùng của mối quan hệ phân vùng được chỉ định được tái phát trong một giao dịch riêng biệt. Các lệnh đó không thể được sử dụng bên trong một khối giao dịch khi làm việc trên bảng hoặc chỉ kèo bóng đá pháp được phân vùng.
Khi sử dụngKhông gian kèo bóng đá pháp
mệnh đề vớiReindex
Trên một chỉ kèo bóng đá pháp hoặc bảng được phân vùng, chỉ các tài liệu tham khảo không gian bảng của các phân vùng lá được cập nhật. Vì các chỉ kèo bóng đá pháp được phân vùng không được cập nhật, nên sử dụng riêngChỉ thay đổi kèo bóng đá pháp
Trên chúng để bất kỳ phân vùng mới nào được đính kèm kế thừa không gian bảng mới. Khi thất bại, nó có thể không chuyển tất cả các chỉ kèo bóng đá pháp sang không gian bảng mới. RECKINGED Lệnh sẽ xây dựng lại tất cả các phân vùng của lá và di chuyển các chỉ kèo bóng đá pháp chưa được xử lý trước đó sang không gian bảng mới.
nếulược đồ
, Cơ sở dữ liệu
hoặcSystem
được sử dụng vớikhông gian kèo bóng đá pháp
, Quan hệ hệ thống bị bỏ qua và mộtcảnh báo
sẽ được tạo. Các chỉ kèo bóng đá pháp trên các bảng bánh mì nướng được xây dựng lại, nhưng không được chuyển sang không gian bảng mới.
Xây dựng lại một chỉ kèo bóng đá pháp có thể can thiệp vào hoạt động thường xuyên của cơ sở dữ liệu. Thông thườngPOSTGRESQL23856_24403
PostgreSQLHỗ trợ các chỉ kèo bóng đá pháp xây dựng lại với khóa ghi tối thiểu. Phương thức này được gọi bằng cách chỉ địnhđồng thời
Tùy chọnReindex
. Khi tùy chọn này được sử dụng,PostgreSQLphải thực hiện hai lần quét bảng cho mỗi chỉ kèo bóng đá pháp cần được xây dựng lại và chờ chấm dứt tất cả các giao dịch hiện có có khả năng sử dụng chỉ kèo bóng đá pháp. Phương pháp này đòi hỏi nhiều công việc hơn so với việc xây dựng lại chỉ kèo bóng đá pháp tiêu chuẩn và mất nhiều thời gian hơn để hoàn thành vì cần phải chờ các giao dịch chưa hoàn thành có thể sửa đổi chỉ kèo bóng đá pháp. Tuy nhiên, vì nó cho phép các hoạt động bình thường tiếp tục trong khi chỉ số đang được xây dựng lại, phương pháp này rất hữu ích cho việc xây dựng lại các chỉ số trong môi trường sản xuất. Tất nhiên, tải thêm CPU, bộ nhớ và I/O được áp đặt bởi chỉ số xây dựng lại có thể làm chậm các hoạt động khác.
Các bước sau đây xảy ra trong một sự tái phát đồng thời. Mỗi bước được chạy trong một giao dịch riêng biệt. Nếu có nhiều chỉ kèo bóng đá pháp được xây dựng lại, thì mỗi lần lặp bước qua tất cả các chỉ kèo bóng đá pháp trước khi chuyển sang bước tiếp theo.
Một định nghĩa chỉ số thoáng qua mới được thêm vào danh kèo bóng đá pháppg_index
. Định nghĩa này sẽ được sử dụng để thay thế chỉ số cũ. MỘTCập nhật chia sẻ độc quyền
khóa ở cấp độ phiên được thực hiện trên các chỉ kèo bóng đá pháp được tái phát cũng như các bảng liên quan của chúng để ngăn chặn bất kỳ sửa đổi lược đồ nào trong khi xử lý.
Đường chuyền đầu tiên để xây dựng chỉ kèo bóng đá pháp được thực hiện cho mỗi chỉ kèo bóng đá pháp mới. Khi chỉ kèo bóng đá pháp được xây dựng, cờ của nóPG_INDEX.INDISREADY
được chuyển sangHồiTRUEHồiĐể làm cho nó sẵn sàng để chèn, làm cho nó hiển thị cho các phiên khác sau khi giao dịch thực hiện bản dựng kết thúc. Bước này được thực hiện trong một giao dịch riêng cho mỗi chỉ kèo bóng đá pháp.
Sau đó, lần thứ hai được thực hiện để thêm các bộ dữ liệu được thêm vào trong khi vượt qua đầu tiên đang chạy. Bước này cũng được thực hiện trong một giao dịch riêng cho mỗi chỉ kèo bóng đá pháp.
Tất cả các ràng buộc đề cập đến chỉ kèo bóng đá pháp được thay đổi để chỉ định nghĩa chỉ số mới và tên của các chỉ kèo bóng đá pháp được thay đổi. Tại thời điểm này,pg_index.indisvalid
được chuyển sangTRUEcho chỉ kèo bóng đá pháp mới và đếnHồifalseHồiĐối với cái cũ và sự vô hiệu của bộ đệm được thực hiện khiến tất cả kèo bóng đá pháp phiên tham chiếu chỉ số cũ bị vô hiệu.
Các chỉ kèo bóng đá pháp cũ cópg_index.indisready
Đã chuyển sangMạnh27490_27497HàngĐể ngăn chặn bất kỳ phần chèn mới nào, sau khi chờ các truy vấn chạy có thể tham chiếu chỉ kèo bóng đá pháp cũ hoàn thành.
Các chỉ kèo bóng đá pháp cũ bị bỏ. TheCập nhật chia sẻ độc quyền
Khóa phiên cho các chỉ kèo bóng đá pháp và bảng được phát hành.
Nếu có vấn đề phát sinh trong khi xây dựng lại các chỉ kèo bóng đá pháp, chẳng hạn như vi phạm tính duy nhất trong một chỉ kèo bóng đá pháp duy nhất,Reindex
Lệnh sẽ thất bại nhưng bỏ lại phía saukhông hợp lệHồiChỉ kèo bóng đá pháp mới ngoài phần đã tồn tại trước. Chỉ số này sẽ bị bỏ qua cho các kèo bóng đá pháp đích truy vấn vì nó có thể không đầy đủ; Tuy nhiên, nó vẫn sẽ tiêu thụ cập nhật chi phí. ThePSQL \ D
Lệnh sẽ báo cáo một chỉ kèo bóng đá pháp nhưkhông hợp lệ
:
postgres =# \ d tab Bảng "public.tab" Cột | Loại | Sửa đổi --------+---------+----------- col | Số nguyên | Chỉ kèo bóng đá pháp: Btree (col) "IDX" "IDX_CCNEW" Btree (col) không hợp lệ
Nếu chỉ kèo bóng đá pháp được đánh dấukhông hợp lệ
được hậu tốCCNew
, sau đó nó tương ứng với chỉ kèo bóng đá pháp thoáng qua được tạo trong quá trình hoạt động đồng thời và phương thức khôi phục được đề xuất là bỏ nó bằng cách sử dụngDrop Index
, sau đó thửReindex đồng thời
Một lần nữa. Nếu chỉ kèo bóng đá pháp không hợp lệ thay vào đó là hậu tốccold
, nó tương ứng với chỉ số ban đầu không thể bỏ được; Phương pháp phục hồi được đề xuất là chỉ bỏ chỉ kèo bóng đá pháp đã nói, vì việc xây dựng lại đã thành công.
Các bản dựng chỉ kèo bóng đá pháp chính quy cho phép các bản dựng chỉ kèo bóng đá pháp thông thường khác trên cùng một bảng xảy ra đồng thời, nhưng chỉ có một bản dựng chỉ kèo bóng đá pháp đồng thời có thể xảy ra trên bảng tại một thời điểm. Trong cả hai trường hợp, trong khi đó, không có loại sửa đổi lược đồ khác trên bảng. Một điểm khác biệt khác là một thông thườngkèo bóng đá pháp Reindex
hoặcREINDEX INDEX
Lệnh có thể được thực hiện trong một khối giao dịch, nhưngReindex đồng thời
không thể.
Giống như bất kỳ giao dịch dài nào,Reindex
Trên kèo bóng đá pháp có thể ảnh hưởng đến bộ dữ liệu nào có thể được loại bỏ bằng cách đồng thờiVACUUM
Trên bất kỳ kèo bóng đá pháp nào khác.
Hệ thống Reindex
không hỗ trợđồng thời
Vì các danh kèo bóng đá pháp hệ thống không thể được tái hiện đồng thời.
Hơn nữa, các chỉ kèo bóng đá pháp cho các ràng buộc loại trừ không thể được tái hiện đồng thời. Nếu một chỉ kèo bóng đá pháp như vậy được đặt tên trực tiếp trong lệnh này, một lỗi sẽ được nêu ra. Nếu một bảng hoặc cơ sở dữ liệu với các chỉ kèo bóng đá pháp ràng buộc loại trừ được tái phát đồng thời, các chỉ kèo bóng đá pháp đó sẽ bị bỏ qua. (Có thể làm lại các chỉ kèo bóng đá pháp như vậy mà không cầnđồng thời
Tùy chọn.)
mỗi phụ trợ chạyReindex
sẽ báo cáo tiến trình của nó trongPG_STAT_ProTHER_CREATE_INDEX
30748_30761Phần 27.4.4Để biết chi tiết.
xây dựng lại một chỉ kèo bóng đá pháp duy nhất:
REINDEX INDEX My_index;
xây dựng lại tất cả các chỉ kèo bóng đá pháp trên bảngmy_table
:
kèo bóng đá pháp Reindex my_table;
31276_31380
$xuất pgoptions = "-p"
$PSQL bị hỏng_db
31552_31620
31632_31760
kèo bóng đá pháp Reindex đồng thời my_broken_table;
Không cóReindex
Lệnh trong tiêu chuẩn SQL.
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 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 liệu.