27.1. ÐадÑжноÑÑÑ #
ÐадÑжноÑÑÑ â ÑÑо важное ÑвойÑÑво лÑбой ÑеÑÑÑзной СУÐРи Postgres Pro Ð´ÐµÐ»Ð°ÐµÑ Ð²ÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ðµ, ÑÑÐ¾Ð±Ñ Ð³Ð°ÑанÑиÑоваÑÑ Ð½Ð°Ð´ÑжноÑÑÑ Ñвоего ÑÑнкÑиониÑованиÑ. Ðдин из аÑпекÑов надÑжноÑÑи ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑо вÑе даннÑе запиÑÑваÑÑÑÑ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð¿Ð¾Ð´ÑвеÑждÑннÑÑ ÑÑанзакÑий, коÑоÑÑе ÑÐ¾Ñ ÑанÑÑÑÑÑ Ð² ÑнеÑгонезавиÑимой облаÑÑи, коÑоÑÐ°Ñ Ð·Ð°ÑиÑена Ð¾Ñ Ð¿Ð¾ÑеÑи пиÑаниÑ, Ñбоев опеÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸ аппаÑаÑнÑÑ Ð¾Ñказов (ÑазÑмееÑÑÑ, за иÑклÑÑением оÑказа Ñамой ÑнеÑгонезавиÑимой облаÑÑи). УÑпеÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð² поÑÑоÑнное меÑÑо Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ (диÑк или ÑквиваленÑнÑй ноÑиÑелÑ) обÑÑно вÑÑ, ÑÑо ÑÑебÑеÑÑÑ. ФакÑиÑеÑки, даже еÑли компÑÑÑÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ Ð²ÑÑел из ÑÑÑоÑ, еÑли диÑки вÑжили, Ñо они могÑÑ Ð±ÑÑÑ Ð¿ÐµÑеÑÑÐ°Ð²Ð»ÐµÐ½Ñ Ð² дÑÑгой Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ð¹ компÑÑÑÐµÑ Ð¸ вÑе подÑвеÑждÑннÑе ÑÑанзакÑии оÑÑанÑÑÑÑ Ð½ÐµÐ¿Ð¾Ð²ÑеждÑннÑми.
ХоÑÑ Ð¿ÐµÑиодиÑеÑÐºÐ°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° плаÑÑÐ¸Ð½Ñ Ð´Ð¸Ñка Ð¼Ð¾Ð¶ÐµÑ Ð²ÑглÑдеÑÑ ÐºÐ°Ðº пÑоÑÑÐ°Ñ Ð¾Ð¿ÐµÑаÑиÑ, ÑÑо не Ñак, поÑÐ¾Ð¼Ñ ÑÑо диÑки знаÑиÑелÑно медленнее, Ñем опеÑаÑÐ¸Ð²Ð½Ð°Ñ Ð¿Ð°Ð¼ÑÑÑ Ð¸ пÑоÑеÑÑоÑ, а Ñакже поÑÐ¾Ð¼Ñ ÑÑо Ð¼ÐµÐ¶Ð´Ñ Ð¾Ð¿ÐµÑаÑивной памÑÑÑÑ Ð¸ плаÑÑинами диÑка еÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе Ð¼ÐµÑ Ð°Ð½Ð¸Ð·Ð¼Ñ ÐºÐµÑиÑованиÑ. Ðо-пеÑвÑÑ , еÑÑÑ Ð±ÑÑеÑнÑй ÐºÐµÑ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑемÑ, коÑоÑÑй кеÑиÑÑÐµÑ ÑаÑÑÑе запÑоÑÑ Ðº блокам диÑка и комбиниÑÑÐµÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð½Ð° диÑк. Ð ÑÑаÑÑÑÑ, вÑе опеÑаÑионнÑе ÑиÑÑÐµÐ¼Ñ Ð¿ÑедоÑÑавлÑÑÑ Ð¿ÑиложениÑм ÑпоÑоб пÑинÑдиÑелÑной запиÑи из бÑÑеÑного кеÑа на диÑк и Postgres Pro иÑполÑзÑÐµÑ ÑÑÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑ. (СмоÑÑиÑе паÑамеÑÑ wal_sync_method коÑоÑÑй оÑвеÑÐ°ÐµÑ Ð·Ð° Ñо как ÑÑо делаеÑÑÑ.)
Ðалее, кеÑиÑование Ñакже Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑÑеÑÑвлÑÑÑÑÑ ÐºÐ¾Ð½ÑÑоллеÑом диÑка; в оÑобенноÑÑи ÑÑо каÑаеÑÑÑ RAID-конÑÑоллеÑов. РнекоÑоÑÑÑ ÑлÑÑаÑÑ ÑÑо кеÑиÑование ÑабоÑÐ°ÐµÑ Ð² Ñежиме Ñквозной запиÑи, ÑÑо ознаÑаеÑ, ÑÑо запиÑÑ Ð¾ÑÑÑеÑÑвлÑеÑÑÑ Ð½Ð° диÑк как ÑолÑко пÑÐ¸Ñ Ð¾Ð´ÑÑ Ð´Ð°Ð½Ð½Ñе. РдÑÑÐ³Ð¸Ñ ÑлÑÑаÑÑ , возможна ÑабоÑа в Ñежиме оÑложенной запиÑи, ÑÑо ознаÑаеÑ, ÑÑо запиÑÑ Ð¾ÑÑÑеÑÑвлÑеÑÑÑ Ð½ÐµÐºÐ¾ÑоÑое вÑÐµÐ¼Ñ ÑпÑÑÑÑ. Такой Ñежим кеÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð¶ÐµÑ ÑоздаваÑÑ ÑиÑк Ð´Ð»Ñ Ð½Ð°Ð´ÑжноÑÑи, поÑÐ¾Ð¼Ñ ÑÑо памÑÑÑ ÐºÐ¾Ð½ÑÑоллеÑа диÑка непоÑÑоÑнна и бÑÐ´ÐµÑ Ð¿Ð¾ÑеÑÑна в ÑлÑÑае поÑеÑи пиÑаниÑ. ÐÑÑÑие конÑÑоллеÑÑ Ð¸Ð¼ÐµÑÑ Ñак назÑваемÑÑ Ð±Ð°ÑаÑÐµÑ ÑезеÑвного пиÑÐ°Ð½Ð¸Ñ (Battery-Backup Unit, BBU), коÑоÑÐ°Ñ ÑÐ¾Ñ ÑанÑÐµÑ ÐºÐµÑ ÐºÐ¾Ð½ÑÑоллеÑа на баÑаÑее, еÑли пÑопадÑÑ ÑиÑÑемное пиÑание. ÐоÑле Ð²Ð¾Ð·Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¸ÑаниÑ, даннÑе, оÑÑавÑиеÑÑ Ð² кеÑе конÑÑоллеÑа, бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÐ°Ð½Ñ Ð½Ð° диÑки.
РнаконеÑ, многие диÑки имеÑÑ Ð²Ð½ÑÑÑенний кеÑ. Ðа ÐºÐ°ÐºÐ¸Ñ -Ñо диÑÐºÐ°Ñ Ð¾Ð½ ÑабоÑÐ°ÐµÑ Ð² Ñежиме Ñквозной запиÑи, на дÑÑÐ³Ð¸Ñ â в Ñежиме оÑложенной запиÑи. РпоÑледнем ÑлÑÑае Ñ ÐºÐµÑем диÑка ÑвÑÐ·Ð°Ð½Ñ Ñе же ÑиÑки поÑеÑи даннÑÑ , ÑÑо и Ñ ÐºÐµÑем конÑÑоллеÑа диÑков. Ð ÑаÑÑноÑÑи, ÐºÐµÑ Ð¾Ñложенной запиÑи, ÑбÑаÑÑваÑÑийÑÑ Ð¿Ñи поÑеÑе пиÑаниÑ, ÑаÑÑо имеÑÑ Ð´Ð¸Ñки IDE и SATA поÑÑебиÑелÑÑкого клаÑÑа. Также завиÑимÑй Ð¾Ñ Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ ÐºÐµÑ Ð¾Ñложенной запиÑи имеÑÑ Ð¼Ð½Ð¾Ð³Ð¸Ðµ SSD-накопиÑели.
ÐбÑÑно, Ñакое кеÑиÑование можно вÑклÑÑиÑÑ; однако Ñо, как ÑÑо делаеÑÑÑ, ÑазлиÑаеÑÑÑ Ð´Ð»Ñ Ð¾Ð¿ÐµÑаÑионной ÑиÑÑÐµÐ¼Ñ Ð¸ Ð´Ð»Ñ Ñипа диÑка:
Ð Linux паÑамеÑÑÑ Ð´Ð¸Ñков IDE и SATA могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
hdparm -I; кеÑиÑование запиÑи вклÑÑено, еÑли за ÑÑÑокойWrite cacheÑледÑеÑ*. ÐÐ»Ñ Ð²ÑклÑÑÐµÐ½Ð¸Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзована командаhdparm -W 0. ÐаÑамеÑÑÑ SCSI-диÑков могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÑÑилиÑÑ sdparm. ÐÑполÑзÑйÑеsdparm --get=WCE, ÑÑÐ¾Ð±Ñ Ð¿ÑовеÑиÑÑ, вклÑÑено ли кеÑиÑование запиÑи, иsdparm --clear=WCE, ÑÑÐ¾Ð±Ñ Ð²ÑклÑÑиÑÑ ÐµÐ³Ð¾.Ðо FreeBSD паÑамеÑÑÑ IDE-диÑков могÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ
camcontrol identify, а кеÑиÑование запиÑи вÑклÑÑаеÑÑÑ Ð¿Ñи помоÑи ÑÑÑановки паÑамеÑÑаhw.ata.wc=0в Ñайле/boot/loader.conf; ÐÐ»Ñ SCSI-диÑков паÑамеÑÑÑ Ð¼Ð¾Ð³ÑÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑенÑ, иÑполÑзÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñcamcontrol identify, а кеÑиÑование запиÑи изменÑеÑÑÑ Ð¿Ñи помоÑи ÑÑилиÑÑsdparm.Ð Solaris кеÑиÑованием запиÑи на диÑк ÑпÑавлÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°
format -e. (ÐÑполÑзование Ñайловой ÑиÑÑÐµÐ¼Ñ Solaris ZFS, пÑи вклÑÑÑнном кеÑиÑовании запиÑи на диÑк, ÑвлÑеÑÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑнÑм, поÑÐ¾Ð¼Ñ ÑÑо она иÑполÑзÑÐµÑ ÑобÑÑвеннÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑбÑоÑа кеÑа на диÑк.)Ð Windows, еÑли паÑамеÑÑ
wal_sync_methodÑÑÑановлен вopen_datasync(по ÑмолÑаниÑ), кеÑиÑование запиÑи на диÑк Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÑклÑÑено ÑнÑÑием галоÑкиMy Computer\Open\. РкаÑеÑÑве алÑÑеÑнаÑивÑ, можно ÑÑÑановиÑÑ Ð¿Ð°ÑамеÑÑдиÑк\Properties\Hardware\Properties\Policies\Enable write caching on the diskwal_sync_methodв знаÑениеfdatasync(ÑолÑко Ð´Ð»Ñ NTFS) илиfsync, ÑÑо пÑедоÑвÑаÑÐ°ÐµÑ ÐºÐµÑиÑование запиÑи.Ð macOS кеÑиÑование запиÑи можно оÑклÑÑиÑÑ, ÑÑÑановив Ð´Ð»Ñ Ð¿Ð°ÑамеÑÑа
wal_sync_methodзнаÑениеfsync_writethrough.
ÐовÑе модели SATA-диÑков (коÑоÑÑе ÑооÑвеÑÑÑвÑÑÑ ÑÑандаÑÑÑ ATAPI-6 или более позднемÑ) пÑедлагаÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑбÑоÑа кеÑа на диÑк (FLUSH CACHE EXT), а SCSI-диÑки Ñже давно поддеÑживаÑÑ Ð¿Ð¾Ñ
ожÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ SYNCHRONIZE CACHE. ÐÑи ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð½ÐµÐ´Ð¾ÑÑÑÐ¿Ð½Ñ Ð¸Ð· Postgres Pro напÑÑмÑÑ, но некоÑоÑÑе ÑайловÑе ÑиÑÑÐµÐ¼Ñ (напÑимеÑ, ZFS, ext4), могÑÑ Ð¸ÑполÑзоваÑÑ Ð¸Ñ
Ð´Ð»Ñ ÑбÑоÑа даннÑÑ
из кеÑа на плаÑÑÐ¸Ð½Ñ Ð´Ð¸Ñка пÑи вклÑÑÑнном Ñежиме кеÑа Ñквозной запиÑи. Ð ÑожалениÑ, Ñакие ÑайловÑе ÑиÑÑÐµÐ¼Ñ Ð²ÐµÐ´ÑÑ ÑÐµÐ±Ñ Ð½ÐµÐ¾Ð¿ÑималÑно пÑи комбиниÑовании Ñ Ð±Ð°ÑаÑеей ÑезеÑвного пиÑÐ°Ð½Ð¸Ñ (BBU) диÑкового конÑÑоллеÑа. Ð ÑакиÑ
ÑлÑÑаÑÑ
, команда ÑинÑ
ÑонизаÑии пÑинÑÐ¶Ð´Ð°ÐµÑ ÑоÑ
ÑанÑÑÑ Ð²Ñе даннÑе на диÑк из кеÑа конÑÑоллеÑа, ÑÐ²Ð¾Ð´Ñ Ð¿ÑеимÑÑеÑÑво BBU к нÑлÑ. ÐÑ Ð¼Ð¾Ð¶ÐµÑе запÑÑÑиÑÑ Ð¼Ð¾Ð´ÑÐ»Ñ pg_test_fsync, ÑÑÐ¾Ð±Ñ ÑвидеÑÑ, ÑÑо Ð²Ñ Ð¿Ð¾Ð¿Ð°Ð»Ð¸ в ÑÑÑ ÑиÑÑаÑиÑ. ÐÑли ÑÑо Ñак, пÑеимÑÑеÑÑва пÑоизводиÑелÑноÑÑи BBU могÑÑ Ð±ÑÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ Ð²ÑклÑÑÐµÐ½Ð¸Ñ Ð±Ð°ÑÑеÑов запиÑи Ð´Ð»Ñ Ñайловой ÑиÑÑÐµÐ¼Ñ Ð¸Ð»Ð¸ пеÑеконÑигÑÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÐºÐ¾Ð½ÑÑоллеÑа диÑка, еÑли ÑÑо возможно. ÐÑли баÑÑеÑÑ Ð·Ð°Ð¿Ð¸Ñи вÑклÑÑенÑ, ÑбедиÑеÑÑ, ÑÑо баÑаÑÐµÑ Ð³Ð¾Ð´Ð½Ð°Ñ; пÑи оÑказе баÑаÑеи Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑоизойÑи поÑеÑÑ Ð´Ð°Ð½Ð½ÑÑ
. ÐÑÑÑ Ð½Ð°Ð´ÐµÐ¶Ð´Ð°, ÑÑо ÑазÑабоÑÑики ÑайловÑÑ
ÑиÑÑем и конÑÑоллеÑов диÑков, в конÑе конÑов, ÑÑÑÑанÑÑ ÑÑо неопÑималÑное поведение.
Ðогда опеÑаÑÐ¸Ð¾Ð½Ð½Ð°Ñ ÑиÑÑема оÑпÑавлÑÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð½Ð° запиÑÑ Ðº аппаÑаÑÐ½Ð¾Ð¼Ñ Ð¾Ð±ÐµÑпеÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ
ÑÐ°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ
, она мало ÑÑо Ð¼Ð¾Ð¶ÐµÑ ÑделаÑÑ, ÑÑÐ¾Ð±Ñ ÑбедиÑÑÑÑ, ÑÑо даннÑе дейÑÑвиÑелÑно ÑоÑ
ÑÐ°Ð½ÐµÐ½Ñ Ð² какой-либо ÑнеÑгонезавиÑимой облаÑÑи. СкоÑее, ÑÑо ÑвлÑеÑÑÑ Ð·Ð¾Ð½Ð¾Ð¹ оÑвеÑÑÑвенноÑÑи админиÑÑÑаÑоÑа, ÑбедиÑÑÑÑ Ð² ÑелоÑÑноÑÑи даннÑÑ
на вÑеÑ
компоненÑаÑ
Ñ
ÑанениÑ. ÐзбегайÑе диÑковÑÑ
конÑÑоллеÑов, коÑоÑÑе не имеÑÑ Ð±Ð°ÑаÑей ÑезеÑвного пиÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ ÐºÐµÑиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñи. Ðа ÑÑовне диÑка, запÑеÑиÑе Ñежим оÑложенной запиÑи, еÑли диÑк не Ð¼Ð¾Ð¶ÐµÑ Ð³Ð°ÑанÑиÑоваÑÑ, ÑÑо даннÑе бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑÐ°Ð½Ñ Ð¿ÐµÑед вÑклÑÑением. ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе SSD, знайÑе, ÑÑо многие из ниÑ
по ÑмолÑÐ°Ð½Ð¸Ñ Ð½Ðµ вÑполнÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ ÑбÑоÑа кеÑа на диÑк. ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑоÑеÑÑиÑоваÑÑ Ð½Ð°Ð´ÑжноÑÑÑ Ð¿Ð¾Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾Ð´ÑиÑÑÐµÐ¼Ñ Ð²Ð²Ð¾Ð´Ð°-вÑвода, иÑполÑзÑÑ diskchecker.pl.
ÐÑÑгой ÑиÑк поÑеÑи даннÑÑ ÑоÑÑÐ¾Ð¸Ñ Ð² Ñамой запиÑи на плаÑÑÐ¸Ð½Ñ Ð´Ð¸Ñка. ÐлаÑÑÐ¸Ð½Ñ Ð´Ð¸Ñка ÑазделÑÑÑÑÑ Ð½Ð° ÑекÑоÑÑ, обÑÑно по 512 Ð±Ð°Ð¹Ñ ÐºÐ°Ð¶Ð´Ñй. ÐÐ°Ð¶Ð´Ð°Ñ Ð¾Ð¿ÐµÑаÑÐ¸Ñ ÑизиÑеÑкого ÑÑÐµÐ½Ð¸Ñ Ð¸Ð»Ð¸ запиÑи обÑабаÑÑÐ²Ð°ÐµÑ ÑелÑй ÑекÑоÑ. Ðогда диÑковÑй накопиÑÐµÐ»Ñ Ð¿Ð¾Ð»ÑÑÐ°ÐµÑ Ð·Ð°Ð¿ÑÐ¾Ñ Ð½Ð° запиÑÑ, он Ð¼Ð¾Ð¶ÐµÑ ÑооÑвеÑÑÑвоваÑÑ Ð½ÐµÑколÑким ÑекÑоÑам по 512 Ð±Ð°Ð¹Ñ (Postgres Pro обÑÑно за один Ñаз запиÑÑÐ²Ð°ÐµÑ 8192 байÑа или 16 ÑекÑоÑов) и из-за оÑказа пиÑÐ°Ð½Ð¸Ñ Ð¿ÑоÑеÑÑ Ð·Ð°Ð¿Ð¸Ñи Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°ÐºÐ¾Ð½ÑиÑÑÑ Ð½ÐµÑдаÑей в лÑбое вÑемÑ, ÑÑо ознаÑаеÑ, ÑÑо некоÑоÑÑе из 512-байÑовÑÑ ÑекÑоÑов бÑдÑÑ Ð·Ð°Ð¿Ð¸ÑанÑ, а некоÑоÑÑе неÑ. ЧÑÐ¾Ð±Ñ Ð·Ð°ÑиÑиÑÑÑÑ Ð¾Ñ ÑÐ°ÐºÐ¸Ñ Ñбоев, пеÑед изменением ÑакÑиÑеÑкой ÑÑÑаниÑÑ Ð½Ð° диÑке Postgres Pro пеÑиодиÑеÑки запиÑÑÐ²Ð°ÐµÑ Ð¿Ð¾Ð»Ð½Ñе обÑÐ°Ð·Ñ ÑÑÑÐ°Ð½Ð¸Ñ Ð½Ð° поÑÑоÑнное ÑÑÑÑойÑÑво Ñ ÑÐ°Ð½ÐµÐ½Ð¸Ñ WAL. Так во вÑÐµÐ¼Ñ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾ÑÑÑановиÑÑ Ð¸Ð· WAL ÑаÑÑиÑно запиÑаннÑе ÑÑÑаниÑÑ. ÐÑли ÑÐ°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑÑема заÑиÑена Ð¾Ñ ÑаÑÑиÑной запиÑи ÑÑÑÐ°Ð½Ð¸Ñ (напÑимеÑ, ZFS), оÑклÑÑиÑÑ ÑабоÑÑ Ñ Ð¾Ð±Ñазами ÑÑÑÐ°Ð½Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð¾ пÑи помоÑи конÑигÑÑаÑионного паÑамеÑÑа full_page_writes. ÐаÑаÑÐµÑ ÑезеÑвного пиÑÐ°Ð½Ð¸Ñ (BBU) конÑÑоллеÑа диÑка не заÑиÑÐ°ÐµÑ Ð¾Ñ ÑаÑÑиÑной запиÑи ÑÑÑаниÑ, еÑли не гаÑанÑиÑÑеÑÑÑ, ÑÑо даннÑе запиÑÐ°Ð½Ñ Ð² BBU как полнÑе (8 ÐÐ) ÑÑÑаниÑÑ.
Postgres Pro Ñакже заÑиÑÐ°ÐµÑ Ð¾Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ Ð²Ð¸Ð´Ð¾Ð² повÑÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ Ð½Ð° ÑÑÑÑойÑÑÐ²Ð°Ñ Ñ ÑанениÑ, коÑоÑÑе могÑÑ Ð¿ÑоизойÑи из-за аппаÑаÑнÑÑ Ð¾Ñибок или из-за деÑекÑов повеÑÑ Ð½Ð¾ÑÑи Ñ ÑеÑением вÑемени, напÑимеÑ, пÑи опеÑаÑиÑÑ ÑÑениÑ/запиÑи во вÑÐµÐ¼Ñ ÑбоÑки мÑÑоÑа.
ÐÐ°Ð¶Ð´Ð°Ñ Ð¸Ð½Ð´Ð¸Ð²Ð¸Ð´ÑалÑÐ½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑ Ð² WAL заÑиÑена Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑÑÐ¼Ð¼Ñ Ð¿Ð¾ алгоÑиÑÐ¼Ñ CRC-32C (32-bit), ÑÑо позволÑÐµÑ ÑÑдиÑÑ Ð¾ коÑÑекÑноÑÑи даннÑÑ Ð² запиÑи. ÐнаÑение CRC ÑÑÑанавливаеÑÑÑ, когда Ð¼Ñ Ð¿Ð¸Ñем каждÑÑ Ð·Ð°Ð¿Ð¸ÑÑ WAL и пÑовеÑÑеÑÑÑ Ð² Ñ Ð¾Ð´Ðµ воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñле ÑбоÑ, воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ð· аÑÑ Ð¸Ð²Ð°, и пÑи ÑепликаÑии.
СÑÑаниÑÑ Ð´Ð°Ð½Ð½ÑÑ Ð·Ð°ÑиÑаÑÑÑÑ ÐºÐ¾Ð½ÑÑолÑнÑми ÑÑммами по ÑмолÑаниÑ, и полнÑе обÑÐ°Ð·Ñ ÑÑÑаниÑ, запиÑаннÑе в WAL, вÑегда заÑиÑенÑ.
ÐÐ»Ñ Ð²Ð½ÑÑÑÐµÐ½Ð½Ð¸Ñ ÑÑÑÑкÑÑÑ Ð´Ð°Ð½Ð½ÑÑ , ÑÐ°ÐºÐ¸Ñ ÐºÐ°Ðº
pg_xact,pg_subtrans,pg_multixact,pg_serial,pg_notify,pg_stat,pg_snapshotsне ведÑÑÑÑ ÑаÑÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑÑммÑ, Ñавно как и Ð´Ð»Ñ ÑÑÑаниÑ, заÑиÑÑннÑÑ Ð¿Ð¾ÑÑедÑÑвом полноÑÑÑаниÑной запиÑи. Ðднако Ñам, где Ñакие ÑÑÑÑкÑÑÑÑ Ð´Ð°Ð½Ð½ÑÑ ÑвлÑÑÑÑÑ Ð¿Ð¾ÑÑоÑннÑми, запиÑи WAL пиÑÑÑÑÑ Ñаким обÑазом, ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ñле ÑÐ±Ð¾Ñ Ð±Ñло возможно аккÑÑаÑно повÑоÑиÑÑ Ð¿Ð¾Ñледние изменениÑ, а ÑÑи запиÑи WAL заÑиÑаÑÑÑÑ Ñак же, как опиÑано вÑÑе.Ð¤Ð°Ð¹Ð»Ñ ÐºÐ°Ñалога
pg_twophaseзаÑиÑÐµÐ½Ñ Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑÑÐ¼Ð¼Ñ CRC-32C.ÐÑеменнÑе ÑÐ°Ð¹Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ , иÑполÑзÑемÑе в болÑÑÐ¸Ñ SQL-запÑоÑÐ°Ñ Ð´Ð»Ñ ÑоÑÑиÑовки, маÑеÑиализаÑии и пÑомежÑÑоÑнÑÑ ÑезÑлÑÑаÑов, в наÑÑоÑÑее вÑÐµÐ¼Ñ Ð½Ðµ заÑиÑаÑÑÑÑ ÐºÐ¾Ð½ÑÑолÑной ÑÑммой, а Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² ÑÑÐ¸Ñ ÑÐ°Ð¹Ð»Ð°Ñ Ð½Ðµ оÑÑажаÑÑÑÑ Ð² WAL.
Postgres Pro не заÑиÑÐ°ÐµÑ Ð¾Ñ ÐºÐ¾ÑÑекÑиÑÑемÑÑ Ð¾Ñибок памÑÑи; пÑедполагаеÑÑÑ, ÑÑо Ð²Ñ Ð±ÑдеÑе ÑабоÑаÑÑ Ñ Ð¿Ð°Ð¼ÑÑÑÑ, коÑоÑÐ°Ñ Ð¸ÑполÑзÑÐµÑ Ð¿ÑомÑÑленнÑй ÑÑандаÑÑ ÐºÐ¾ÑÑекÑии оÑибок (ECC, Error Correcting Codes) или лÑÑÑÑÑ Ð·Ð°ÑиÑÑ.