14.4. Ðаполнение Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ #
- 14.4.1. ÐÑклÑÑиÑе авÑоÑикÑаÑÐ¸Ñ ÑÑанзакÑий
- 14.4.2. ÐÑполÑзÑйÑе
COPY- 14.4.3. УдалиÑе индекÑÑ
- 14.4.4. УдалиÑе огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑÐ½Ð¸Ñ ÐºÐ»ÑÑей
- 14.4.5. УвелиÑÑÑе
maintenance_work_mem- 14.4.6. УвелиÑÑÑе
max_wal_size- 14.4.7. ÐÑклÑÑиÑе аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL и поÑоковÑÑ ÑепликаÑиÑ
- 14.4.8. ÐÑполниÑе в конÑе
ANALYZE- 14.4.9. ÐеÑколÑко замеÑаний оÑноÑиÑелÑно pg_dump
- 14.4.2. ÐÑполÑзÑйÑе
ÐоволÑно ÑаÑÑо в наÑале или в пÑоÑеÑÑе иÑполÑÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ Ð²Ð¾Ð·Ð½Ð¸ÐºÐ°ÐµÑ Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ÑÑÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð² Ð½ÐµÑ Ð±Ð¾Ð»ÑÑой обÑÑм даннÑÑ . Ð ÑÑом Ñазделе пÑÐ¸Ð²ÐµÐ´ÐµÐ½Ñ ÑекомендаÑии, коÑоÑÑе помогÑÑ ÑделаÑÑ ÑÑо макÑималÑно ÑÑÑекÑивно.
14.4.1. ÐÑклÑÑиÑе авÑоÑикÑаÑÐ¸Ñ ÑÑанзакÑий #
ÐÑполнÑÑ ÑеÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ INSERT, вÑклÑÑиÑе авÑоÑикÑаÑÐ¸Ñ ÑÑанзакÑий и заÑикÑиÑÑйÑе ÑÑанзакÑÐ¸Ñ ÑолÑко один Ñаз в Ñамом конÑе. (РобÑÑном SQL ÑÑо ознаÑаеÑ, ÑÑо нÑжно вÑполниÑÑ BEGIN до, и COMMIT поÑле ÑÑой ÑеÑии. ÐекоÑоÑÑе клиенÑÑкие библиоÑеки могÑÑ Ð´ÐµÐ»Ð°ÑÑ ÑÑо авÑомаÑиÑеÑки, в ÑакиÑ
ÑлÑÑаÑÑ
нÑжно ÑбедиÑÑÑÑ, ÑÑо ÑÑо Ñак.) ÐÑли Ð²Ñ Ð±ÑдеÑе ÑикÑиÑоваÑÑ ÐºÐ°Ð¶Ð´Ð¾Ðµ добавление по оÑделÑноÑÑи, Postgres Pro пÑидÑÑÑÑ Ð¿ÑоделаÑÑ Ð¼Ð½Ð¾Ð³Ð¾ дейÑÑвий Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ добавлÑемой ÑÑÑоки. ÐÑполнÑÑÑ Ð²Ñе опеÑаÑии в одной ÑÑанзакÑии Ñ
оÑоÑо еÑÑ Ð¸ поÑомÑ, ÑÑо в ÑлÑÑае оÑибки Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ð´Ð½Ð¾Ð¹ из ÑÑÑок пÑоизойдÑÑ Ð¾ÑÐºÐ°Ñ Ðº иÑÑ
Ð¾Ð´Ð½Ð¾Ð¼Ñ ÑоÑÑоÑÐ½Ð¸Ñ Ð¸ Ð²Ñ Ð½Ðµ окажеÑеÑÑ Ð² Ñложной ÑиÑÑаÑии Ñ ÑаÑÑиÑно загÑÑженнÑми даннÑми.
14.4.2. ÐÑполÑзÑйÑе COPY #
ÐÑполÑзÑйÑе COPY, ÑÑÐ¾Ð±Ñ Ð·Ð°Ð³ÑÑзиÑÑ Ð²Ñе ÑÑÑоки одной командой вмеÑÑо ÑеÑии INSERT. Ðоманда COPY опÑимизиÑована Ð´Ð»Ñ Ð·Ð°Ð³ÑÑзки болÑÑого колиÑеÑÑва ÑÑÑок; Ñ
оÑÑ Ð¾Ð½Ð° не Ñак гибка, как INSERT, но пÑи загÑÑзке болÑÑиÑ
обÑÑмов даннÑÑ
она влеÑÑÑ Ð³Ð¾Ñаздо менÑÑе накладнÑÑ
ÑаÑÑ
одов. Так как COPY â ÑÑо одна команда, пÑименÑÑ ÐµÑ, Ð½ÐµÑ Ð½ÐµÐ¾Ð±Ñ
одимоÑÑи оÑклÑÑаÑÑ Ð°Ð²ÑоÑикÑаÑÐ¸Ñ ÑÑанзакÑий.
Ð ÑлÑÑаÑÑ
, когда COPY не подÑ
одиÑ, Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ ÑоздаÑÑ Ð¿Ð¾Ð´Ð³Ð¾ÑовленнÑй опеÑаÑÐ¾Ñ INSERT Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ PREPARE, а заÑем вÑполнÑÑÑ EXECUTE ÑÑолÑко Ñаз, ÑколÑко поÑÑебÑеÑÑÑ. ÐÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°ÑÑ Ð½Ð°ÐºÐ»Ð°Ð´Ð½ÑÑ
ÑаÑÑ
одов, ÑвÑзаннÑÑ
Ñ ÑазбоÑом и анализом каждой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ INSERT. Ð ÑазнÑÑ
инÑеÑÑейÑаÑ
ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð²ÑглÑдеÑÑ Ð¿Ð¾-ÑазномÑ; за подÑобноÑÑÑми обÑаÑиÑеÑÑ Ðº опиÑÐ°Ð½Ð¸Ñ Â«Ð¿Ð¾Ð´Ð³Ð¾ÑовленнÑÑ
опеÑаÑоÑов» в докÑменÑаÑии конкÑеÑного инÑеÑÑейÑа.
ÐамеÑÑÑе, ÑÑо Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ COPY болÑÑое колиÑеÑÑво ÑÑÑок пÑакÑиÑеÑки вÑегда загÑÑжаеÑÑÑ Ð±ÑÑÑÑее, Ñем Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ INSERT, даже еÑли иÑполÑзÑеÑÑÑ PREPARE и ÑеÑÐ¸Ñ Ð¾Ð¿ÐµÑаÑий Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð·Ð°ÐºÐ»ÑÑена в Ð¾Ð´Ð½Ñ ÑÑанзакÑиÑ.
COPY ÑабоÑÐ°ÐµÑ Ð±ÑÑÑÑее вÑего, еÑли она вÑполнÑеÑÑÑ Ð² одной ÑÑанзакÑии Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ð¼Ð¸ CREATE TABLE или TRUNCATE. Ð ÑакиÑ
ÑлÑÑаÑÑ
запиÑÑваÑÑ WAL не нÑжно, Ñак как в ÑлÑÑае оÑибки ÑайлÑ, ÑодеÑжаÑие загÑÑжаемÑе даннÑе, бÑдÑÑ Ð²ÑÑ Ñавно ÑдаленÑ. Ðднако ÑÑо замеÑание ÑпÑаведливо, ÑолÑко когда паÑамеÑÑ wal_level Ñавен minimal, Ñак как в пÑоÑивном ÑлÑÑае вÑе ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ Ð·Ð°Ð¿Ð¸ÑÑваÑÑ Ñвои Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð² WAL.
14.4.3. УдалиÑе индекÑÑ #
ÐÑли Ð²Ñ Ð·Ð°Ð³ÑÑжаеÑе даннÑе в ÑолÑко ÑÑо ÑозданнÑÑ ÑаблиÑÑ, бÑÑÑÑее вÑего бÑÐ´ÐµÑ Ð·Ð°Ð³ÑÑзиÑÑ Ð´Ð°Ð½Ð½Ñе Ñ Ð¿Ð¾Ð¼Ð¾ÑÑÑ COPY, а заÑем ÑоздаÑÑ Ð²Ñе необÑ
одимÑе Ð´Ð»Ñ Ð½ÐµÑ Ð¸Ð½Ð´ÐµÐºÑÑ. Ðа Ñоздание индекÑа Ð´Ð»Ñ Ñже ÑÑÑеÑÑвÑÑÑиÑ
даннÑÑ
ÑйдÑÑ Ð¼ÐµÐ½ÑÑе вÑемени, Ñем на поÑледоваÑелÑное его обновление пÑи добавлении каждой ÑÑÑоки.
ÐÑли Ð²Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÑеÑе даннÑе в ÑÑÑеÑÑвÑÑÑÑÑ ÑаблиÑÑ, Ð¼Ð¾Ð¶ÐµÑ Ð¸Ð¼ÐµÑÑ ÑмÑÑл ÑдалиÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ, загÑÑзиÑÑ ÑаблиÑÑ, а заÑем пеÑеÑоздаÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ. ÐонеÑно, пÑи ÑÑом надо ÑÑиÑÑваÑÑ, ÑÑо вÑеменное оÑÑÑÑÑÑвие индекÑов Ð¼Ð¾Ð¶ÐµÑ Ð¾ÑÑиÑаÑелÑно повлиÑÑÑ Ð½Ð° ÑкоÑоÑÑÑ ÑабоÑÑ Ð´ÑÑÐ³Ð¸Ñ Ð¿Ð¾Ð»ÑзоваÑелей. ÐÑоме Ñого, ÑледÑÐµÑ Ð´Ð²Ð°Ð¶Ð´Ñ Ð¿Ð¾Ð´ÑмаÑÑ, пÑежде Ñем ÑдалÑÑÑ ÑникалÑнÑе индекÑÑ, Ñак как без Ð½Ð¸Ñ ÑооÑвеÑÑÑвÑÑÑие пÑовеÑки клÑÑей не бÑдÑÑ Ð²ÑполнÑÑÑÑÑ.
14.4.4. УдалиÑе огÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑÐ½Ð¸Ñ ÐºÐ»ÑÑей #
Ðак и Ñ Ð¸Ð½Ð´ÐµÐºÑами, пÑовеÑки, ÑвÑзаннÑе Ñ Ð¾Ð³ÑаниÑениÑми внеÑÐ½Ð¸Ñ ÐºÐ»ÑÑей, вÑгоднее вÑполнÑÑÑ Â«Ð¼Ð°ÑÑово», а не Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ ÑÑÑоки в оÑделÑноÑÑи. ÐоÑÑÐ¾Ð¼Ñ Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÐµÐ·Ð½Ð¾ ÑдалиÑÑ Ð¾Ð³ÑаниÑÐµÐ½Ð¸Ñ Ð²Ð½ÐµÑÐ½Ð¸Ñ ÐºÐ»ÑÑей, загÑÑзиÑÑ Ð´Ð°Ð½Ð½Ñе, а заÑем воÑÑÑановиÑÑ Ð¿Ñежние огÑаниÑениÑ. Рв ÑÑом ÑлÑÑае Ñоже пÑÐ¸Ñ Ð¾Ð´Ð¸ÑÑÑ Ð²ÑбиÑаÑÑ Ð¼ÐµÐ¶Ð´Ñ ÑкоÑоÑÑÑÑ Ð·Ð°Ð³ÑÑзки даннÑÑ Ð¸ ÑиÑком допÑÑÑиÑÑ Ð¾Ñибки в оÑÑÑÑÑÑвие огÑаниÑений.
Ðолее Ñого, когда Ð²Ñ Ð·Ð°Ð³ÑÑжаеÑе даннÑе в ÑаблиÑÑ Ñ ÑÑÑеÑÑвÑÑÑими огÑаниÑениÑми внеÑнего клÑÑа, Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ новой ÑÑÑоки добавлÑеÑÑÑ Ð·Ð°Ð¿Ð¸ÑÑ Ð² оÑеÑÐµÐ´Ñ ÑобÑÑий ÑÑиггеÑа (Ñак как именно ÑÑабаÑÑваÑÑий ÑÑÐ¸Ð³Ð³ÐµÑ Ð¿ÑовеÑÑÐµÑ Ñакие огÑаниÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ ÑÑÑоки). ÐÑи загÑÑзке Ð¼Ð½Ð¾Ð³Ð¸Ñ Ð¼Ð¸Ð»Ð»Ð¸Ð¾Ð½Ð¾Ð² ÑÑÑок оÑеÑÐµÐ´Ñ ÑобÑÑий ÑÑиггеÑа Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð½ÑÑÑ Ð²ÑÑ Ð´Ð¾ÑÑÑпнÑÑ Ð¿Ð°Ð¼ÑÑÑ, ÑÑо пÑиведÑÑ Ðº недопÑÑÑимой нагÑÑзке на Ñайл подкаÑки или даже к ÑÐ±Ð¾Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ. Таким обÑазом, загÑÑÐ¶Ð°Ñ Ð±Ð¾Ð»ÑÑие обÑÑÐ¼Ñ Ð´Ð°Ð½Ð½ÑÑ , Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð½Ðµ пÑоÑÑо желаÑелÑно, а Ð½ÐµÐ¾Ð±Ñ Ð¾Ð´Ð¸Ð¼Ð¾ ÑдалÑÑÑ, а заÑем воÑÑÑанавливаÑÑ Ð²Ð½ÐµÑние клÑÑи. ÐÑли же вÑеменное оÑклÑÑение ÑÑого огÑаниÑÐµÐ½Ð¸Ñ Ð½ÐµÐ¿Ñиемлемо, единÑÑвенно возможнÑм ÑеÑением Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ñазделение вÑей опеÑаÑии загÑÑзки на менÑÑие ÑÑанзакÑии.
14.4.5. УвелиÑÑÑе maintenance_work_mem #
УÑкоÑиÑÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ Ð±Ð¾Ð»ÑÑиÑ
обÑÑмов даннÑÑ
можно, ÑвелиÑив паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии maintenance_work_mem на вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки. ÐÑо пÑиведÑÑ Ðº ÑвелиÑÐµÐ½Ð¸Ñ Ð±ÑÑÑÑодейÑÑÐ²Ð¸Ñ CREATE INDEX и ALTER TABLE ADD FOREIGN KEY. Ðа ÑкоÑоÑÑÑ Ñамой ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ COPY ÑÑо не повлиÑеÑ, Ñак ÑÑо ÑÑÐ¾Ñ ÑÐ¾Ð²ÐµÑ Ð±ÑÐ´ÐµÑ Ð¿Ð¾Ð»ÐµÐ·ÐµÐ½, ÑолÑко еÑли Ð²Ñ Ð¿ÑименÑеÑе какой-либо из двÑÑ
вÑÑеопиÑаннÑÑ
пÑиÑмов.
14.4.6. УвелиÑÑÑе max_wal_size #
Также маÑÑовÑÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ Ð´Ð°Ð½Ð½ÑÑ
можно ÑÑкоÑиÑÑ, изменив на вÑÐµÐ¼Ñ Ð·Ð°Ð³ÑÑзки паÑамеÑÑ ÐºÐ¾Ð½ÑигÑÑаÑии max_wal_size. ÐагÑÑÐ¶Ð°Ñ Ð±Ð¾Ð»ÑÑие обÑÑÐ¼Ñ Ð´Ð°Ð½Ð½ÑÑ
, Postgres Pro вÑнÑжден ÑвелиÑиваÑÑ ÑаÑÑоÑÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ
ÑоÑек по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð¾Ð±ÑÑной (коÑоÑÐ°Ñ Ð·Ð°Ð´Ð°ÑÑÑÑ Ð¿Ð°ÑамеÑÑом checkpoint_timeout), а знаÑÐ¸Ñ Ð¸ ÑаÑе ÑбÑаÑÑваÑÑ Â«Ð³ÑÑзнÑе» ÑÑÑаниÑÑ Ð½Ð° диÑк. ÐÑеменно ÑвелиÑив max_wal_size, можно ÑменÑÑиÑÑ ÑаÑÑоÑÑ ÐºÐ¾Ð½ÑÑолÑнÑÑ
ÑоÑек и ÑвÑзаннÑÑ
Ñ Ð½Ð¸Ð¼Ð¸ опеÑаÑий ввода-вÑвода.
14.4.7. ÐÑклÑÑиÑе аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL и поÑоковÑÑ ÑепликаÑÐ¸Ñ #
ÐÐ»Ñ Ð·Ð°Ð³ÑÑзки болÑÑиÑ
обÑÑмов даннÑÑ
в ÑÑеде, где иÑполÑзÑеÑÑÑ Ð°ÑÑ
иваÑÐ¸Ñ WAL или поÑÐ¾ÐºÐ¾Ð²Ð°Ñ ÑепликаÑиÑ, бÑÑÑÑее бÑÐ´ÐµÑ ÑделаÑÑ ÐºÐ¾Ð¿Ð¸Ñ Ð±Ð°Ð·Ñ Ð´Ð°Ð½Ð½ÑÑ
поÑле загÑÑзки даннÑÑ
, Ñем обÑабаÑÑваÑÑ Ð¼Ð½Ð¾Ð¶ÐµÑÑво опеÑаÑий изменений в WAL. ЧÑÐ¾Ð±Ñ Ð¾ÑклÑÑиÑÑ Ð¿ÐµÑедаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ ÑеÑез WAL в пÑоÑеÑÑе загÑÑзки, оÑклÑÑиÑе аÑÑ
иваÑÐ¸Ñ Ð¸ поÑоковÑÑ ÑепликаÑиÑ, назнаÑÑÑе паÑамеÑÑÑ wal_level знаÑение minimal, archive_mode â off, а max_wal_senders â 0. Ðо имейÑе в видÑ, ÑÑо изменÑннÑе паÑамеÑÑÑ Ð²ÑÑÑпÑÑ Ð² ÑÐ¸Ð»Ñ ÑолÑко поÑле пеÑезапÑÑка ÑеÑвеÑа, а вÑе Ñанее ÑозданнÑе ÑезеÑвнÑе копии не бÑдÑÑ Ð¿ÑÐ¸Ð³Ð¾Ð´Ð½Ñ Ð´Ð»Ñ ÑезеÑвного ÑеÑвеÑа и воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð°ÑÑ
ива, ÑÑо Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑивеÑÑи к поÑеÑе даннÑÑ
.
ÐÑо не ÑолÑко Ð¿Ð¾Ð¼Ð¾Ð¶ÐµÑ ÑÑкономиÑÑ Ð²ÑÐµÐ¼Ñ Ð°ÑÑ
иваÑии и пеÑедаÑи WAL, но и непоÑÑедÑÑвенно ÑÑкоÑÐ¸Ñ Ð½ÐµÐºÐ¾ÑоÑÑе командÑ, поÑÐ¾Ð¼Ñ ÑÑо они не запиÑÑваÑÑ Ð² WAL ниÑего, еÑли в wal_level ÑÑÑановлен ÑÑÐ¾Ð²ÐµÐ½Ñ minimal и ÑекÑÑÐ°Ñ Ð¿Ð¾Ð´ÑÑанзакÑÐ¸Ñ (или ÑÑанзакÑÐ¸Ñ Ð²ÐµÑÑ
него ÑÑовнÑ) Ñоздала и опÑÑÑоÑила ÑаблиÑÑ Ð¸Ð»Ð¸ индекÑ, кÑда заÑем вноÑÑÑÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ. (Ðни могÑÑ Ð³Ð°ÑанÑиÑоваÑÑ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑÑÑ Ð´Ð°Ð½Ð½ÑÑ
пÑи Ñбое, не запиÑÑÐ²Ð°Ñ Ð¸Ñ
в WAL, а ÑолÑко вÑполнив fsync в конÑе, ÑÑо бÑÐ´ÐµÑ Ð³Ð¾Ñаздо деÑевле.)
14.4.8. ÐÑполниÑе в конÑе ANALYZE #
ÐÑÑкий Ñаз, когда ÑаÑпÑеделение даннÑÑ
в ÑаблиÑе знаÑиÑелÑно менÑеÑÑÑ, наÑÑоÑÑелÑно ÑекомендÑеÑÑÑ Ð²ÑполнÑÑÑ ANALYZE. ÐÑа ÑекомендаÑÐ¸Ñ ÐºÐ°ÑаеÑÑÑ Ð¸ загÑÑзки в ÑаблиÑÑ Ð±Ð¾Ð»ÑÑого обÑÑма даннÑÑ
. ÐÑполнив ANALYZE (или VACUUM ANALYZE), Ð²Ñ Ñем ÑамÑм обновиÑе ÑÑаÑиÑÑÐ¸ÐºÑ Ð¿Ð¾ данной ÑаблиÑе Ð´Ð»Ñ Ð¿Ð»Ð°Ð½Ð¸ÑовÑика. Ðогда планиÑовÑик не Ð¸Ð¼ÐµÐµÑ ÑÑаÑиÑÑики или она не ÑооÑвеÑÑÑвÑÐµÑ Ð´ÐµÐ¹ÑÑвиÑелÑноÑÑи, он не ÑÐ¼Ð¾Ð¶ÐµÑ Ð¿ÑавилÑно планиÑоваÑÑ Ð·Ð°Ð¿ÑоÑÑ, ÑÑо пÑиведÑÑ Ðº ÑÐ½Ð¸Ð¶ÐµÐ½Ð¸Ñ Ð±ÑÑÑÑодейÑÑÐ²Ð¸Ñ Ð¿Ñи ÑабоÑе Ñ ÑооÑвеÑÑÑвÑÑÑими ÑаблиÑами. ÐамеÑÑÑе, ÑÑо еÑли вклÑÑÑн демон авÑооÑиÑÑки, он Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð¿ÑÑкаÑÑ ANALYZE авÑомаÑиÑеÑки; подÑобнее об ÑÑом можно ÑзнаÑÑ Ð² ÐодÑазделе 23.1.3 и ÐодÑазделе 23.1.6.
14.4.9. ÐеÑколÑко замеÑаний оÑноÑиÑелÑно pg_dump #
Ð ÑкÑипÑÐ°Ñ Ð·Ð°Ð³ÑÑзки даннÑÑ , коÑоÑÑе генеÑиÑÑÐµÑ pg_dump, авÑомаÑиÑеÑки ÑÑиÑÑваÑÑÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе, но не вÑе из ÑÑÐ¸Ñ ÑекомендаÑий. ЧÑÐ¾Ð±Ñ Ð·Ð°Ð³ÑÑзиÑÑ Ð´Ð°Ð½Ð½Ñе, коÑоÑÑе вÑгÑÑзил pg_dump, макÑималÑно бÑÑÑÑо, вам нÑжно бÑÐ´ÐµÑ Ð²ÑполниÑÑ Ð½ÐµÐºÐ¾ÑоÑÑе дополниÑелÑнÑе дейÑÑÐ²Ð¸Ñ Ð²ÑÑÑнÑÑ. (ÐамеÑÑÑе, ÑÑо ÑÑи замеÑÐ°Ð½Ð¸Ñ Ð¾ÑноÑÑÑÑÑ ÑолÑко к воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½ÑÑ , но не к вÑгÑÑзке Ð¸Ñ . СледÑÑÑие ÑекомендаÑии пÑÐ¸Ð¼ÐµÐ½Ð¸Ð¼Ñ Ð²Ð½Ðµ завиÑимоÑÑи Ð¾Ñ Ñого, загÑÑжаеÑÑÑ Ð»Ð¸ аÑÑ Ð¸Ð²Ð½Ñй Ñайл pg_dump в psql или в pg_restore.)
Ðо ÑмолÑÐ°Ð½Ð¸Ñ pg_dump иÑполÑзÑÐµÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ COPY и когда она вÑгÑÑÐ¶Ð°ÐµÑ Ð¿Ð¾Ð»Ð½Ð¾ÑÑÑÑ ÑÑ
ÐµÐ¼Ñ Ð¸ даннÑе, в ÑгенеÑиÑованном ÑкÑипÑе она ÑнаÑала пÑедÑÑмоÑÑиÑелÑно загÑÑÐ¶Ð°ÐµÑ Ð´Ð°Ð½Ð½Ñе, а поÑом ÑоздаÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¸ внеÑние клÑÑи. Так ÑÑо в ÑÑом ÑлÑÑае ÑаÑÑÑ ÑекомендаÑий вÑполнÑеÑÑÑ Ð°Ð²ÑомаÑиÑеÑки. Ðам оÑÑаÑÑÑÑ ÑÑеÑÑÑ ÑолÑко ÑледÑÑÑие:
УÑÑановиÑе Ð¿Ð¾Ð´Ñ Ð¾Ð´ÑÑие (Ñо еÑÑÑ Ð¿ÑевÑÑаÑÑие обÑÑнÑе) знаÑÐµÐ½Ð¸Ñ Ð´Ð»Ñ
maintenance_work_memиmax_wal_size.ÐÑли Ð²Ñ Ð¸ÑполÑзÑеÑе аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL или поÑоковÑÑ ÑепликаÑиÑ, по возможноÑÑи оÑклÑÑиÑе Ð¸Ñ Ð½Ð° вÑÐµÐ¼Ñ Ð²Ð¾ÑÑÑановлениÑ. ÐÐ»Ñ ÑÑого пеÑед загÑÑзкой даннÑÑ , пÑиÑвойÑе паÑамеÑÑÑ
archive_modeзнаÑениеoff,wal_levelâminimal, аmax_wal_sendersâ 0. ÐаконÑив воÑÑÑановление, веÑниÑе Ð¸Ñ Ð¾Ð±ÑÑнÑе знаÑÐµÐ½Ð¸Ñ Ð¸ ÑделайÑе ÑвежÑÑ Ð±Ð°Ð·Ð¾Ð²ÑÑ ÑезеÑвнÑÑ ÐºÐ¾Ð¿Ð¸Ñ.ÐоÑкÑпеÑименÑиÑÑйÑе Ñ Ñежимами паÑаллелÑного копиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ воÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ pg_dump и pg_restore, и подбеÑиÑе опÑималÑное ÑиÑло паÑаллелÑнÑÑ Ð·Ð°Ð´Ð°Ð½Ð¸Ð¹. ÐаÑаллелÑное копиÑование и воÑÑÑановление даннÑÑ , ÑпÑавлÑемое паÑамеÑÑом
-j, должно даÑÑ Ð·Ð½Ð°ÑиÑелÑнÑй вÑигÑÑÑ Ð² ÑкоÑоÑÑи по ÑÑÐ°Ð²Ð½ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾ÑледоваÑелÑнÑм Ñежимом.ÐÑли ÑÑо возможно в ваÑей ÑиÑÑаÑии, воÑÑÑановиÑе вÑе даннÑе в ÑÐ°Ð¼ÐºÐ°Ñ Ð¾Ð´Ð½Ð¾Ð¹ ÑÑанзакÑии. ÐÐ»Ñ ÑÑого пеÑедайÑе паÑамеÑÑ
-1или--single-transactionкоманде psql или pg_restore. Ðо ÑÑÑиÑе, ÑÑо в ÑÑом Ñежиме даже незнаÑиÑелÑÐ½Ð°Ñ Ð¾Ñибка пÑиведÑÑ Ðº оÑкаÑÑ Ð²ÑÐµÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ð¹ и ÑаÑÑ Ð²Ð¾ÑÑÑÐ°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð±ÑдÑÑ Ð¿Ð¾ÑÑаÑÐµÐ½Ñ Ð·ÑÑ. РзавиÑимоÑÑи Ð¾Ñ Ñого, наÑколÑко взаимоÑвÑÐ·Ð°Ð½Ñ Ð´Ð°Ð½Ð½Ñе, пÑедпоÑÑиÑелÑнее Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð²ÑÑиÑÑиÑÑ Ð¸Ñ Ð²ÑÑÑнÑÑ. ÐомандÑCOPYбÑдÑÑ ÑабоÑаÑÑ Ð¼Ð°ÐºÑималÑно бÑÑÑÑо, когда они вÑполнÑÑÑÑÑ Ð² одной ÑÑанзакÑии и аÑÑ Ð¸Ð²Ð°ÑÐ¸Ñ WAL вÑклÑÑена.ÐÑли на ÑеÑвеÑе баз даннÑÑ ÑÑÑановлено неÑколÑко пÑоÑеÑÑоÑов, полезнÑм Ð¼Ð¾Ð¶ÐµÑ Ð¾ÐºÐ°Ð·Ð°ÑÑÑÑ Ð¿Ð°ÑамеÑÑ
--jobsÐºÐ¾Ð¼Ð°Ð½Ð´Ñ pg_restore. С его помоÑÑÑ Ð¼Ð¾Ð¶Ð½Ð¾ вÑполниÑÑ Ð·Ð°Ð³ÑÑÐ·ÐºÑ Ð´Ð°Ð½Ð½ÑÑ Ð¸ Ñоздание индекÑов паÑаллелÑно.ÐоÑле загÑÑзки даннÑÑ Ð·Ð°Ð¿ÑÑÑиÑе
ANALYZE.
ÐÑи вÑгÑÑзке даннÑÑ
без ÑÑ
ÐµÐ¼Ñ Ñоже иÑполÑзÑеÑÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° COPY, но индекÑÑ, как обÑÑно и внеÑние клÑÑи, пÑи ÑÑом не ÑдалÑÑÑÑÑ Ð¸ не пеÑеÑоздаÑÑÑÑ. [14] ÐоÑÑомÑ, загÑÑÐ¶Ð°Ñ ÑолÑко даннÑе, Ð²Ñ Ñами Ð´Ð¾Ð»Ð¶Ð½Ñ ÑеÑиÑÑ, нÑжно ли Ð´Ð»Ñ ÑÑкоÑÐµÐ½Ð¸Ñ Ð·Ð°Ð³ÑÑзки ÑдалÑÑÑ Ð¸ пеÑеÑоздаваÑÑ Ð¸Ð½Ð´ÐµÐºÑÑ Ð¸ внеÑние клÑÑи. ÐÑи ÑÑом бÑÐ´ÐµÑ Ñак же полезно ÑвелиÑиÑÑ Ð¿Ð°ÑамеÑÑ max_wal_size, но не maintenance_work_mem; его ÑÑÐ¾Ð¸Ñ Ð¼ÐµÐ½ÑÑÑ, ÑолÑко еÑли Ð²Ñ Ð²Ð¿Ð¾ÑледÑÑвии пеÑеÑоздаÑÑе индекÑÑ Ð¸ внеÑние клÑÑи вÑÑÑнÑÑ. Рне забÑдÑÑе вÑполниÑÑ ANALYZE поÑле; подÑобнее об ÑÑом можно ÑзнаÑÑ Ð² ÐодÑазделе 23.1.3 и ÐодÑазделе 23.1.6.
[14] ÐÑ Ð¼Ð¾Ð¶ÐµÑе оÑклÑÑиÑÑ Ð²Ð½ÐµÑние клÑÑи, иÑполÑзÑÑ Ð¿Ð°ÑамеÑÑ --disable-triggers â но пÑи ÑÑом нÑжно понимаÑÑ, ÑÑо Ñем ÑамÑм Ð²Ñ Ð½Ðµ пÑоÑÑо оÑложиÑе, а полноÑÑÑÑ Ð²ÑклÑÑиÑе ÑооÑвеÑÑÑвÑÑÑие пÑовеÑки, ÑÑо Ð¿Ð¾Ð·Ð²Ð¾Ð»Ð¸Ñ Ð²ÑÑавиÑÑ Ð½ÐµÐ´Ð¾Ð¿ÑÑÑимÑе даннÑе.