یک نسخه اصلاحی از PostgreSQL DBMS 14.4 ایجاد شده است که یک مشکل جدی را که تحت شرایط خاص منجر به خرابی نامرئی داده ها در نمایه ها در هنگام اجرای دستورات "CREATE INDEX CONCURRENTLY" و "REINDEX CONCURRENTLY" می شود، از بین می برد. در نمایههایی که با استفاده از دستورات مشخص شده ایجاد میشوند، ممکن است برخی از رکوردها در نظر گرفته نشوند، که منجر به از دست رفتن ردیفها در هنگام اجرای پرسوجوهای SELECT که شامل نمایههای مشکلدار هستند، میشود.
برای تعیین اینکه آیا شاخص های B-tree آسیب دیده اند، می توانید از دستور "pg_amcheck –heapallindexed db_name" استفاده کنید. اگر پس از بهروزرسانی به نسخه 14.4، خطاهایی شناسایی شد یا دستورات «CREATE INDEX CONCURRENTLY» و «REINDEX CONCURRENTLY» در نسخههای قبلی با انواع دیگر نمایهها (GiST، GIN و غیره) پس از بهروزرسانی به نسخه XNUMX استفاده شد، توصیه میشود با استفاده از «ایندکس مجدد انجام شود. ابزار reindexdb —all یا دستور "REINDEX CONCURRENTLY index_name."
این مشکل فقط شاخه 14.x را تحت تأثیر قرار می دهد، که شامل بهینه سازی هایی می شود که برخی از تراکنش های مرتبط با اجرای «CREATE INDEX CONCURRENTLY» و «REINDEX CONCURRENTLY» را در هنگام اجرای عملیات VACUUM حذف می کند. در نتیجه این بهینهسازیها، نمایههای ایجاد شده در حالت CONCURRENTLY شامل چند تاپل در حافظه پشتهای که در حین ایجاد فهرست بهروزرسانی یا کوتاه شدهاند، نمیشوند.
منبع: opennet.ru