F.2. amcheck â модÑÐ»Ñ Ñ Ð¸Ð½ÑÑÑÑменÑами, пÑовеÑÑÑÑими ÑелоÑÑноÑÑÑ ÑÐ°Ð±Ð»Ð¸Ñ Ð¸ индекÑов #
ÐодÑÐ»Ñ amcheck пÑедоÑÑавлÑÐµÑ ÑÑнкÑии, позволÑÑÑие пÑовеÑÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑкÑÑ ÑелоÑÑноÑÑÑ ÑÑÑÑкÑÑÑÑ Ð¾ÑноÑений.
ФÑнкÑии пÑовеÑки B-деÑева конÑÑолиÑÑÑÑ ÑазлиÑнÑе инваÑианÑÑ Ð² ÑÑÑÑкÑÑÑе пÑедÑÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð¿ÑеделÑннÑÑ
оÑноÑений. ÐÑавилÑноÑÑÑ ÑабоÑÑ ÑÑнкÑий меÑодов доÑÑÑпа, ÑÑоÑÑиÑ
за ÑканиÑованием индекÑа и дÑÑгими важнÑми опеÑаÑиÑми, завиÑÐ¸Ñ Ð¾Ñ Ð²Ñегда ÑоблÑдаемÑÑ
инваÑианÑов. ÐапÑимеÑ, опÑеделÑннÑе ÑÑнкÑии пÑовеÑÑÑÑ, помимо оÑÑалÑнÑÑ
веÑей, ÑÑо вÑе ÑÑÑаниÑÑ B-деÑева ÑодеÑÐ¶Ð°Ñ ÑлеменÑÑ Ð² «логиÑеÑком» поÑÑдке (напÑимеÑ, индекÑ-B-деÑево, поÑÑÑоеннÑй по ÑÑолбÑÑ text, должен ÑодеÑжаÑÑ ÐºÐ¾ÑÑежи, ÑпоÑÑдоÑеннÑе в лекÑиÑеÑком поÑÑдке Ñ ÑÑÑÑом пÑавила ÑоÑÑиÑовки). ÐÑли ÑÑÐ¾Ñ ÐºÐ¾Ð½ÐºÑеÑнÑй инваÑÐ¸Ð°Ð½Ñ ÐºÐ°ÐºÐ¸Ð¼-Ñо обÑазом наÑÑÑаеÑÑÑ, ÑледÑÐµÑ Ð¾Ð¶Ð¸Ð´Ð°ÑÑ, ÑÑо бинаÑнÑй поиÑк на заÑÑонÑÑой ÑÑÑаниÑе введÑÑ Ð² заблÑждение пÑоÑедÑÑÑ ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð½Ð´ÐµÐºÑа, ÑÑо пÑиведÑÑ Ðº невеÑнÑм ÑезÑлÑÑаÑам запÑоÑов SQL. ÐÑли наÑÑÑÐµÐ½Ð¸Ñ ÑÑÑÑкÑÑÑÑ Ð½Ðµ обнаÑÑживаÑÑÑÑ, ÑÑи ÑÑнкÑии оÑÑабаÑÑваÑÑ Ð±ÐµÐ· оÑибок.
ÐÑовеÑка вÑполнÑеÑÑÑ Ñеми же пÑоÑедÑÑами, ÑÑо иÑполÑзÑÑÑÑÑ Ð¿Ñи ÑканиÑовании индекÑа, и ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÐºÐ¾Ð´ полÑзоваÑелÑÑкого клаÑÑа опеÑаÑоÑов. ÐапÑимеÑ, пÑовеÑка индекÑа-B-деÑева задейÑÑвÑÐµÑ ÑÑавнениÑ, вÑполнÑемÑе одной или неÑколÑкими опоÑнÑми ÑÑнкÑиÑми B-деÑева под номеÑом 1. ÐодÑобнее опоÑнÑе ÑÑнкÑии клаÑÑа опеÑаÑоÑов опиÑÑваÑÑÑÑ Ð² ÐодÑазделе 37.16.3.
РоÑлиÑие Ð¾Ñ ÑÑнкÑий пÑовеÑки B-деÑева, коÑоÑÑе ÑообÑаÑÑ Ð¾ повÑеждениÑÑ
, вÑÐ´Ð°Ð²Ð°Ñ Ð¾Ñибки, ÑÑнкÑÐ¸Ñ Ð¿ÑовеÑки кÑÑи verify_heapam пÑовеÑÑÐµÑ ÑаблиÑÑ Ð¸ пÑÑаеÑÑÑ Ð²ÐµÑнÑÑÑ Ð½Ð°Ð±Ð¾Ñ ÑÑÑок: по одной ÑÑÑоке на каждое обнаÑÑженное повÑеждение. Тем не менее, еÑли бÑдÑÑ Ð¿Ð¾Ð²ÑÐµÐ¶Ð´ÐµÐ½Ñ ÑÑедÑÑва, коÑоÑÑе иÑполÑзÑÐµÑ ÑÑнкÑÐ¸Ñ verify_heapam, она не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑодолжиÑÑ ÑабоÑÑ Ð¸ вÑдаÑÑ Ð¾ÑибкÑ.
ÐÑава на вÑполнение ÑÑнкÑий amcheck можно вÑдаÑÑ Ð¸ не ÑÑпеÑполÑзоваÑелÑ, но пеÑед ÑÑим ÑледÑÐµÑ ÑÑаÑелÑно ÑÑеÑÑÑ Ð°ÑпекÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑи и конÑиденÑиалÑноÑÑи даннÑÑ
. ХоÑÑ ÑÑи ÑÑнкÑии пÑежде вÑего вÑдаÑÑ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ ÑÑÑÑкÑÑÑе даннÑÑ
и Ñ
аÑакÑеÑе найденнÑÑ
повÑеждений, а не вÑводÑÑ ÑобÑÑвенно повÑеждÑннÑе даннÑе, еÑли злоÑмÑÑленник ÑÐ¼Ð¾Ð¶ÐµÑ Ð²ÑполнÑÑÑ ÑÑи ÑÑнкÑии, а оÑобенно еÑли ÐµÐ¼Ñ Ñакже ÑдаÑÑÑÑ Ð²ÑзваÑÑ Ð¿Ð¾Ð²Ñеждение даннÑÑ
, он ÑÐ¼Ð¾Ð¶ÐµÑ ÑзнаÑÑ ÑÑо-Ñо о ÑамиÑ
даннÑÑ
из полÑÑенной инÑоÑмаÑии.
F.2.1. ФÑнкÑии #
-
bt_index_check(index regclass, heapallindexed boolean) returns void bt_index_checkпÑовеÑÑеÑ, ÑоблÑдаÑÑÑÑ Ð»Ð¸ в Ñелевом индекÑе-B-деÑеве ÑазлиÑнÑе инваÑианÑÑ. ÐÑÐ¸Ð¼ÐµÑ Ð¸ÑполÑзованиÑ:test=# SELECT bt_index_check(index => c.oid, heapallindexed => i.indisunique), c.relname, c.relpages FROM pg_index i JOIN pg_opclass op ON i.indclass[0] = op.oid JOIN pg_am am ON op.opcmethod = am.oid JOIN pg_class c ON i.indexrelid = c.oid JOIN pg_namespace n ON c.relnamespace = n.oid WHERE am.amname = 'btree' AND n.nspname = 'pg_catalog' -- Ðе пÑовеÑÑÑÑ Ð²ÑеменнÑе ÑаблиÑÑ (они могÑÑ Ð¾ÑноÑиÑÑÑÑ Ðº дÑÑгим ÑеанÑам): AND c.relpersistence != 't' -- ФÑнкÑÐ¸Ñ Ð¼Ð¾Ð¶ÐµÑ Ð²ÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð±ÐµÐ· ÑÑÐ¸Ñ ÑÑловий: AND c.relkind = 'i' AND i.indisready AND i.indisvalid ORDER BY c.relpages DESC LIMIT 10; bt_index_check | relname | relpages ----------------+---------------------------------+---------- | pg_depend_reference_index | 43 | pg_depend_depender_index | 40 | pg_proc_proname_args_nsp_index | 31 | pg_description_o_c_o_index | 21 | pg_attribute_relid_attnam_index | 14 | pg_proc_oid_index | 10 | pg_attribute_relid_attnum_index | 9 | pg_amproc_fam_proc_index | 5 | pg_amop_opr_fam_index | 5 | pg_amop_fam_strat_index | 5 (10 rows)ÐÑÐ¾Ñ Ð¿ÑÐ¸Ð¼ÐµÑ Ð´ÐµÐ¼Ð¾Ð½ÑÑÑиÑÑÐµÑ ÑÐµÐ°Ð½Ñ Ð¿ÑовеÑки 10 ÑамÑÑ Ð±Ð¾Ð»ÑÑÐ¸Ñ Ð¸Ð½Ð´ÐµÐºÑов ÑиÑÑемнÑÑ ÐºÐ°Ñалогов в базе даннÑÑ Â«test». ÐÑовеÑка вÑÐµÑ ÐºÐ¾ÑÑежей кÑÑи на пÑÐµÐ´Ð¼ÐµÑ Ð½Ð°Ð»Ð¸ÑÐ¸Ñ ÑооÑвеÑÑÑвÑÑÑÐ¸Ñ ÐºÐ¾ÑÑежей индекÑа запÑаÑиваеÑÑÑ ÑолÑко Ð´Ð»Ñ ÑÐµÑ Ð¸Ð· ÑÑÐ¸Ñ Ð¸Ð½Ð´ÐµÐºÑов, коÑоÑÑе ÑвлÑÑÑÑÑ ÑникалÑнÑми. Так как оÑибки не бÑло, вÑе пÑовеÑеннÑе индекÑÑ Ð¿ÑедÑÑавлÑÑÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑки ÑелоÑÑнÑми. ÐÑÑеÑÑвенно, ÑÑÐ¾Ñ Ð·Ð°Ð¿ÑÐ¾Ñ Ð¼Ð¾Ð¶Ð½Ð¾ легко измениÑÑ, ÑÑÐ¾Ð±Ñ ÑÑнкÑиÑ
bt_index_checkвÑзÑвалаÑÑ Ð´Ð»Ñ Ð²ÑÐµÑ Ð¸Ð½Ð´ÐµÐºÑов в базе, коÑоÑÑе поддеÑживаÑÑ ÑÑÑ Ð¿ÑовеÑкÑ.ФÑнкÑиÑ
bt_index_checkзапÑаÑÐ¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸ÑовкÑAccessShareLockÐ´Ð»Ñ Ñелевого индекÑа и оÑноÑениÑ, коÑоÑÐ¾Ð¼Ñ Ð¾Ð½ пÑинадлежиÑ. ÐÑо ÑÐ¾Ñ Ð¶Ðµ Ñежим блокиÑовки, ÑÑо запÑаÑиваеÑÑÑ Ð´Ð»Ñ Ð¾ÑноÑений обÑÑнÑми опеÑаÑоÑамиSELECT.bt_index_checkне пÑовеÑÑÐµÑ Ð¸Ð½Ð²Ð°ÑианÑÑ, ÑÑÑеÑÑвÑÑÑие в иеÑаÑÑ Ð¸Ð¸ поÑомок/ÑодиÑелÑ, но пÑовеÑÑÐµÑ Ð¿ÑедÑÑавление вÑÐµÑ ÐºÐ¾ÑÑежей кÑÑи в индекÑе в виде индекÑнÑÑ ÐºÐ¾ÑÑежей, когда паÑамеÑÑheapallindexedÑавенtrue. Ðогда в ÑабоÑаÑÑей пÑоизводÑÑвенной ÑÑеде ÑÑебÑеÑÑÑ ÑегÑлÑÑÐ½Ð°Ñ Ð»ÑÐ³ÐºÐ°Ñ Ð¿ÑовеÑка на налиÑие наÑÑÑений, иÑполÑзованиеbt_index_checkÑаÑÑо бÑÐ´ÐµÑ Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑим компÑомиÑÑом Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð¾Ð»Ð½Ð¾Ñой пÑовеÑки и минимизаÑией влиÑÐ½Ð¸Ñ Ð½Ð° пÑоизводиÑелÑноÑÑÑ Ð¸ доÑÑÑпноÑÑÑ Ð¿ÑиложениÑ.-
bt_index_parent_check(index regclass, heapallindexed boolean, rootdescend boolean) returns void ФÑнкÑиÑ
bt_index_parent_checkпÑовеÑÑеÑ, ÑоблÑдаÑÑÑÑ Ð»Ð¸ в Ñелевом обÑекÑе, индекÑе-B-деÑеве, ÑазлиÑнÑе инваÑианÑÑ. ÐÑоме Ñого, еÑли аÑгÑменÑheapallindexedÑавенtrue, ÑÑа ÑÑнкÑÐ¸Ñ Ð¿ÑовеÑÑÐµÑ Ð½Ð°Ð»Ð¸Ñие в индекÑе вÑÐµÑ ÐºÐ¾ÑÑежей из кÑÑи, коÑоÑÑе Ð´Ð¾Ð»Ð¶Ð½Ñ Ð² него попаÑÑÑ. Ðогда необÑзаÑелÑнÑй паÑамеÑÑrootdescendÑавенtrue, пÑи пÑовеÑке Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ коÑÑежа на ÑÑовне лиÑÑÑев пÑоизводиÑÑÑ ÐµÑÑ Ð¾Ð´Ð¸Ð½ поиÑк, наÑÐ¸Ð½Ð°Ñ Ñ ÐºÐ¾Ñневой ÑÑÑаниÑÑ. ÐÑовеÑки, коÑоÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизводиÑÑbt_index_parent_check, вклÑÑаÑÑ Ð² ÑÐµÐ±Ñ Ð²Ñе пÑовеÑки, вÑполнÑемÑе ÑÑнкÑиейbt_index_check. ФÑнкÑиÑbt_index_parent_checkможно ÑÑиÑаÑÑ Ð±Ð¾Ð»ÐµÐµ полноÑеннÑм ваÑианÑомbt_index_check: в оÑлиÑие оÑbt_index_check,bt_index_parent_checkпÑовеÑÑÐµÑ ÐµÑÑ Ð¸ инваÑианÑÑ, ÑÑÑеÑÑвÑÑÑие в иеÑаÑÑ Ð¸Ð¸ ÑодиÑелÑ/поÑомок, в Ñом ÑиÑле оÑÑÑÑÑÑвие поÑеÑÑннÑÑ ÑвÑзей в ÑÑÑÑкÑÑÑе индекÑа.bt_index_parent_checkÑледÑÐµÑ Ð¾Ð±ÑÐµÐ¼Ñ ÑоглаÑÐµÐ½Ð¸Ñ Ð¸ вÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð² ÑлÑÑае обнаÑÑÐ¶ÐµÐ½Ð¸Ñ Ð»Ð¾Ð³Ð¸ÑеÑкой неÑоглаÑованноÑÑи или дÑÑгой пÑоблемÑ.ФÑнкÑиÑ
bt_index_parent_checkзапÑаÑÐ¸Ð²Ð°ÐµÑ Ð² Ñелевом индекÑе блокиÑовкÑShareLock(ÑакжеShareLockзапÑаÑиваеÑÑÑ Ð¸ в оÑновном оÑноÑении). ÐÑи блокиÑовки пÑедоÑвÑаÑаÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменное изменение даннÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼Ð¸INSERT,UPDATEиDELETE. ÐÑи блокиÑовки Ñакже пÑепÑÑÑÑвÑÑÑ Ð¾Ð´Ð½Ð¾Ð²Ñеменной обÑабоÑке нижележаÑего оÑноÑÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¾Ð¹VACUUMи дÑÑгими вÑпомогаÑелÑнÑми командами. ÐамеÑÑÑе, ÑÑо ÑÑа ÑÑнкÑÐ¸Ñ ÑдеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸Ñовки ÑолÑко во вÑÐµÐ¼Ñ Ð²ÑполнениÑ, а не на пÑоÑÑжении вÑей ÑÑанзакÑии.ÐополниÑелÑнÑе пÑовеÑки, пÑоводимÑе ÑÑнкÑией
bt_index_parent_check, более оÑиенÑиÑÐ¾Ð²Ð°Ð½Ñ Ð½Ð° вÑÑвление ÑазлиÑнÑÑ Ð¿Ð°ÑологиÑеÑÐºÐ¸Ñ ÑлÑÑаев. Ð Ñом ÑиÑле ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ¿ÑавилÑно ÑеализованнÑй клаÑÑ Ð¾Ð¿ÐµÑаÑоÑов B-деÑева, иÑполÑзÑемÑй пÑовеÑÑемÑм индекÑом, или, гипоÑеÑиÑеÑки, неизвеÑÑнÑе оÑибки в нижележаÑем коде меÑода доÑÑÑпа индекÑа-B-деÑева. ÐамеÑÑÑе, ÑÑо ÑÑнкÑиÑbt_index_parent_checkнелÑÐ·Ñ Ð¿ÑименÑÑÑ, когда вклÑÑÑн Ñежим гоÑÑÑего ÑезеÑва (Ñо еÑÑÑ Ð½Ð° ÑизиÑеÑÐºÐ¸Ñ ÑÐµÐ¿Ð»Ð¸ÐºÐ°Ñ Ð² Ñежиме «ÑолÑко ÑÑение»), в оÑлиÑие оÑbt_index_check.
ÐодÑказка
ФÑнкÑии bt_index_check и bt_index_parent_check вÑводÑÑ Ð¾ÑладоÑнÑе ÑообÑÐµÐ½Ð¸Ñ Ð¾ пÑоÑеÑÑе пÑовеÑки на ÑÑовнÑÑ
важноÑÑи DEBUG1 и DEBUG2. ÐÑи ÑообÑÐµÐ½Ð¸Ñ ÑодеÑÐ¶Ð°Ñ Ð¿Ð¾Ð´ÑобнÑе ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾ пÑовеÑке, коÑоÑÑе могÑÑ Ð¿ÑедÑÑавлÑÑÑ Ð¸Ð½ÑеÑÐµÑ Ð´Ð»Ñ ÑазÑабоÑÑиков PostgreSQL. Ðни могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ñ Ð¸ Ð´Ð»Ñ Ð¾Ð¿ÑÑнÑÑ
полÑзоваÑелей в каÑеÑÑве дополниÑелÑного конÑекÑÑа в ÑлÑÑае обнаÑÑÐ¶ÐµÐ½Ð¸Ñ Ð½ÐµÑоглаÑованноÑÑи. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð»ÑÑаÑÑ ÑообÑÐµÐ½Ð¸Ñ Ð¾ пÑоÑеÑÑе пÑовеÑки Ñ Ð¿Ð¾Ð´Ñ
одÑÑим ÑÑовнем деÑализаÑии, вÑполниÑе до запÑÑка пÑовеÑÑÑÑего запÑоÑа в инÑеÑакÑивном psql:
SET client_min_messages = DEBUG1;
-
verify_heapam(relation regclass, on_error_stop boolean, check_toast boolean, skip text, startblock bigint, endblock bigint, blkno OUT bigint, offnum OUT integer, attnum OUT integer, msg OUT text) returns setof record ÐÑовеÑÑÐµÑ ÑаблиÑÑ, поÑледоваÑелÑноÑÑÑ Ð¸Ð»Ð¸ маÑеÑиализованное пÑедÑÑавление на налиÑие ÑÑÑÑкÑÑÑнÑÑ Ð¿Ð¾Ð²Ñеждений (когда ÑÑÑаниÑÑ Ð¾ÑноÑÐµÐ½Ð¸Ñ ÑодеÑÐ¶Ð°Ñ Ð´Ð°Ð½Ð½Ñе в непÑавилÑном ÑоÑмаÑе) и логиÑеÑÐºÐ¸Ñ Ð¿Ð¾Ð²Ñеждений (когда ÑÑÑÑкÑÑÑа ÑÑÑÐ°Ð½Ð¸Ñ Ð½Ðµ повÑеждена, но и не ÑооÑвеÑÑÑвÑÐµÑ Ð¾ÑÑалÑной ÑаÑÑи клаÑÑеÑа).
РкаÑеÑÑве необÑзаÑелÑнÑÑ Ð°ÑгÑменÑов пÑинимаÑÑÑÑ:
on_error_stopÐÑли true, пÑовеÑка на налиÑие повÑеждений оÑÑанавливаеÑÑÑ Ð² конÑе пеÑвого блока, в коÑоÑом обнаÑÑÐ¶ÐµÐ½Ñ ÐºÐ°ÐºÐ¸Ðµ-либо повÑеждениÑ.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ false.
check_toastÐÑли true, Ð¿Ð¾Ð»Ñ TOAST пÑовеÑÑÑÑÑÑ Ð¿Ð¾ TOAST-ÑаблиÑе Ñелевого оÑноÑениÑ.
ÐÑа пÑовеÑка Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð´Ð»Ð¸ÑелÑной. ÐÑоме Ñого, еÑли TOAST-ÑаблиÑа или ÐµÑ Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ð¾Ð²ÑежденÑ, пÑовеÑка TOAST-полей поÑенÑиалÑно Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к ÑÐ±Ð¾Ñ Ð² ÑабоÑе ÑеÑвеÑа, Ñ Ð¾ÑÑ Ð²Ð¾ Ð¼Ð½Ð¾Ð³Ð¸Ñ ÑлÑÑаÑÑ ÑÑо пÑоÑÑо вÑÐ·Ð¾Ð²ÐµÑ Ð¾ÑибкÑ.
Ðо ÑмолÑÐ°Ð½Ð¸Ñ false.
skipÐÑли Ñказано знаÑение, оÑлиÑное оÑ
none, пÑовеÑка на налиÑие повÑеждений пÑопÑÑÐºÐ°ÐµÑ Ð±Ð»Ð¾ÐºÐ¸, коÑоÑÑе помеÑÐµÐ½Ñ ÐºÐ°Ðº полноÑÑÑÑ Ð²Ð¸Ð´Ð¸Ð¼Ñе или полноÑÑÑÑ Ð·Ð°Ð¼Ð¾ÑоженнÑе, в завиÑимоÑÑи Ð¾Ñ Ñказанного знаÑениÑ. ÐопÑÑÑимÑе ваÑианÑÑ:all-visible,all-frozenиnone.Ðо ÑмолÑаниÑ
none.startblockÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°Ð½, пÑовеÑка на налиÑие повÑеждений наÑинаеÑÑÑ Ñ Ñказанного блока и пÑопÑÑÐºÐ°ÐµÑ Ð²Ñе пÑедÑдÑÑие блоки. ÐÑли в
startblockÑказано знаÑение вне диапазона блоков Ñелевой ÑаблиÑÑ, вÑдаÑÑÑÑ Ð¾Ñибка.Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑовеÑка наÑинаеÑÑÑ Ñ Ð¿ÐµÑвого блока.
endblockÐÑли ÑÑÐ¾Ñ Ð¿Ð°ÑамеÑÑ Ð·Ð°Ð´Ð°Ð½, пÑовеÑка на налиÑие повÑеждений заканÑиваеÑÑÑ Ð½Ð° Ñказанном блоке и пÑопÑÑÐºÐ°ÐµÑ Ð²Ñе оÑÑавÑиеÑÑ Ð±Ð»Ð¾ÐºÐ¸. ÐÑли в
endblockÑказано знаÑение вне диапазона блоков Ñелевой ÑаблиÑÑ, вÑдаÑÑÑÑ Ð¾Ñибка.Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð¿ÑовеÑÑÑÑÑÑ Ð²Ñе блоки.
ÐÐ»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ обнаÑÑженного повÑеждениÑ
verify_heapamвозвÑаÑÐ°ÐµÑ ÑÑÑÐ¾ÐºÑ Ñо ÑледÑÑÑими ÑÑолбÑами:blknoÐÐ¾Ð¼ÐµÑ Ð±Ð»Ð¾ÐºÐ°, ÑодеÑжаÑего повÑеждÑннÑÑ ÑÑÑаниÑÑ.
offnumÐÐ¾Ð¼ÐµÑ ÑмеÑÐµÐ½Ð¸Ñ Ð¿Ð¾Ð²ÑеждÑнного коÑÑежа.
attnumÐÐ¾Ð¼ÐµÑ Ð°ÑÑибÑÑа повÑеждÑнного ÑÑолбÑа в коÑÑеже, еÑли повÑеждÑн именно ÑÑолбеÑ, а не веÑÑ ÐºÐ¾ÑÑеж.
msgСообÑение Ñ Ð¾Ð¿Ð¸Ñанием вÑÑвленной оÑибки.
F.2.2. ÐополниÑелÑÐ½Ð°Ñ Ð¿ÑовеÑка heapallindexed #
Ðогда аÑгÑÐ¼ÐµÐ½Ñ heapallindexed ÑÑнкÑий пÑовеÑки B-деÑева Ñавен true, Ð´Ð»Ñ ÑаблиÑÑ, ÑвÑзанной Ñ Ð¾ÑноÑением Ñелевого индекÑа, добавлÑеÑÑÑ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸ÑелÑÐ½Ð°Ñ Ñаза пÑовеÑки. Ðна вклÑÑÐ°ÐµÑ Â«ÑикÑивнÑÑ» опеÑаÑÐ¸Ñ CREATE INDEX, коÑоÑÐ°Ñ Ð¿ÑовеÑÑÐµÑ Ð¿ÑиÑÑÑÑÑвие вÑеÑ
гипоÑеÑиÑеÑкиÑ
новÑÑ
индекÑнÑÑ
коÑÑежей по вÑеменной Ñводной ÑÑÑÑкÑÑÑе в памÑÑи (она ÑоздаÑÑÑÑ Ð¿Ñи необÑ
одимоÑÑи на пеÑвом ÑÑапе пÑовеÑки). Ð¡Ð²Ð¾Ð´Ð½Ð°Ñ ÑÑÑÑкÑÑÑа «помеÑаеÑ» каждÑй коÑÑеж, коÑоÑÑй наÑ
одиÑÑÑ Ð² Ñелевом индекÑе. Ðа вÑÑоком ÑÑовне Ð¸Ð´ÐµÑ Ð¿ÑовеÑки heapallindexed ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ, ÑÑо новÑй индекÑ, ÑавнознаÑнÑй ÑелевомÑ, ÑодеÑÐ¶Ð¸Ñ ÑолÑко Ñе запиÑи, коÑоÑÑе можно найÑи в ÑÑÑеÑÑвÑÑÑей ÑÑÑÑкÑÑÑе.
С дополниÑелÑнÑм ÑÑапом heapallindexed ÑвÑÐ·Ð°Ð½Ñ Ð·Ð½Ð°ÑиÑелÑнÑе издеÑжки: пÑовеÑка обÑÑно бÑÐ´ÐµÑ Ð²ÑполнÑÑÑÑÑ Ð² неÑколÑко Ñаз долÑÑе. Ðднако никакие новÑе блокиÑовки ÑÑÐ¾Ð²Ð½Ñ Ð¾ÑноÑÐµÐ½Ð¸Ñ Ð¿Ñи пÑовеÑке heapallindexed не запÑаÑиваÑÑÑÑ.
Ð¡Ð²Ð¾Ð´Ð½Ð°Ñ ÑÑÑÑкÑÑÑа огÑаниÑиваеÑÑÑ Ð¿Ð¾ обÑÑÐ¼Ñ Ð·Ð½Ð°Ñением maintenance_work_mem. ÐÐ»Ñ Ð²ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð½ÐµÑоглаÑованноÑÑи в пÑедÑÑавленнÑÑ
в индекÑе коÑÑежаÑ
Ñ Ð²ÐµÑоÑÑноÑÑÑÑ ÑпÑÑений в пÑеделаÑ
2% ÑÑебÑеÑÑÑ Ð¿ÑиблизиÑелÑно 2 байÑа памÑÑи на коÑÑеж. Ðо меÑе ÑменÑÑÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑма памÑÑи в пеÑеÑÑÑÑе на коÑÑеж ÑÑÐ¾Ñ Ð¿ÑоÑÐµÐ½Ñ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð¾ ÑаÑÑÑÑ. ÐÑÐ¾Ñ Ð¿Ð¾Ð´Ñ
од знаÑиÑелÑно огÑаниÑÐ¸Ð²Ð°ÐµÑ Ð¸Ð·Ð´ÐµÑжки Ñакой пÑовеÑки, и пÑи ÑÑом лиÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¾ ÑменÑÑаеÑÑÑ Ð²ÐµÑоÑÑноÑÑÑ Ð²ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¿ÑоблемÑ, оÑобенно в инÑÑаллÑÑиÑÑ
, где ÑÑа пÑовеÑка вклÑÑена в пÑоÑедÑÑÑ ÑегÑлÑÑного обÑлÑживаниÑ. Ðаже еÑли единиÑное оÑÑÑÑÑÑвие или повÑеждение коÑÑежа ÑпÑÑено, еÑÑÑ Ð²Ñе ÑанÑÑ Ð²ÑÑвиÑÑ ÐµÐ³Ð¾ пÑи оÑеÑедной пÑовеÑке.
F.2.3. ÐÑÑекÑивное иÑполÑзование amcheck #
ÐодÑÐ»Ñ amcheck Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½ Ð´Ð»Ñ Ð²ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ ÑазлиÑнÑÑ
Ñипов пÑоблем, коÑоÑÑе могÑÑ Ð¾ÑÑаÑÑÑÑ Ð½ÐµÐ·Ð°Ð¼ÐµÑеннÑми пÑи вклÑÑении конÑÑолÑнÑÑ
ÑÑмм ÑÑÑÐ°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
. Ð ÑаÑÑноÑÑи ÑÑо:
СÑÑÑкÑÑÑнÑе неÑооÑвеÑÑÑвиÑ, возникаÑÑие пÑи некоÑÑекÑной ÑеализаÑии клаÑÑа опеÑаÑоÑов.
Ð Ñом ÑиÑле ÑÑо пÑоблемÑ, возникаÑÑие пÑи изменении пÑавил ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð² опеÑаÑионной ÑиÑÑеме. СÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ ÑоÑÑиÑÑемого Ñипа, напÑимеÑ
text, Ð´Ð¾Ð»Ð¶Ð½Ñ Ð±ÑÑÑ Ð¿Ð¾ÑÑоÑннÑми (как и вÑе ÑÑавнениÑ, пÑименÑемÑе пÑи ÑканиÑовании индекÑа-B-деÑева), ÑÑо подÑазÑÐ¼ÐµÐ²Ð°ÐµÑ Ð½ÐµÐ¸Ð·Ð¼ÐµÐ½Ð½Ð¾ÑÑÑ Ð¿Ñавил ÑоÑÑиÑовки в опеÑаÑионной ÑиÑÑеме. ÐÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ð¼Ð¾Ð³ÑÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÑÑ Ð¿Ñи обновлениÑÑ Ð¿Ñавил в опеÑаÑионной ÑиÑÑеме, Ñ Ð¾ÑÑ Ñакие ÑлÑÑаи Ñедки. ЧаÑе пÑоÑвлÑÑÑÑÑ Ð½ÐµÑооÑвеÑÑÑÐ²Ð¸Ñ Ð¿Ð¾ÑÑдка ÑоÑÑиÑовки Ð¼ÐµÐ¶Ð´Ñ Ð²ÐµÐ´ÑÑим и ведомÑм ÑеÑвеÑом, напÑимеÑ, из-за ÑазлиÑий оÑновнÑÑ Ð²ÐµÑÑий иÑполÑзÑемÑÑ Ð¾Ð¿ÐµÑаÑионнÑÑ ÑиÑÑем. ÐозникаÑÑие ÑаÑÑ Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ Ð¾Ð±ÑÑно наблÑдаÑÑÑÑ ÑолÑко на ведомÑÑ ÑеÑвеÑÐ°Ñ , Ñак ÑÑо и вÑÑвиÑÑ Ð¸Ñ Ð¾Ð±ÑÑно можно ÑолÑко на Ð½Ð¸Ñ .Ðогда Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð°Ñ Ð¿Ñоблема, она Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°ÑÑагиваÑÑ Ð½Ðµ абÑолÑÑно вÑе индекÑÑ, поÑÑÑоеннÑе Ñ Ð¿Ð¾ÑоÑнÑм пÑавилом ÑоÑÑиÑовки, пÑоÑÑо поÑÐ¾Ð¼Ñ ÑÑо индекÑиÑованнÑе знаÑÐµÐ½Ð¸Ñ Ð¼Ð¾Ð³ÑÑ Ð¸Ð¼ÐµÑÑ ÑÐ¾Ñ Ð¶Ðµ абÑолÑÑнÑй поÑÑдок, незавиÑÑÑий Ð¾Ñ ÑазлиÑий поведениÑ. Ðа дополниÑелÑнÑми ÑведениÑми об иÑполÑзовании в Postgres Pro пÑавил ÑоÑÑиÑовки и локалей опеÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¾Ð±ÑаÑиÑеÑÑ Ðº РазделÑ 22.1 и РазделÑ 22.2.
ÐеÑооÑвеÑÑÑÐ²Ð¸Ñ ÑÑÑÑкÑÑÑÑ Ð¼ÐµÐ¶Ð´Ñ Ð¸Ð½Ð´ÐµÐºÑами и пÑоиндекÑиÑованнÑми оÑноÑениÑми в кÑÑе (когда вÑполнÑеÑÑÑ Ð¿ÑовеÑка
heapallindexed).Ðо вÑÐµÐ¼Ñ Ð¾Ð±ÑÑнÑÑ Ð¾Ð¿ÐµÑаÑий пеÑекÑÑÑÑÐ½Ð°Ñ Ð¿ÑовеÑка индекÑов по оÑноÑениÑм в кÑÑе не пÑоизводиÑÑÑ. СимпÑÐ¾Ð¼Ñ Ð¿Ð¾Ð²ÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð² кÑÑе могÑÑ Ð±ÑÑÑ Ð½ÐµÐ¾ÑевиднÑми.
ÐовÑеждениÑ, вÑзваннÑе гипоÑеÑиÑеÑкими неизвеÑÑнÑми оÑибками в нижележаÑем коде меÑодов доÑÑÑпа, коде ÑоÑÑиÑовки и ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑанзакÑиÑми Postgres Pro.
ÐвÑомаÑиÑеÑÐºÐ°Ñ Ð¿ÑовеÑка ÑÑÑÑкÑÑÑной ÑелоÑÑноÑÑи индекÑов игÑÐ°ÐµÑ Ð²Ð°Ð¶Ð½ÑÑ ÑÐ¾Ð»Ñ Ð² обÑем ÑеÑÑиÑовании новÑÑ Ð¸Ð»Ð¸ пÑедлагаемÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑей Postgres Pro, Ñ ÐºÐ¾ÑоÑÑми Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ½ÑÑÑ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ°Ñ Ð½ÐµÑоглаÑованноÑÑÑ. ТакÑÑ Ð¶Ðµ ÑÐ¾Ð»Ñ Ð¸Ð³ÑÐ°ÐµÑ Ð¿ÑовеÑка ÑÑÑÑкÑÑÑÑ ÑаблиÑÑ Ð¸ ÑвÑзанной инÑоÑмаÑии о видимоÑÑи и ÑоÑÑоÑнии ÑÑанзакÑий. РпоÑÑÐ¾Ð¼Ñ Ð¾Ð´Ð½Ð° из оÑевиднÑÑ ÑÑÑаÑегий ÑеÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ â ÑегÑлÑÑно вÑзÑваÑÑ ÑÑнкÑии
amcheckпÑи пÑоведении ÑÑандаÑÑнÑÑ ÑегÑеÑÑионнÑÑ ÑеÑÑов.ÐÑибки в Ñайловой ÑиÑÑеме или подÑиÑÑеме Ñ ÑанениÑ, когда пÑоÑÑо не вклÑÑÐµÐ½Ñ ÐºÐ¾Ð½ÑÑолÑнÑе ÑÑммÑ.
ÐамеÑÑÑе, ÑÑо
amcheckÑаÑÑмаÑÑÐ¸Ð²Ð°ÐµÑ ÑÑÑаниÑÑ Ð² Ñом виде, как она пÑедÑÑавлена в некоÑоÑом бÑÑеÑе ÑазделÑемой памÑÑи к моменÑÑ Ð¿ÑовеÑки, еÑли пÑи обÑаÑÐµÐ½Ð¸Ñ Ðº нÑÐ¶Ð½Ð¾Ð¼Ñ Ð±Ð»Ð¾ÐºÑ Ð¾Ð½ Ñже Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² ÑазделÑемом бÑÑеÑе. ÐÑледÑÑвие ÑÑого,amcheckне обÑзаÑелÑно Ð²Ð¸Ð´Ð¸Ñ Ð´Ð°Ð½Ð½Ñе, Ð½Ð°Ñ Ð¾Ð´ÑÑиеÑÑ Ð² Ñайловой ÑиÑÑеме в Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿ÑовеÑки. ÐамеÑÑÑе, ÑÑо когда конÑÑолÑнÑе ÑÑÐ¼Ð¼Ñ Ð²ÐºÐ»ÑÑенÑ,amcheckÐ¼Ð¾Ð¶ÐµÑ Ð²ÑдаÑÑ Ð¾ÑÐ¸Ð±ÐºÑ Ð¸Ð·-за неÑооÑвеÑÑÑÐ²Ð¸Ñ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑÑмм, еÑли в бÑÑÐµÑ Ð±ÑÐ´ÐµÑ ÑÑиÑÑваÑÑÑÑ Ð¸ÑпоÑÑеннÑй блок.ÐовÑеждениÑ, вÑзваннÑе деÑекÑнÑми Ñипами ÐÐУ или вообÑе подÑиÑÑемой памÑÑи.
Postgres Pro не заÑиÑÐ°ÐµÑ Ð¾Ñ Ð¾Ñибок памÑÑи; пÑедполагаеÑÑÑ, ÑÑо в ÑкÑплÑаÑиÑÑемом вами ÑеÑвеÑе ÑÑÑановлена памÑÑÑ Ñ ECC (Error Correcting Codes, ÐÐ¾Ð´Ñ Ð¸ÑпÑÐ°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñибок) или лÑÑÑÐ°Ñ Ð·Ð°ÑиÑа. Ðднако памÑÑÑ ECC обÑÑно заÑиÑÐ°ÐµÑ ÑолÑко Ð¾Ñ Ð¾Ñибок в одном биÑе и не ÑледÑÐµÑ ÑÑиÑаÑÑ ÐµÑ Ð°Ð±ÑолÑÑной заÑиÑой Ð¾Ñ Ñбоев, пÑиводÑÑÐ¸Ñ Ðº повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð¿Ð°Ð¼ÑÑи.
Ðогда вÑполнÑеÑÑÑ Ð¿ÑовеÑка
heapallindexed, в Ñелом знаÑиÑелÑно ÑвелиÑиваеÑÑÑ ÑÐ°Ð½Ñ Ð²ÑÑÐ²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñибок в оÑделÑнÑÑ Ð±Ð¸ÑÐ°Ñ , Ñак как она ÑеÑÑиÑÑÐµÑ ÑоÑное двоиÑное ÑавенÑÑво и ÑвеÑÑÐµÑ Ð¿ÑоиндекÑиÑованнÑе аÑÑибÑÑÑ Ñ ÐºÑÑей.
ÐÑиÑиной повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑÑаÑÑ Ð½ÐµÐ¸ÑпÑавноÑÑÑ Ð¾Ð±Ð¾ÑÑÐ´Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸Ð»Ð¸ же пеÑезапиÑÑ Ð¸Ð»Ð¸ изменение Ñайлов оÑноÑÐµÐ½Ð¸Ñ ÑÑоÑонним ÐÐ. ÐÑÐ¾Ñ Ð²Ð¸Ð´ повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñакже можно обнаÑÑжиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑÑмм ÑÑÑÐ°Ð½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ .
Ðаже еÑли ÑÑÑаниÑÑ Ð¾ÑноÑений имеÑÑ Ð¿ÑавилÑнÑй ÑоÑмаÑ, Ð¸Ñ Ð²Ð½ÑÑÑеннÑÑ ÑÑÑÑкÑÑÑа не повÑеждена и даннÑе ÑооÑвеÑÑÑвÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑÑмме, ÑÑо не гаÑанÑиÑÑÐµÑ Ð¾ÑÑÑÑÑÑвие логиÑеÑÐºÐ¸Ñ Ð¿Ð¾Ð²Ñеждений. ÐовÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñакого Ñипа невозможно обнаÑÑжиÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ ÑÑмм. ÐÑимеÑÑ: знаÑÐµÐ½Ð¸Ñ TOAST в оÑновной ÑаблиÑе, Ð´Ð»Ñ ÐºÐ¾ÑоÑÑÑ Ð½ÐµÑ ÑооÑвеÑÑÑвÑÑÑей запиÑи в ÑаблиÑе TOAST; коÑÑежи в оÑновной ÑаблиÑе Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑом ÑÑанзакÑии, коÑоÑÑй ÑÑаÑÑе, Ñем ÑамÑй ÑÑаÑÑй дейÑÑвиÑелÑнÑй иденÑиÑикаÑÐ¾Ñ ÑÑанзакÑии в базе даннÑÑ Ð¸Ð»Ð¸ клаÑÑеÑе.
РпÑоизводÑÑвеннÑÑ ÑиÑÑÐµÐ¼Ð°Ñ Ð²ÑÑвлÑÑÑÑÑ ÑазнообÑазнÑе пÑиÑÐ¸Ð½Ñ Ð»Ð¾Ð³Ð¸ÑеÑÐºÐ¸Ñ Ð¿Ð¾Ð²Ñеждений: оÑибки в ÑеÑвеÑном ÐÐ PostgreSQL, неиÑпÑавнÑе и непÑодÑманнÑе инÑÑÑÑменÑÑ ÑезеÑвного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ воÑÑÑановлениÑ, оÑибки полÑзоваÑелей.
ÐовÑеждение оÑноÑений оÑобенно опаÑно в ÑабоÑаÑÑей пÑоизводÑÑвенной ÑÑеде, Ñо еÑÑÑ Ð² Ñой ÑÑеде, где вÑÑокий ÑиÑк ÑовÑем нежелаÑелен. ÐоÑÑÐ¾Ð¼Ñ Ð´Ð»Ñ Ð´Ð¸Ð°Ð³Ð½Ð¾ÑÑики повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
без излиÑнего ÑиÑка бÑла ÑазÑабоÑана ÑÑнкÑÐ¸Ñ verify_heapam. Ðна не Ð¼Ð¾Ð¶ÐµÑ Ð¾Ð±ÐµÑпеÑиÑÑ Ð·Ð°ÑиÑÑ Ð¾Ñ Ð²ÑеÑ
Ñбоев ÑеÑвеÑа, Ñак как даже вÑполнение вÑзÑваÑÑего запÑоÑа Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÐ±ÐµÐ·Ð¾Ð¿Ð°ÑнÑм на ÑилÑно повÑеждÑнной ÑиÑÑеме. ÐÑли Ñами каÑалоги повÑежденÑ, Ñо веÑоÑÑÐ½Ñ Ð¿ÑÐ¾Ð±Ð»ÐµÐ¼Ñ Ñ Ð´Ð¾ÑÑÑпом к ÑаблиÑам.
ÐообÑе говоÑÑ, amcheck Ð¼Ð¾Ð¶ÐµÑ Ð´Ð¾ÐºÐ°Ð·Ð°ÑÑ ÑолÑко налиÑие повÑеждений, но не доказаÑÑ Ð¸Ñ
оÑÑÑÑÑÑвие.
F.2.4. ÐÑпÑавление повÑеждений #
Ðогда amcheck ÑигнализиÑÑÐµÑ Ð¾ повÑеждении даннÑÑ
, ложнÑе ÑÑабаÑÑÐ²Ð°Ð½Ð¸Ñ Ð¿ÑакÑиÑеÑки иÑклÑÑенÑ. amcheck ÑÑиÑÐ°ÐµÑ Ð¾ÑибоÑнÑми ÑиÑÑаÑии, коÑоÑÑе никогда не Ð´Ð¾Ð»Ð¶Ð½Ñ Ð½Ð°Ð±Ð»ÑдаÑÑÑÑ Ð¿Ð¾ опÑеделениÑ, поÑÑÐ¾Ð¼Ñ Ð¾Ñибки amcheck, как пÑавило, ÑÑебÑÑÑ ÑÑаÑелÑного анализа.
ÐбÑего меÑода ÑÑÑÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð¿Ñоблем, коÑоÑÑе Ð¼Ð¾Ð¶ÐµÑ Ð²ÑÑвиÑÑ amcheck, не ÑÑÑеÑÑвÑеÑ. ÐаÑаÑÑ Ð½Ñжно Ñ Ð¿Ð¾Ð¸Ñка коÑÐ½Ñ Ð¿ÑоблемÑ, пÑиводÑÑей к наÑÑÑÐµÐ½Ð¸Ñ Ð¸Ð½Ð²Ð°ÑианÑа. ÐолезнÑÑ ÑÐ¾Ð»Ñ Ð² диагноÑÑике повÑеждений, коÑоÑÑе вÑÑвлÑÐµÑ amcheck, Ð¼Ð¾Ð¶ÐµÑ ÑÑгÑаÑÑ pageinspect. Ðдна лиÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° REINDEX Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½ÐµÑÑÑекÑивна, когда поÑÑебÑеÑÑÑ Ð¸ÑпÑавиÑÑ Ð¿Ð¾Ð²ÑеждениÑ.