Абнаўленне PostgreSQL 14.4 з выпраўленнем пашкоджання індэксаў

Сфармаваны які карэктуе выпуск СКБД PostgreSQL 14.4, у якім ухіленая сур'ёзная праблема, пры вызначаных абставінах якая прыводзіць да незаўважнага пашкоджання дадзеных у азначніках пры выкананні каманд "CREATE INDEX CONCURRENTLY" і "REINDEX CONCURRENTLY". У створаных пры дапамозе ўказаных каманд індэксах могуць быць не ўлічаны некаторыя запісы, што прывядзе да пропуску асобных радкоў пры выкананні SELECT-запытаў з прыцягненнем праблемных індэксаў.

Для вызначэння факту пашкоджання індэксаў B-tree можна выкарыстоўваць каманду "pg_amcheck -heapallindexed имя_БД". У выпадку выяўлення памылак або прымянення ў мінулых выпусках каманд "CREATE INDEX CONCURRENTLY" і "REINDEX CONCURRENTLY" з іншымі тыпамі індэксаў (GiST, GIN і да т.п.) пасля абнаўлення да версіі 14.4 рэкамендуецца выканаць пераіндэксацыю ўтылітай "reindexdb -all" або камандай "REINDEX CONCURRENTLY имя_индекса".

Праблеме схільная толькі галінка 14.x, у якую былі ўключаны аптымізацыі, якія выключаюць пры выкананні аперацыі VACUUM некаторыя транзакцыі, злучаныя з выкананнем "CREATE INDEX CONCURRENTLY" і "REINDEX CONCURRENTLY". У выніку ўжывання гэтых аптымізацый у створаныя ў рэжыме "CONCURRENTLY" азначнікі не пападалі некаторыя змешчаныя ў heap-памяці картэжы, якія былі абноўленыя ці зрэзаныя падчас стварэння азначніка.

Крыніца: opennet.ru

Дадаць каментар