{"id":25537,"date":"2026-06-18T17:52:19","date_gmt":"2026-06-18T17:52:19","guid":{"rendered":"https:\/\/umang.pk\/2026\/06\/18\/pg_cron-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-postgresql-%d9%85%db%8c%da%ba-%da%a9%d8%a7%d9%85%d9%88%da%ba-%da%a9%d9%88-%d8%b4%db%8c\/"},"modified":"2026-06-18T17:52:19","modified_gmt":"2026-06-18T17:52:19","slug":"pg_cron-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-postgresql-%d9%85%db%8c%da%ba-%da%a9%d8%a7%d9%85%d9%88%da%ba-%da%a9%d9%88-%d8%b4%db%8c","status":"publish","type":"post","link":"https:\/\/umang.pk\/ur\/2026\/06\/18\/pg_cron-%da%a9%d8%a7-%d8%a7%d8%b3%d8%aa%d8%b9%d9%85%d8%a7%d9%84-%da%a9%d8%b1%d8%aa%db%92-%db%81%d9%88%d8%a6%db%92-postgresql-%d9%85%db%8c%da%ba-%da%a9%d8%a7%d9%85%d9%88%da%ba-%da%a9%d9%88-%d8%b4%db%8c\/","title":{"rendered":"pg_cron \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 PostgreSQL \u0645\u06cc\u06ba \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1"},"content":{"rendered":"\n<div id=\"\">\n<p>\u06c1\u0631 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0622\u062e\u0631 \u06a9\u0627\u0631 \u0634\u06cc\u0688\u0648\u0644 \u067e\u0631 \u0686\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0686\u06be \u062f\u0631\u06a9\u0627\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u0631\u0627\u0646\u06d2 \u0633\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0686\u06be\u0648\u0691\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0633\u0645\u0631\u06cc \u0679\u06cc\u0628\u0644\u0632 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0645\u0627\u062f\u06cc \u062e\u06cc\u0627\u0644\u0627\u062a \u06a9\u0648 \u062a\u0627\u0632\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062f\u06cc\u06a9\u06be \u0628\u06be\u0627\u0644 \u06a9\u0627 \u06a9\u0627\u0645 \u0627\u0633 \u0648\u0642\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062c\u0628 \u0633\u0628 \u0633\u0648 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u06d4<\/p>\n<p>\u0639\u0627\u0645 \u062c\u0648\u0627\u0628 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06a9\u0633\u06cc \u0686\u06cc\u0632 \u062a\u06a9 \u0631\u0633\u0627\u0626\u06cc \u062d\u0627\u0635\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2 (\u0633\u0633\u0679\u0645 \u06a9\u0631\u0648\u0646\u0679\u0627\u0628\u060c \u06a9\u0628\u0631\u0646\u06cc\u0679\u0633 \u06a9\u0631\u0648\u0646 \u062c\u0627\u0628\u060c \u0633\u06cc\u0644\u0631\u06cc \u0628\u0679 \u0648\u0631\u06a9\u0631\u060c \u06cc\u0627 \u0634\u06cc\u0688\u06cc\u0648\u0644\u0631 \u0633\u0631\u0648\u0633)\u06d4 \u06cc\u06c1 \u0633\u0628 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0645\u062a\u062d\u0631\u06a9 \u062d\u0635\u0648\u06ba \u06a9\u0648 \u062c\u0648\u0691\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0628 \u0622\u067e \u06a9\u06d2 \u067e\u0627\u0633 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0633\u0646\u062f\u060c \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u0644\u06af \u0639\u0645\u0644\u060c \u0627\u0648\u0631 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0686\u0644\u0646\u0627 \u0628\u0646\u062f \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0686\u06cc\u0632 \u06c1\u06d2\u06d4<\/p>\n<p>pg_cron \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u0637\u0631\u06cc\u0642\u06c1 \u0627\u062e\u062a\u06cc\u0627\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u0648\u0633\u0679\u06af\u0631\u06cc \u0627\u06cc\u0633 \u06a9\u06cc\u0648 \u0627\u06cc\u0644 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u062c\u0648 \u06a9\u0631\u0648\u0646 \u0627\u0633\u0679\u0627\u0626\u0644 \u0634\u06cc\u0688\u06cc\u0648\u0644\u0631 \u0686\u0644\u0627\u062a\u06cc \u06c1\u06d2\u06d4 <em>\u0627\u0646\u062f\u0631<\/em> \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u062e\u0648\u062f\u06d4 \u062c\u0628 \u0622\u067e \u0633\u0627\u062f\u06c1 \u0627\u06cc\u0633 \u06a9\u06cc\u0648 \u0627\u06cc\u0644 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0633\u06cc \u06a9\u0627\u0645 \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0679\u0627\u0633\u06a9 \u06a9\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0639\u0645\u0644 \u062f\u0631\u0622\u0645\u062f \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u0627\u06cc\u06a9 \u0679\u06cc\u0628\u0644 \u0645\u06cc\u06ba \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0633\u06d2 \u06a9\u0633\u06cc \u062f\u0648\u0633\u0631\u06d2 \u06a9\u06cc \u0637\u0631\u062d \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0633\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 pg_cron \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u0627\u0646\u0633\u0679\u0627\u0644 \u0627\u0648\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062f\u06cc\u06a9\u06be \u0628\u06be\u0627\u0644 \u06a9\u06d2 \u062d\u0642\u06cc\u0642\u06cc \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u06d2 \u06a9\u06cc\u0633\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4 \u0622\u067e \u06cc\u06c1 \u0628\u06be\u06cc \u0633\u06cc\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u06a9\u06c1 \u06a9\u0633 \u0637\u0631\u062d \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u0631\u0646\u0627\u060c \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u0627 \u0646\u0638\u0645 \u06a9\u0631\u0646\u0627\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u062a\u0639\u06cc\u0646 \u06a9\u0631\u0646\u0627 \u06a9\u06c1 \u06a9\u0628 pg_cron \u0635\u062d\u06cc\u062d \u0679\u0648\u0644 \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0628 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-table-of-contents\">\u0627\u0646\u0688\u06cc\u06a9\u0633<\/h2>\n<h2 id=\"heading-prerequisites\">\u0634\u0631\u0627\u0626\u0637<\/h2>\n<p>\u0645\u062b\u0627\u0644 \u06a9\u06cc \u067e\u06cc\u0631\u0648\u06cc \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0622\u067e \u06a9\u0648 \u0636\u0631\u0648\u0631\u062a \u06c1\u0648 \u06af\u06cc:<\/p>\n<ul>\n<li>\n<p>SQL \u06a9\u0627 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0639\u0644\u0645 (SELECT\u060c INSERT\u060c UPDATE\u060c DELETE)<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u06a9 \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2 PostgreSQL \u0645\u062b\u0627\u0644 (\u0645\u062b\u0627\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0648\u0631\u0698\u0646 13 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0627\u0648\u067e\u0631\u060c \u0644\u06cc\u06a9\u0646 pg_cron \u0648\u0631\u0698\u0646 10 \u06cc\u0627 \u0627\u0633 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u0627 \u06c1\u06d2)<\/p>\n<\/li>\n<li>\n<p>\u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u062b\u0627\u0644 \u062a\u06a9 \u0633\u067e\u0631 \u06cc\u0648\u0632\u0631 \u06cc\u0627 \u0627\u06cc\u0688\u0645\u0646\u0633\u0679\u0631\u06cc\u0679\u0631 \u06a9\u06cc \u0631\u0633\u0627\u0626\u06cc \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p>SQL \u06a9\u0644\u0627\u0626\u0646\u0679 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2: <code>psql<\/code>pgAdmin \u06cc\u0627 DBeaver<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u06af\u0631 \u0622\u067e \u062e\u0648\u062f \u0627\u067e\u0646\u0627 \u0633\u0631\u0648\u0631 \u0646\u06c1\u06cc\u06ba \u0686\u0644\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u06cc\u06c1 \u0679\u06be\u06cc\u06a9 \u06c1\u06d2\u06d4 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0646\u0638\u0645 \u0634\u062f\u06c1 PostgreSQL \u0633\u0631\u0648\u0633\u0632 pg_cron \u06a9\u0648 \u0633\u067e\u0648\u0631\u0679 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u0628\u0634\u0645\u0648\u0644 Amazon RDS\u060c Azure Database for PostgreSQL\u060c Google Cloud SQL\u060c Supabase\u060c \u0627\u0648\u0631 Neon\u06d4 \u06c1\u0645 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba \u0627\u0633 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u0628\u062a\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<h2 id=\"heading-what-is-pgcron\">pg_cron \u06a9\u06cc\u0627 \u06c1\u06d2\u061f<\/h2>\n<p>pg_cron \u0627\u06cc\u06a9 \u0627\u0648\u067e\u0646 \u0633\u0648\u0631\u0633 PostgreSQL \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06c1\u06d2 \u062c\u0633\u06d2 \u0627\u0635\u0644 \u0645\u06cc\u06ba Citus Data \u0679\u06cc\u0645 \u0646\u06d2 \u0628\u0646\u0627\u06cc\u0627 \u06c1\u06d2 \u062c\u0648 \u0622\u067e \u06a9\u0648 \u0648\u0627\u0642\u0641 \u06a9\u0631\u0648\u0646 \u0646\u062d\u0648 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 SQL \u06a9\u0645\u0627\u0646\u0688\u0632 \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0633\u0631\u0648\u0631 \u067e\u0631 \u06a9\u0631\u0648\u0646\u0679\u0627\u0628 \u0627\u0646\u062f\u0631\u0627\u062c\u0627\u062a \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u0622\u067e SQL \u0628\u06cc\u0627\u0646\u0627\u062a \u0644\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule(\n  'nightly-cleanup',\n  '0 3 * * *',\n  $$DELETE FROM sessions WHERE expires_at < now()$$\n);\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0648\u0627\u062d\u062f \u0628\u06cc\u0627\u0646 PostgreSQL \u0633\u06d2 \u06a9\u06c1\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06c1\u0631 \u0631\u0648\u0632 \u0635\u0628\u062d 3 \u0628\u062c\u06d2 \u0645\u06cc\u0639\u0627\u062f \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0633\u06cc\u0634\u0646\u0632 \u0686\u06be\u0648\u0691 \u062f\u06cc\u06ba\u06d4 \u06a9\u0648\u0626\u06cc \u0628\u06cc\u0631\u0648\u0646\u06cc \u0639\u0645\u0644\u060c \u0634\u06cc\u0644 \u0633\u06a9\u0631\u067e\u0679\u060c \u06cc\u0627 \u0627\u0636\u0627\u0641\u06cc \u0627\u0633\u0646\u0627\u062f \u0646\u06c1\u06cc\u06ba\u06d4 \u0679\u0627\u0633\u06a9 \u06a9\u06cc \u062a\u0639\u0631\u06cc\u0641\u06cc\u06ba \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0631\u06c1\u062a\u06cc \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0627\u06af\u0631 \u0686\u0627\u06c1\u06cc\u06ba \u062a\u0648 \u06c1\u062c\u0631\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0648\u0631\u0698\u0646 \u06a9\u0648 \u06a9\u0646\u0679\u0631\u0648\u0644 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0634\u06cc\u0688\u0648\u0644\u0631 \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u062a\u0648\u0633\u06cc\u0639 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u06a9\u0627\u0645 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0686\u0644\u062a\u0627 \u06c1\u06d2. \u06a9\u0648\u0626\u06cc \u0628\u06be\u06cc \u062c\u0648 \u0631\u0627\u0628\u0637\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0648\u06c1 \u0628\u0627\u0644\u06a9\u0644 \u062f\u06cc\u06a9\u06be \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u06a9\u06c1 \u06a9\u06cc\u0627 \u0634\u06cc\u0688\u0648\u0644 \u06c1\u06d2\u060c \u06cc\u06c1 \u0622\u062e\u0631\u06cc \u0628\u0627\u0631 \u06a9\u0628 \u0686\u0644\u0627\u060c \u0627\u0648\u0631 \u0622\u06cc\u0627 \u06cc\u06c1 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u0631\u06c1\u0627 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-how-pgcron-works\">pg_cron \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/h2>\n<p>\u062c\u0628 PostgreSQL pg_cron \u0641\u0639\u0627\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648\u0633\u06cc\u0639 \u0627\u06cc\u06a9 \u067e\u0633 \u0645\u0646\u0638\u0631 \u06a9\u0627\u0631\u06a9\u0646 \u0634\u0631\u0648\u0639 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u06d4 \u06cc\u06c1 \u06a9\u0627\u0631\u06a9\u0646 \u0627\u06cc\u06a9 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2: <code>cron.job<\/code> \u0627\u06cc\u06a9 \u0679\u06cc\u0628\u0644 \u062c\u0633 \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u0637\u06d2 \u0634\u062f\u06c1 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0646 \u06a9\u06d2 \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0648\u0642\u0627\u062a\u060c \u06a9\u0645\u0627\u0646\u0688\u0632\u060c \u0679\u0627\u0631\u06af\u0679 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633\u060c \u0627\u0648\u0631 \u0635\u0627\u0631\u0641 \u062c\u0633 \u06a9\u06d2 \u062a\u062d\u062a \u0648\u06c1 \u0686\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u062c\u0628 \u06a9\u0627\u0645 \u06a9\u0627 \u0645\u0642\u0631\u0631\u06c1 \u0648\u0642\u062a \u0622\u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u06a9\u0627\u0631\u06a9\u0646 \u06a9\u0645\u0627\u0646\u0688 \u067e\u0631 \u0639\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u0627\u06cc\u06a9 \u0646\u06cc\u0627 \u0645\u0642\u0627\u0645\u06cc \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06be\u0648\u0644 \u06a9\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u060c \u0628\u0627\u0644\u06a9\u0644 \u0627\u0633\u06cc \u0637\u0631\u062d \u062c\u06cc\u0633\u06d2 \u06a9\u0648\u0626\u06cc \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u06d4 \u0622\u067e \u0627\u0633\u06d2 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 PostgreSQL \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0648\u0631\u06a9\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06be\u06cc \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0627\u0633 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u0633\u06cc\u0679\u0646\u06af\u0632 \u0633\u06cc\u06a9\u0634\u0646 \u0645\u06cc\u06ba \u06a9\u06cc \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4<\/p>\n<p>\u062f\u0648 \u0627\u0639\u0645\u0627\u0644 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u062c\u0627\u0646\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u0633\u0628 \u0633\u06d2 \u067e\u06c1\u0644\u06d2\u060c pg_cron \u0628\u06c1\u062a \u0633\u06cc \u0686\u06cc\u0632\u06cc\u06ba \u0686\u0644\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 <em>\u0645\u062e\u062a\u0644\u0641<\/em> \u0645\u062a\u0648\u0627\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u0627\u0645 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u062f\u0648 \u0645\u062b\u0627\u0644\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u0686\u0644\u0627\u062a\u0627\u06d4 <em>\u0627\u06cc\u06a9 \u06c1\u06cc<\/em> \u0627\u06cc\u06a9 \u0648\u0642\u062a \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0686\u06cc\u0632\u06d4 \u0627\u06af\u0631 \u0627\u06af\u0644\u0627 \u0645\u0642\u0631\u0631\u06c1 \u0648\u0642\u062a \u0622\u0646\u06d2 \u067e\u0631 \u0628\u06be\u06cc \u06a9\u0627\u0645 \u0686\u0644 \u0631\u06c1\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u0646\u06cc\u0627 \u0631\u0646 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06d2 \u06af\u0627 \u0627\u0648\u0631 \u0645\u0648\u062c\u0648\u062f\u06c1 \u0631\u0646 \u0645\u06a9\u0645\u0644 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc \u0634\u0631\u0648\u0639 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4 \u06cc\u06c1 \u0635\u0641\u0627\u0626\u06cc \u06a9\u06d2 \u0633\u0633\u062a \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0627\u0648\u067e\u0631 \u0628\u0646\u0646\u06d2 \u0633\u06d2 \u0631\u0648\u06a9\u06d2 \u06af\u0627\u06d4<\/p>\n<p>\u062f\u0648\u0633\u0631\u0627\u060c pg_cron \u0627\u0633 \u0648\u0642\u062a \u06a9\u0627\u0645 \u0646\u06c1\u06cc\u06ba \u0686\u0644\u0627\u062a\u0627 \u062c\u0628 \u0633\u0631\u0648\u0631 \u06c1\u0627\u0679 \u0627\u0633\u0679\u06cc\u0646\u0688 \u0628\u0627\u0626\u06cc \u0645\u0648\u0688 \u0645\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u062c\u0628 \u0633\u0679\u0631\u06cc\u0645\u0646\u06af \u06a9\u06cc \u0646\u0642\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0646\u0648\u06a9\u0631\u06cc\u0627\u06ba \u0635\u0631\u0641 \u067e\u0631\u0627\u0626\u0645\u0631\u06cc \u067e\u0631 \u0686\u0644\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0634\u06cc\u0688\u06cc\u0648\u0644\u0631 \u062e\u0648\u062f \u0628\u062e\u0648\u062f \u0634\u0631\u0648\u0639 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u0627\u06cc\u06a9 \u0646\u0642\u0644 \u06a9\u0648 \u0641\u0631\u0648\u063a \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0644\u06c1\u0630\u0627 \u0641\u06cc\u0644 \u0627\u0648\u0648\u0631 \u06a9\u0633\u06cc \u0645\u0642\u0631\u0631\u06c1 \u06a9\u0627\u0645 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u0646\u06c1\u06cc\u06ba \u06c1\u0648 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<h2 id=\"heading-how-to-install-and-set-up-pgcron\">pg_cron \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u0627\u0648\u0631 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h2>\n<p>\u062e\u0648\u062f \u0646\u0638\u0645 \u0634\u062f\u06c1 \u0633\u0631\u0648\u0631 \u067e\u0631 pg_cron \u06a9\u0648 \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u06d2 \u0645\u06cc\u06ba \u062a\u06cc\u0646 \u0645\u0631\u0627\u062d\u0644 \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba: \u067e\u06cc\u06a9\u06cc\u062c \u06a9\u0648 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627\u060c \u06a9\u0646\u0641\u06cc\u06af\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u0646\u0627\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u0628\u0646\u0627\u0646\u0627\u06d4<\/p>\n<h3 id=\"heading-step-1-install-the-package\">\u0645\u0631\u062d\u0644\u06c1 1: \u067e\u06cc\u06a9\u062c \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0622\u0641\u06cc\u0634\u0644 PostgreSQL apt repository \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 Debian \u06cc\u0627 Ubuntu \u067e\u0631 \u0627\u067e\u0646\u06d2 PostgreSQL \u0628\u0691\u06d2 \u0648\u0631\u0698\u0646 \u0633\u06d2 \u0645\u0645\u0627\u062b\u0644 \u067e\u06cc\u06a9\u06cc\u062c \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 PostgreSQL 17 \u06a9\u06d2 \u0644\u06cc\u06d2:<\/p>\n<pre><code class=\"language-bash\">sudo apt-get install postgresql-17-cron\n<\/code><\/pre>\n<p>\u067e\u06cc \u062c\u06cc \u0688\u06cc \u062c\u06cc \u06cc\u0645 \u0631\u06cc\u067e\u0648\u0632\u0679\u0631\u06cc \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u0631\u06cc\u0688 \u06c1\u06cc\u0679 \u067e\u0631 \u0645\u0628\u0646\u06cc \u0646\u0638\u0627\u0645:<\/p>\n<pre><code class=\"language-bash\">sudo yum install pg_cron_17\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e PostgreSQL 16 \u06cc\u0627 18 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0627\u0633 \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0648\u0631\u0698\u0646 \u0646\u0645\u0628\u0631 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u067e\u0644\u06cc\u0679 \u0641\u0627\u0631\u0645 \u0645\u06cc\u06ba \u06a9\u0648\u0626\u06cc \u067e\u06cc\u06a9\u06cc\u062c \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u060c \u062a\u0648 \u0622\u067e \u0645\u0627\u062e\u0630 \u0633\u06d2 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u0628\u06be\u06cc \u0628\u0646\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-step-2-update-postgresqlconf\">\u0645\u0631\u062d\u0644\u06c1 2: postgresql.conf \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>pg_cron \u06a9\u0648 \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0644\u0648\u0688 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u06a9\u06cc\u0648\u0646\u06a9\u06c1 PostgreSQL \u0628\u0648\u0679 \u06c1\u0648\u0646\u06d2 \u067e\u0631 \u0627\u0633\u06d2 \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0648\u0631\u06a9\u0631 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u0627\u0633\u06d2 \u0627\u06af\u0644\u06cc \u0628\u0627\u0631 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>shared_preload_libraries<\/code> \u0622\u067e \u06a9\u0627 <code>postgresql.conf<\/code>:<\/p>\n<pre><code class=\"language-ini\">shared_preload_libraries=\"pg_cron\"\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u0633\u06cc\u0679\u0646\u06af\u0632 \u0645\u06cc\u06ba \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06c1\u06cc \u06a9\u0648\u0626\u06cc \u0627\u0648\u0631 \u0644\u0627\u0626\u0628\u0631\u06cc\u0631\u06cc \u062f\u0631\u062c \u06c1\u06d2 \u062a\u0648 pg_cron \u06a9\u0648 \u06a9\u0648\u0645\u0627 \u0633\u06d2 \u0627\u0644\u06af \u06a9\u06cc \u06af\u0626\u06cc \u0641\u06c1\u0631\u0633\u062a \u0645\u06cc\u06ba \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0637\u0648\u0631 \u067e\u0631\u060c \u0634\u06cc\u0688\u0648\u0644\u0631 \u0627\u067e\u0646\u0627 \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u0627\u0633\u0679\u0648\u0631 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <code>postgres<\/code>. \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u0633\u06cc \u062f\u0648\u0633\u0631\u06d2 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e \u0648\u06c1\u0627\u06ba \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u062f\u0631\u062c \u0630\u06cc\u0644 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba:<\/p>\n<pre><code class=\"language-ini\">cron.database_name=\"app_db\"\n<\/code><\/pre>\n<p>\u0627\u06cc\u06a9 \u0627\u0648\u0631 \u062a\u0631\u062a\u06cc\u0628 \u062c\u0633 \u0633\u06d2 \u0622\u06af\u0627\u06c1 \u06c1\u0648\u0646\u0627 \u0636\u0631\u0648\u0631\u06cc \u06c1\u06d2: pg_cron \u062a\u0645\u0627\u0645 \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0648\u0642\u0627\u062a \u06a9\u0648 \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 GMT \u06a9\u06cc \u062a\u0634\u0631\u06cc\u062d \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0622\u067e \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \"3am \u06a9\u0644\u06cc\u0646 \u0627\u067e\" \u0627\u0635\u0644 \u0645\u06cc\u06ba \u0645\u0642\u0627\u0645\u06cc \u0648\u0642\u062a \u06a9\u06d2 \u0645\u0637\u0627\u0628\u0642 \u0635\u0628\u062d 3 \u0628\u062c\u06d2 \u0686\u0644\u06d2\u060c \u062a\u0648 \u0679\u0627\u0626\u0645 \u0632\u0648\u0646 \u06a9\u0648 \u0648\u0627\u0636\u062d \u0637\u0648\u0631 \u067e\u0631 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-ini\">cron.timezone=\"Africa\/Lagos\"\n<\/code><\/pre>\n<p>\u0622\u067e \u06a9\u0648 \u0627\u0646 \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06a9\u06d2 \u0645\u0624\u062b\u0631 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0633\u0631\u0648\u0631 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u0646\u0627 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-bash\">sudo systemctl restart postgresql\n<\/code><\/pre>\n<h3 id=\"heading-step-3-create-the-extension\">\u0645\u0631\u062d\u0644\u06c1 3: \u0627\u06cc\u06a9 \u062a\u0648\u0633\u06cc\u0639 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h3>\n<p>\u0627\u067e\u0646\u06d2 \u06a9\u0646\u0641\u06cc\u06af\u0631 \u06a9\u0631\u062f\u06c1 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u062c\u0691\u06cc\u06ba\u06d4 <code>cron.database_name<\/code> \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06a9\u0648 \u0628\u0637\u0648\u0631 \u0633\u067e\u0631 \u06cc\u0648\u0632\u0631 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-sql\">CREATE EXTENSION pg_cron;\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06c1\u06d2 <code>cron<\/code> \u0633\u06a9\u06cc\u0645\u0627\u060c \u0645\u06cc\u0679\u0627 \u0688\u06cc\u0679\u0627 \u0679\u06cc\u0628\u0644\u0632\u060c \u0627\u0648\u0631 \u0634\u06cc\u0688\u0648\u0644\u0646\u06af \u0641\u0646\u06a9\u0634\u0646\u0632\u06d4 \u0622\u067e \u0627\u067e\u0646\u0627 \u06a9\u0627\u0645 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u06cc\u0627\u0631 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>pg_cron \u06c1\u06d2 <em>\u0646\u0635\u0628<\/em> \u0641\u06cc PostgreSQL \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u067e\u0627\u0628\u0646\u062f\u06cc \u0644\u06af\u062a\u06cc \u06c1\u06d2\u060c \u0644\u06cc\u06a9\u0646 \u0627\u06cc\u0633\u0627 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u0622\u067e \u0627\u067e\u0646\u06cc \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062a\u0645\u0627\u0645 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u067e\u0631 \u0645\u0644\u0627\u0632\u0645\u062a\u06cc\u06ba \u0686\u0644\u0627\u0646\u0627 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>cron.schedule_in_database()<\/code>\u06c1\u0645 \u0628\u0639\u062f \u0645\u06cc\u06ba \u0627\u0633 \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4<\/p>\n<h3 id=\"heading-a-note-on-how-jobs-connect\">\u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0644\u0646\u06a9 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0637\u0631\u06cc\u0642\u06d2 \u067e\u0631 \u0646\u0648\u0679\u0633<\/h3>\n<p>\u06a9\u06cc\u0648\u0646\u06a9\u06c1 pg_cron \u0628\u0637\u0648\u0631 \u0688\u06cc\u0641\u0627\u0644\u0679 \u0627\u06cc\u06a9 \u0645\u0642\u0627\u0645\u06cc \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06be\u0648\u0644\u062a\u0627 \u06c1\u06d2\u06d4 <code>pg_hba.conf<\/code> \u06c1\u0645\u06cc\u06ba \u0627\u0646\u06c1\u06cc\u06ba \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u0646\u06cc \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0639\u0627\u0645 \u0646\u0642\u0637\u06c1 \u0646\u0638\u0631 \u0645\u0646\u062f\u0631\u062c\u06c1 \u0630\u06cc\u0644 \u06c1\u06d2: <code>trust<\/code> \u06a9\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0644\u0648\u06a9\u0644 \u06c1\u0648\u0633\u0679 \u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062a\u0635\u062f\u06cc\u0642 \u06cc\u0627 \u067e\u0627\u0633 \u0648\u0631\u0688\u06d4 <code>.pgpass<\/code> \u0641\u0627\u0626\u0644<\/p>\n<p>\u06a9\u0646\u06a9\u0634\u0646 \u06a9\u06cc \u062a\u0648\u062b\u06cc\u0642 \u0633\u06d2 \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u0628\u0686\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c pg_cron \u06a9\u0648 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0648\u0631\u06a9\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u0648 \u06a9\u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-ini\">cron.use_background_workers = on\nmax_worker_processes = 20\n<\/code><\/pre>\n<p>\u0628\u06cc\u06a9 \u06af\u0631\u0627\u0624\u0646\u0688 \u0648\u0631\u06a9\u0631 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u0627\u0646 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06cc \u062a\u0639\u062f\u0627\u062f \u06a9\u0648 \u0645\u062d\u062f\u0648\u062f \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u0628\u06cc\u06a9 \u0648\u0642\u062a \u0686\u0644 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba: <code>max_worker_processes<\/code>\u0644\u06c1\u0630\u0627\u060c \u0627\u06af\u0631 \u0622\u067e \u0628\u06c1\u062a \u0633\u0627\u0631\u06d2 \u0627\u0648\u0648\u0631 \u0644\u06cc\u067e\u0646\u06af \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0627\u0633 \u0642\u062f\u0631 \u0645\u06cc\u06ba \u0627\u0636\u0627\u0641\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-using-pgcron-on-managed-database-services\">\u0645\u0646\u0638\u0645 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u062e\u062f\u0645\u0627\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be pg_cron \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644<\/h3>\n<p>\u0627\u06af\u0631 \u0622\u067e \u0627\u06cc\u06a9 \u0645\u0646\u0638\u0645 \u0633\u0631\u0648\u0633 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0622\u067e \u0639\u0627\u0645 \u0637\u0648\u0631 \u067e\u0631 \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u0646\u06c1\u06cc\u06ba \u06a9\u0631 \u0633\u06a9\u062a\u06d2\u06d4 <code>postgresql.conf<\/code> \u0627\u06af\u0631\u0686\u06c1 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0641\u0631\u0627\u06c1\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0641\u0631\u0627\u06c1\u0645 \u06a9\u0646\u0646\u062f\u06af\u0627\u0646 \u0627\u067e\u0646\u06d2 \u0645\u06cc\u06a9\u0627\u0646\u0632\u0645 \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0627\u0646\u06c1\u06cc \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u06a9\u0648 \u0638\u0627\u06c1\u0631 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<ul>\n<li>\n<p><strong>Amazon RDS \u0627\u0648\u0631 Aurora PostgreSQL<\/strong>: \u0634\u0627\u0645\u0644 \u06a9\u0631\u06cc\u06ba\u06d4 <code>pg_cron<\/code> \u06a9\u0648 <code>shared_preload_libraries<\/code> \u0688\u06cc \u0628\u06cc \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631 \u06af\u0631\u0648\u067e \u0645\u06cc\u06ba \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631\u06cc\u06ba\u060c \u0645\u062b\u0627\u0644 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u062f\u0631\u062c \u0630\u06cc\u0644 \u06a9\u0648 \u0686\u0644\u0627\u0626\u06cc\u06ba: <code>CREATE EXTENSION pg_cron;<\/code> \u0628\u0637\u0648\u0631 \u0635\u0627\u0631\u0641 <code>rds_superuser<\/code>. \u0634\u06cc\u0688\u0648\u0644\u0631 \u0627\u0633 \u067e\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2: <code>postgres<\/code> \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633<\/p>\n<\/li>\n<li>\n<p><strong>PostgreSQL \u06a9\u06d2 \u0644\u06cc\u06d2 Azure \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633<\/strong>: pg_cron \u06a9\u0648 \u0633\u0631\u0648\u0631 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u0645\u06cc\u06ba \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba (<code>shared_preload_libraries<\/code> \u0627\u0648\u0631 <code>azure.extensions<\/code>)\u060c \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u067e\u06be\u0631 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u06af\u0648\u06af\u0644 \u06a9\u0644\u0627\u0624\u0688 \u0627\u06cc\u0633 \u06a9\u06cc\u0648 \u0627\u06cc\u0644<\/strong>: \u062a\u0631\u062a\u06cc\u0628 \u062f\u06cc\u0646\u0627 <code>cloudsql.enable_pg_cron<\/code> \u0627\u0633\u06d2 \u062c\u06be\u0646\u0688\u0627 \u0644\u06af\u0627\u0626\u06cc\u06ba\u060c \u0627\u0633\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06a9\u0631\u06cc\u06ba\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0633\u0648\u067e\u0627 \u0628\u06cc\u0633<\/strong>: \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u2192 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646\u0632 \u06a9\u06d2 \u062a\u062d\u062a \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0679\u0648\u06af\u0644 \u06a9\u06d2 \u0633\u0627\u062a\u06be pg_cron \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06a9\u0648 \u0641\u0639\u0627\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0646\u06cc\u06cc\u0646<\/strong>:pg_cron \u0627\u06cc\u06a9 \u0633\u067e\u0648\u0631\u0679 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u062f\u0633\u062a\u06cc\u0627\u0628 \u06c1\u06d2 \u062c\u0633\u06d2 \u0641\u06cc \u067e\u0631\u0648\u062c\u06cc\u06a9\u0679 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0641\u0639\u0627\u0644 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u0633 \u06a9\u06d2 \u0628\u0639\u062f \u0622\u067e \u062c\u0648 SQL \u0644\u06a9\u06be\u06cc\u06ba \u06af\u06d2 \u0648\u06c1 \u06c1\u0631 \u062c\u06af\u06c1 \u0627\u06cc\u06a9 \u062c\u06cc\u0633\u0627 \u06c1\u0648\u06af\u0627\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u0627\u067e\u06cc\u0644 \u06a9\u0627 \u062d\u0635\u06c1 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-a-quick-refresher-on-cron-syntax\">\u06a9\u0631\u0648\u0646 \u0646\u062d\u0648 \u06a9\u0627 \u0627\u06cc\u06a9 \u0641\u0648\u0631\u06cc \u062c\u0627\u0626\u0632\u06c1<\/h2>\n<p>pg_cron \u06a9\u0644\u0627\u0633\u06a9 \u06cc\u0648\u0646\u06a9\u0633 \u06a9\u0631\u0648\u0646 \u06a9\u06cc \u0637\u0631\u062d \u067e\u0627\u0646\u0686 \u0641\u06cc\u0644\u0688 \u0634\u06cc\u0688\u0648\u0644 \u0641\u0627\u0631\u0645\u06cc\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 minute (0\u201359)\n\u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 hour (0\u201323)\n\u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 day of month (1\u201331, or $ for the last day)\n\u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500 month (1\u201312)\n\u2502 \u2502 \u2502 \u2502 \u250c\u2500\u2500\u2500\u2500 day of week (0\u20136, Sunday = 0)\n\u2502 \u2502 \u2502 \u2502 \u2502\n* * * * *\n<\/code><\/pre>\n<p>\u0646\u062c\u0645\u06c1 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \"\u06a9\u0648\u0626\u06cc \u0642\u062f\u0631\"\u06d4 \u0622\u067e \u06a9\u0648\u0645\u0627 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0627\u0642\u062f\u0627\u0631\u060c \u06c1\u0627\u0626\u0641\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0631\u06cc\u0646\u062c\u0632\u060c \u0627\u0648\u0631 \u0633\u0644\u06cc\u0634 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0642\u062f\u0645\u0648\u06ba \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u0648 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u06cc\u06c1\u0627\u06ba \u06a9\u0686\u06be \u0634\u06cc\u0688\u0648\u0644\u0632 \u06c1\u06cc\u06ba \u062c\u0648 \u0622\u067e \u0645\u0633\u0644\u0633\u0644 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06af\u06d2:<\/p>\n<pre><code class=\"language-plaintext\">*\/5 * * * *    every 5 minutes\n0 * * * *      every hour, on the hour\n0 3 * * *      every day at 3:00 AM\n0 3 * * 1-5    3:00 AM on weekdays\n30 1 * * 0     1:30 AM every Sunday\n0 0 1 * *      midnight on the 1st of each month\n<\/code><\/pre>\n<p>pg_cron \u0645\u0639\u06cc\u0627\u0631\u06cc \u0646\u062d\u0648 \u0645\u06cc\u06ba \u062f\u0648 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646\u0632 \u0628\u06be\u06cc \u0634\u0627\u0645\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u062c\u0648 \u06a9\u06c1 \u0631\u06cc\u06af\u0648\u0644\u0631 \u06a9\u0631\u0648\u0646 \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0622\u067e \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba <code>$<\/code> \u062a\u0627\u0631\u06cc\u062e \u06a9\u06d2 \u0634\u0639\u0628\u0648\u06ba \u0645\u06cc\u06ba\u060c \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u0645\u06c1\u06cc\u0646\u06d2 \u06a9\u0627 \u0622\u062e\u0631\u06cc \u062f\u0646 \u06c1\u06d2\u06d4 \u0645\u0639\u06cc\u0627\u0631\u06cc \u06a9\u0631\u0648\u0646 \u0645\u06cc\u06ba \u0627\u0633 \u06a9\u0627 \u0627\u0638\u06c1\u0627\u0631 \u06a9\u0631\u0646\u0627 \u0648\u0627\u0642\u0639\u06cc \u0645\u0634\u06a9\u0644 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\">0 23 $ * *     11:00 PM on the last day of every month\n<\/code><\/pre>\n<p>\u062c\u0646 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0641\u06cc \u0645\u0646\u0679 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0628\u0627\u0631 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0622\u067e 1 \u0633\u06d2 59 \u0633\u06cc\u06a9\u0646\u0688 \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0648\u0642\u0641\u06c1 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-plaintext\">'30 seconds'   every 30 seconds\n<\/code><\/pre>\n<p>\u0633\u06cc\u06a9\u0646\u0688 \u06a9\u0627 \u0646\u062d\u0648 \u0627\u06a9\u06cc\u0644\u0627 \u06a9\u06be\u0691\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633\u06d2 \u067e\u0627\u0646\u0686 \u0641\u06cc\u0644\u0688 \u0641\u0627\u0631\u0645\u06cc\u0679 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0646\u06c1\u06cc\u06ba \u0645\u0644\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u0648 \u0627\u0633 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0634\u06a9 \u06c1\u06d2 \u06a9\u06c1 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0627 \u06a9\u06cc\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2\u060c crontab.guru \u0633\u0627\u062f\u06c1 \u0627\u0646\u06af\u0631\u06cc\u0632\u06cc \u0645\u06cc\u06ba cron \u06a9\u06d2 \u062a\u0627\u062b\u0631\u0627\u062a \u06a9\u0627 \u062a\u0631\u062c\u0645\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba \u06a9\u06c1 pg_cron \u0622\u067e \u06a9\u06d2 \u0645\u0642\u0631\u0631 \u06a9\u0631\u062f\u06c1 \u0679\u0627\u0626\u0645 \u0632\u0648\u0646 \u06a9\u06cc \u0628\u0646\u06cc\u0627\u062f \u067e\u0631 \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0648\u0642\u0627\u062a \u06a9\u0627 \u062c\u0627\u0626\u0632\u06c1 \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 <code>cron.timezone<\/code>\u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 GMT \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-schedule-your-first-job\">\u0627\u067e\u0646\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u0627\u0645 \u06a9\u0627 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0626\u06cc\u06ba<\/h2>\n<p>\u0628\u0646\u06cc\u0627\u062f\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06cc\u06c1 \u06c1\u06cc\u06ba\u06d4 <code>cron.schedule()<\/code>. \u06cc\u06c1 \u062f\u0648 \u0634\u06a9\u0644\u0648\u06ba \u0645\u06cc\u06ba \u0622\u062a\u0627 \u06c1\u06d2: \u0646\u0627\u0645 \u0627\u0648\u0631 \u0628\u06d2 \u0646\u0627\u0645\u06d4<\/p>\n<p>\u0622\u067e \u06a9\u0648 \u0627\u06cc\u06a9 \u0646\u0627\u0645\u0632\u062f \u0641\u0627\u0631\u0645\u06cc\u0679 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 \u0627\u0633 \u06a9\u06cc \u0648\u062c\u06c1 \u06cc\u06c1 \u06c1\u06d2 \u06a9\u06c1 \u0646\u0627\u0645\u0648\u06ba \u0633\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u062a\u0644\u0627\u0634 \u06a9\u0631\u0646\u0627\u060c \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631\u0646\u0627 \u0627\u0648\u0631 \u06c1\u0679\u0627\u0646\u0627 \u0622\u0633\u0627\u0646 \u06c1\u0648 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule(\n  'delete-expired-sessions',                          -- job name\n  '0 3 * * *',                                        -- schedule\n  $$DELETE FROM sessions WHERE expires_at < now()$$   -- command\n);\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0641\u0646\u06a9\u0634\u0646 \u0679\u0627\u0633\u06a9 ID \u0648\u0627\u067e\u0633 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-plaintext\"> schedule\n----------\n        1\n(1 row)\n<\/code><\/pre>\n<p>\u06a9\u0686\u06be \u0642\u0627\u0628\u0644 \u0630\u06a9\u0631 \u062a\u0641\u0635\u06cc\u0644\u0627\u062a \u0645\u06cc\u06ba \u0634\u0627\u0645\u0644 \u06c1\u06cc\u06ba:<\/p>\n<p>\u062d\u06a9\u0645 \u0644\u067e\u06cc\u0679 \u062f\u06cc\u0627 \u06af\u06cc\u0627 \u06c1\u06d2\u06d4 <code>$$ ... $$<\/code>PostgreSQL \u0645\u06cc\u06ba \u0688\u0627\u0644\u0631 \u06a9\u06cc \u0642\u06cc\u0645\u062a\u06d4 \u06cc\u06c1 \u0627\u06cc\u0633 \u06a9\u06cc\u0648 \u0627\u06cc\u0644 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0648\u0627\u062d\u062f \u06a9\u0648\u0679\u0633 \u0633\u06d2 \u0628\u0686\u0646\u06d2 \u0633\u06d2 \u0628\u0686\u062a\u0627 \u06c1\u06d2\u06d4 \u063a\u06cc\u0631 \u0646\u0642\u0644 \u0634\u062f\u06c1 \u06a9\u0645\u0627\u0646\u0688\u0632 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0633\u0627\u062f\u06c1 \u0633\u0679\u0631\u0646\u06af \u0644\u0679\u0631\u06cc\u0644\u0632 \u0679\u06be\u06cc\u06a9 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0627\u0645 \u06a9\u0627\u0644\u0646\u06af \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u067e\u0631 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4 <code>cron.schedule()<\/code>\u062c\u06cc\u0633\u0627 \u06a9\u06c1 \u0635\u0627\u0631\u0641 \u0627\u0633 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0639\u0627\u0645 \u0645\u0631\u0627\u0639\u0627\u062a \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u062a\u06d2 \u06c1\u0648\u0626\u06d2 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u062a\u062d\u0642\u0627\u0642 \u06a9\u06cc \u0628\u0644\u0646\u062f\u06cc \u0634\u06cc\u0688\u0648\u0644\u0631 \u0645\u06cc\u06ba \u067e\u0648\u0634\u06cc\u062f\u06c1 \u0646\u06c1\u06cc\u06ba \u06c1\u06d2\u06d4 \u062c\u0628 \u0635\u0627\u0631\u0641\u06cc\u0646 \u062d\u0630\u0641 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>sessions<\/code>\u0646\u0648\u06a9\u0631\u06cc\u0648\u06ba \u06a9\u0627 \u0628\u06be\u06cc \u06cc\u06c1\u06cc \u062d\u0627\u0644 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0648\u0631 \u062c\u0628 \u0622\u067e \u06a9\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u06af\u06d2\u06d4 <code>cron.schedule()<\/code> \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u067e\u06be\u0631 \u0627\u0633\u06cc \u06a9\u0627\u0645 \u06a9\u06d2 \u0646\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be\u060c pg_cron \u0627\u06cc\u06a9 \u0688\u067e\u0644\u06cc\u06a9\u06cc\u0679 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0645\u0648\u062c\u0648\u062f\u06c1 \u06a9\u0627\u0645 \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u06a9\u0631 \u062f\u06d2 \u06af\u0627\u06d4 \u06cc\u06c1 \u0627\u06cc\u06a9 \u0688\u06cc\u0679\u0627\u0628\u06cc\u0633 \u06a9\u06cc \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0645\u0641\u06cc\u062f \u06c1\u06d2 \u062a\u0627\u06a9\u06c1 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0648 \u063a\u06cc\u0631\u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0646\u0627\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u06d2\u06d4<\/p>\n<h2 id=\"heading-practical-pgcron-examples\">\u0639\u0645\u0644\u06cc pg_cron \u0645\u062b\u0627\u0644<\/h2>\n<p>\u0622\u0626\u06cc\u06d2 \u0627\u06cc\u06a9 \u0627\u06cc\u0633\u0627 \u0646\u0645\u0648\u0646\u06c1 \u062f\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba \u062c\u0648 \u062d\u0642\u06cc\u0642\u06cc \u062f\u0646\u06cc\u0627 \u06a9\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u062a\u0631 \u0627\u0633\u062a\u0639\u0645\u0627\u0644\u0627\u062a \u06a9\u0627 \u0627\u062d\u0627\u0637\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u06c1\u0631 \u0645\u062b\u0627\u0644 \u06a9\u0648 \u0628\u0631\u0627\u06c1 \u0631\u0627\u0633\u062a \u0644\u0627\u06af\u0648 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2.<\/p>\n<h3 id=\"heading-example-1-clean-up-old-rows-every-night\">\u0645\u062b\u0627\u0644 1: \u06c1\u0631 \u0631\u0627\u062a \u067e\u0631\u0627\u0646\u06cc \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u06cc\u06ba\u06d4<\/h3>\n<p>\u0645\u06cc\u0632\u06cc\u06ba \u062c\u0648 \u0639\u0627\u0631\u0636\u06cc \u0688\u06cc\u0679\u0627 \u0627\u06a9\u0679\u06be\u0627 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u060c \u062c\u06cc\u0633\u06d2 \u0633\u06cc\u0634\u0646\u0632\u060c \u0679\u0648\u06a9\u0646\u0632\u060c \u0622\u0688\u0679 \u0627\u06cc\u0648\u0646\u0679\u0633\u060c \u0627\u0648\u0631 \u0646\u0648\u0679\u06cc\u0641\u06a9\u06cc\u0634\u0646 \u0644\u0627\u06af\u0632\u060c \u06c1\u0645\u06cc\u0634\u06c1 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u0691\u06be\u06cc\u06ba \u06af\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0627\u0646\u06c1\u06cc\u06ba \u0635\u0627\u0641 \u0646\u06c1\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627\u06d4 \u0646\u0627\u0626\u0679 \u0688\u06cc\u0644\u06cc\u0679 \u0627\u06cc\u06a9 \u06a9\u0644\u0627\u0633\u06a9 \u067e\u06c1\u0644\u0627 pg_cron \u06a9\u0627\u0645 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule(\n  'purge-old-events',\n  '0 2 * * *',\n  $$DELETE FROM events WHERE created_at < now() - interval '90 days'$$\n);\n<\/code><\/pre>\n<p>\u06c1\u0631 \u0631\u0627\u062a 2 \u0628\u062c\u06d2\u060c 90 \u062f\u0646 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u067e\u0631\u0627\u0646\u06cc \u0642\u0637\u0627\u0631\u06cc\u06ba \u06c1\u0679\u0627 \u062f\u06cc \u062c\u0627\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u06af\u0631 \u0622\u067e \u06a9\u0627 \u0679\u06cc\u0628\u0644 \u0628\u0691\u0627 \u06c1\u06d2 \u062a\u0648\u060c \u0628\u06cc\u0686 \u06c1\u0631 \u0639\u0645\u0644 \u06a9\u06d2 \u0648\u0642\u062a \u06a9\u0648 \u0645\u062e\u062a\u0635\u0631 \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u062d\u0630\u0641 \u06c1\u0648\u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u067e\u06be\u0631 \u0627\u0633 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0641\u0646\u06a9\u0634\u0646 \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<h3 id=\"heading-example-2-refresh-a-materialized-view-every-hour\">\u0645\u062b\u0627\u0644 2: \u06c1\u0631 \u06af\u06be\u0646\u0679\u06d2 \u0627\u06cc\u06a9 \u0645\u0627\u062f\u06cc \u0645\u0646\u0638\u0631 \u06a9\u0648 \u062a\u0627\u0632\u06c1 \u06a9\u0631\u0646\u0627<\/h3>\n<p>\u0645\u0627\u062f\u06cc \u062e\u06cc\u0627\u0644\u0627\u062a \u0645\u06c1\u0646\u06af\u06d2 \u0645\u062c\u0645\u0648\u0639\u0648\u06ba \u06a9\u0648 \u06a9\u06cc\u0634 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0627\u0686\u06be\u0627 \u0637\u0631\u06cc\u0642\u06c1 \u06c1\u06cc\u06ba\u060c \u0644\u06cc\u06a9\u0646 PostgreSQL \u0627\u0646\u06c1\u06cc\u06ba \u062e\u0648\u062f \u0633\u06d2 \u062a\u0627\u0632\u06c1 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 pg_cron \u0627\u0635\u0644\u0627\u062d\u0627\u062a:<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule(\n  'refresh-daily-sales',\n  '5 * * * *',\n  'REFRESH MATERIALIZED VIEW CONCURRENTLY daily_sales_summary'\n);\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u06c1\u0631 \u06af\u06be\u0646\u0679\u06d2 \u06cc\u0627 \u067e\u0627\u0646\u0686 \u0645\u0646\u0679 \u067e\u0631 \u0645\u0646\u0638\u0631 \u06a9\u0648 \u062a\u0627\u0632\u06c1 \u06a9\u0631 \u062f\u06d2 \u06af\u0627\u06d4 \u06a9\u06c1 <code>CONCURRENTLY<\/code> \u0622\u067e\u0634\u0646 \u0631\u06cc\u0641\u0631\u06cc\u0634 \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u067e\u0691\u06be\u0646\u06d2 \u06a9\u0648 \u062c\u0627\u0631\u06cc \u0631\u06a9\u06be\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u062a\u06a9 \u06a9\u06c1 \u0645\u0646\u0638\u0631 \u0645\u06cc\u06ba \u0645\u0646\u0641\u0631\u062f \u0627\u0646\u0688\u06cc\u06a9\u0633 \u06c1\u0648\u06d4<\/p>\n<h3 id=\"heading-example-3-build-a-daily-summary-table\">\u0645\u062b\u0627\u0644 3: \u0631\u0648\u0632\u0627\u0646\u06c1 \u062e\u0644\u0627\u0635\u06c1 \u0679\u06cc\u0628\u0644 \u0628\u0646\u0627\u0646\u0627<\/h3>\n<p>\u0631\u0648\u0644 \u0627\u067e \u0645\u06cc\u0632\u06cc\u06ba \u0627\u06cc\u06a9 \u0627\u0648\u0631 \u0639\u0627\u0645 \u0646\u0645\u0648\u0646\u06c1 \u06c1\u06cc\u06ba\u06d4 \u06c1\u0631 \u0688\u06cc\u0634 \u0628\u0648\u0631\u0688 \u0644\u0648\u0688 \u067e\u0631 \u0644\u0627\u06a9\u06be\u0648\u06ba \u062e\u0627\u0645 \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0648 \u062c\u0645\u0639 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2\u060c \u06c1\u0645 \u062f\u0646 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0628\u0627\u0631 \u0646\u0645\u0628\u0631\u0648\u06ba \u06a9\u06cc \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u06af\u0646\u062a\u06cc \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule(\n  'rollup-daily-orders',\n  '15 0 * * *',\n  $$\n  INSERT INTO daily_order_stats (day, order_count, total_amount)\n  SELECT created_at::date, count(*), sum(amount)\n  FROM orders\n  WHERE created_at >= current_date - 1\n    AND created_at < current_date\n  GROUP BY created_at::date\n  ON CONFLICT (day) DO UPDATE\n    SET order_count = EXCLUDED.order_count,\n        total_amount = EXCLUDED.total_amount\n  $$\n);\n<\/code><\/pre>\n<p>\u0622\u062f\u06be\u06cc \u0631\u0627\u062a \u06a9\u06d2 15 \u0645\u0646\u0679 \u0628\u0639\u062f\u060c \u06a9\u0644 \u06a9\u06d2 \u0622\u0631\u0688\u0631\u0632 \u06a9\u0627 \u062e\u0644\u0627\u0635\u06c1 \u0627\u06cc\u06a9 \u0642\u0637\u0627\u0631 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06a9\u06c1 <code>ON CONFLICT<\/code> \u0634\u0642 \u0622\u067e \u06a9\u0648 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u062a\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u062f\u0648 \u0628\u0627\u0631 \u0686\u0644\u0627\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u062a\u0648 \u06cc\u06c1 \u0646\u0642\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u0648\u0648\u0631 \u0631\u0627\u0626\u0679 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u0627\u06d4<\/p>\n<h3 id=\"heading-example-4-run-a-job-every-30-seconds\">\u0645\u062b\u0627\u0644 4: \u06c1\u0631 30 \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u06a9\u0627\u0645 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/h3>\n<p>\u06a9\u0686\u06be \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u06a9\u0631\u0648\u0646 \u06a9\u06cc \u0627\u06cc\u06a9 \u0645\u0646\u0679 \u06a9\u06cc \u0644\u0645\u0628\u0627\u0626\u06cc \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u06a9\u062b\u0631\u062a \u0633\u06d2 \u06c1\u0648\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u06d4 \u06cc\u0639\u0646\u06cc \u0628\u0641\u0631 \u0679\u06cc\u0628\u0644 \u06a9\u0648 \u0641\u0644\u0634 \u06a9\u0631\u0646\u0627\u060c \u0622\u0624\u0679 \u0628\u0627\u06a9\u0633 \u0633\u06d2 \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0631\u0646\u0627\u060c \u06c1\u0644\u06a9\u06cc \u067e\u06be\u0644\u06a9\u06cc \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0622\u06af\u06d2 \u0628\u0691\u06be\u0627\u0646\u0627 \u0648\u063a\u06cc\u0631\u06c1\u06d4 \u062f\u0648\u0633\u0631\u0627 \u0646\u062d\u0648 \u0627\u0633 \u06a9\u0627 \u062e\u06cc\u0627\u0644 \u0631\u06a9\u06be\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule(\n  'process-outbox',\n  '30 seconds',\n  'CALL process_outbox_batch()'\n);\n<\/code><\/pre>\n<p>\u06c1\u0645\u0627\u0631\u06cc \u067e\u0686\u06be\u0644\u06cc \u0636\u0645\u0627\u0646\u062a\u06cc\u06ba \u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba\u06d4 pg_cron \u0627\u0633 \u06a9\u0627\u0645 \u06a9\u06cc \u062f\u0648\u0633\u0631\u06cc \u0645\u062b\u0627\u0644 \u0634\u0631\u0648\u0639 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u06d2 \u06af\u0627 \u062c\u0628 \u06a9\u06c1 \u067e\u06c1\u0644\u06cc \u0646\u0648\u06a9\u0631\u06cc \u0686\u0644 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u06a9\u0633\u06cc \u0628\u06cc\u0686 \u0645\u06cc\u06ba \u0628\u0639\u0636 \u0627\u0648\u0642\u0627\u062a 45 \u0633\u06cc\u06a9\u0646\u0688 \u0644\u06af\u062a\u06d2 \u06c1\u06cc\u06ba \u062a\u0648 \u0627\u06af\u0644\u06cc \u0631\u0646 \u0627\u0633 \u067e\u0631 \u0645\u06c1\u0631 \u0644\u06af\u0627\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0627\u067e\u0646\u06cc \u0628\u0627\u0631\u06cc \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0631 \u06a9\u0631\u06d2 \u06af\u06cc\u06d4<\/p>\n<h3 id=\"heading-example-5-run-maintenance-on-the-last-day-of-the-month\">\u0645\u062b\u0627\u0644 5: \u06c1\u0631 \u0645\u06c1\u06cc\u0646\u06d2 \u06a9\u06d2 \u0622\u062e\u0631\u06cc \u062f\u0646 \u0645\u06cc\u0646\u0679\u06cc\u0646\u0646\u0633 \u0686\u0644\u0627\u0646\u0627<\/h3>\n<p>\u0645\u0639\u06cc\u0627\u0631\u06cc \u06a9\u0631\u0648\u0646 \u0645\u06cc\u06ba\u060c \u0645\u06c1\u06cc\u0646\u06d2 \u06a9\u06d2 \u0622\u062e\u0631 \u06a9\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u0639\u062c\u06cc\u0628 \u06c1\u0648\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06cc\u0648\u0646\u06a9\u06c1 \u0645\u06c1\u06cc\u0646\u0648\u06ba \u06a9\u06cc \u0644\u0645\u0628\u0627\u0626\u06cc \u0645\u062e\u062a\u0644\u0641 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4 pg_cron <code>$<\/code> \u0627\u0633\u06d2 \u0645\u0639\u0645\u0648\u0644\u06cc \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2:<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule(\n  'month-end-vacuum',\n  '0 23 $ * *',\n  'VACUUM ANALYZE orders'\n);\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u06d4 <code>VACUUM ANALYZE<\/code> \u06a9\u0648 <code>orders<\/code> \u0628\u0631\u0627\u06c1 \u06a9\u0631\u0645 \u0645\u06c1\u06cc\u0646\u06d2 \u06a9\u06d2 \u0622\u062e\u0631\u06cc \u062f\u0646 \u0631\u0627\u062a 11 \u0628\u062c\u06d2 \u0627\u067e\u0646\u06cc \u0645\u06cc\u0632 \u067e\u0631 \u0628\u06cc\u0679\u06be\u06cc\u06ba: 28\u060c 29\u060c 30 \u06cc\u0627 31 \u062a\u0627\u0631\u06cc\u062e\u06d4<\/p>\n<h2 id=\"heading-how-to-view-and-monitor-your-jobs\">\u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u0627\u0648\u0631 \u0645\u0627\u0646\u06cc\u0679\u0631 \u06a9\u0631\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h2>\n<p>pg_cron \u062c\u0648 \u06a9\u0686\u06be \u0628\u06be\u06cc \u062c\u0627\u0646\u062a\u0627 \u06c1\u06d2 \u0648\u06c1 \u0627\u0646 \u062f\u0648 \u062c\u062f\u0648\u0644\u0648\u06ba \u0645\u06cc\u06ba \u06c1\u06d2: <code>cron<\/code> \u0627\u0633\u06a9\u06cc\u0645\u0627 \u06a9\u0627 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0633\u06cc \u062f\u0648\u0633\u0631\u06d2 \u0679\u06cc\u0628\u0644 \u06a9\u06cc \u0637\u0631\u062d \u0627\u0633 \u0633\u06d2 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u0622\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0648\u0627\u0642\u0639\u0627\u062a \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0686\u06cc\u06a9 \u06a9\u0631\u06cc\u06ba: <code>cron.job<\/code>:<\/p>\n<pre><code class=\"language-sql\">SELECT jobid, jobname, schedule, command, active\nFROM cron.job;\n<\/code><\/pre>\n<pre><code class=\"language-plaintext\"> jobid |         jobname         |  schedule  |            command             | active\n-------+-------------------------+------------+--------------------------------+--------\n     1 | delete-expired-sessions | 0 3 * * *  | DELETE FROM sessions WHERE ... | t\n     2 | refresh-daily-sales     | 5 * * * *  | REFRESH MATERIALIZED VIEW ...  | t\n(2 rows)\n<\/code><\/pre>\n<p>\u06cc\u06c1 \u062f\u06cc\u06a9\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u06c1 \u06a9\u0627\u0645 \u0627\u0635\u0644 \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u0686\u0644\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u0631\u06cc\u06ba: <code>cron.job_run_details<\/code>:<\/p>\n<pre><code class=\"language-sql\">SELECT jobid, status, return_message, start_time, end_time\nFROM cron.job_run_details\nORDER BY start_time DESC\nLIMIT 10;\n<\/code><\/pre>\n<p>\u06c1\u0631 \u0642\u0637\u0627\u0631 \u0627\u06cc\u06a9 \u0639\u0645\u0644 \u06a9\u0648 \u0631\u06cc\u06a9\u0627\u0631\u0688 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u062c\u0633 \u0645\u06cc\u06ba \u06cc\u06c1 \u0634\u0627\u0645\u0644 \u06c1\u06d2 \u06a9\u06c1 \u0622\u06cc\u0627 \u06cc\u06c1 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u0631\u06c1\u0627 \u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u060c \u067e\u06cc\u063a\u0627\u0645 \u0648\u0627\u067e\u0633 \u0622\u06cc\u0627\u060c \u0627\u0648\u0631 \u0627\u0633 \u06a9\u06d2 \u0634\u0631\u0648\u0639 \u0627\u0648\u0631 \u062e\u062a\u0645 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0639\u06cc\u0646 \u0627\u0648\u0642\u0627\u062a\u06d4 \u0646\u0627\u06a9\u0627\u0645 \u06a9\u0627\u0645 \u062f\u06a9\u06be\u0627\u0626\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>status=\"failed\"<\/code> \u0688\u06cc\u0628\u06af\u0646\u06af \u0627\u06a9\u062b\u0631 \u063a\u0644\u0637\u06cc \u06a9\u06d2 \u067e\u06cc\u063a\u0627\u0645 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0634\u0631\u0648\u0639 \u0627\u0648\u0631 \u062e\u062a\u0645 \u06c1\u0648\u062a\u06cc \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06cc\u06a9 \u0627\u06c1\u0645 \u0646\u06a9\u062a\u06c1 \u06cc\u06c1 \u06c1\u06d2: <strong>pg_cron \u062e\u0648\u062f \u0627\u0633 \u0679\u06cc\u0628\u0644 \u06a9\u0648 \u0635\u0627\u0641 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/strong>. \u0627\u06cc\u06a9 \u06a9\u0627\u0645 \u062c\u0648 \u06c1\u0631 30 \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u0648\u06c1 \u0631\u0648\u0632\u0627\u0646\u06c1 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b 3000 \u0642\u0637\u0627\u0631\u06cc\u06ba \u0644\u06a9\u06be\u062a\u06cc \u06c1\u06d2\u06d4 \u0645\u0639\u06cc\u0627\u0631\u06cc \u0641\u06a9\u0633 \u062e\u0648\u0634\u06af\u0648\u0627\u0631 \u0637\u0648\u0631 \u067e\u0631 \u062a\u06a9\u0631\u0627\u0631 \u06a9\u0631\u0646\u06d2 \u0648\u0627\u0644\u0627 \u06c1\u06d2\u06d4 pg_cron \u06a9\u06cc \u0627\u067e\u0646\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 pg_cron \u06a9\u0627\u0645 \u06a9\u0627 \u0634\u06cc\u0688\u0648\u0644 \u0628\u0646\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule(\n  'purge-cron-history',\n  '0 12 * * *',\n  $$DELETE FROM cron.job_run_details\n    WHERE end_time < now() - interval '14 days'$$\n);\n<\/code><\/pre>\n<p>\u0627\u06af\u0631 \u0622\u067e \u067e\u06be\u0627\u0646\u0633\u06cc \u06a9\u06cc \u062a\u0627\u0631\u06cc\u062e \u06a9\u0648 \u0628\u0627\u0644\u06a9\u0644 \u0628\u06be\u06cc \u0644\u0627\u06af \u0627\u0646 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u062a\u0648 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba: <code>cron.log_run = off<\/code> \u0622\u067e \u06a9\u06cc \u062a\u0631\u062a\u06cc\u0628 \u0645\u06cc\u06ba<\/p>\n<h2 id=\"heading-how-to-update-and-remove-jobs\">\u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0627\u067e \u0688\u06cc\u0679 \u0627\u0648\u0631 \u06c1\u0679\u0627\u0646\u06d2 \u06a9\u0627 \u0637\u0631\u06cc\u0642\u06c1<\/h2>\n<p>\u0645\u0648\u062c\u0648\u062f\u06c1 \u06a9\u0627\u0645 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba: <code>cron.alter_job()<\/code> \u0635\u0631\u0641 \u0648\u06c1 \u067e\u06cc\u0631\u0627\u0645\u06cc\u0679\u0631\u0632 \u062c\u0648 \u0622\u067e \u0679\u0627\u0633\u06a9 \u0622\u0626\u06cc \u0688\u06cc \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u067e\u0627\u0633 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba \u0628\u062f\u0644 \u062c\u0627\u0626\u06cc\u06ba \u06af\u06d2\u06d4 \u0628\u0627\u0642\u06cc \u0633\u0628 \u0648\u06c1\u06cc \u0631\u06c1\u06d2 \u06af\u0627.<\/p>\n<pre><code class=\"language-sql\">-- Move job 1 from 3 AM to 4 AM\nSELECT cron.alter_job(1, schedule := '0 4 * * *');\n\n-- Pause a job without deleting it\nSELECT cron.alter_job(1, active := false);\n\n-- Resume it later\nSELECT cron.alter_job(1, active := true);\n<\/code><\/pre>\n<p>\u062a\u0648\u0642\u0641 <code>active := false<\/code> \u0627\u0646\u0688\u0631 \u0631\u06cc\u0679\u06cc\u0688 \u0622\u067e \u0634\u0648\u0631 \u0645\u0686\u0627\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0628\u0646\u062f \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631 \u06a9\u0633\u06cc \u0648\u0627\u0642\u0639\u06d2 \u06cc\u0627 \u0628\u0691\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u0645\u0646\u062a\u0642\u0644\u06cc \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0648 \u06a9\u06be\u0648\u0626\u06d2 \u0628\u063a\u06cc\u0631 \u0627\u0646\u06c1\u06cc\u06ba \u0628\u0639\u062f \u0645\u06cc\u06ba \u0648\u0627\u067e\u0633 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p>\u06a9\u0633\u06cc \u06a9\u0627\u0645 \u06a9\u0648 \u0645\u0633\u062a\u0642\u0644 \u0637\u0648\u0631 \u067e\u0631 \u06c1\u0679\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2\u060c \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba: <code>cron.unschedule()<\/code> \u0646\u0627\u0645 \u06cc\u0627 \u0634\u0646\u0627\u062e\u062a \u0633\u06d2:<\/p>\n<pre><code class=\"language-sql\">SELECT cron.unschedule('delete-expired-sessions');\n-- or\nSELECT cron.unschedule(1);\n<\/code><\/pre>\n<p>\u062f\u0648\u0646\u0648\u06ba \u0648\u0627\u067e\u0633 \u0622\u062a\u06d2 \u06c1\u06cc\u06ba <code>true<\/code> \u062c\u0628 \u06a9\u0648\u0626\u06cc \u06a9\u0627\u0645 \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u0648\u0631 \u06c1\u0679\u0627 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-run-jobs-in-other-databases\">\u0645\u062e\u062a\u0644\u0641 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u067e\u0631 \u0645\u0644\u0627\u0632\u0645\u062a\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u0686\u0644\u0627\u0626\u06cc\u06ba\u06d4<\/h2>\n<p>\u06cc\u0627\u062f \u0631\u06a9\u06be\u06cc\u06ba \u06a9\u06c1 pg_cron \u0641\u06cc \u0645\u062b\u0627\u0644 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0627\u06cc\u06a9 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u067e\u0631 \u0627\u0646\u0633\u0679\u0627\u0644 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 <code>postgres<\/code>. \u0627\u06af\u0631 \u0622\u067e \u06a9\u06cc \u0645\u062b\u0627\u0644 \u0645\u062a\u0639\u062f\u062f \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06cc \u0645\u06cc\u0632\u0628\u0627\u0646\u06cc \u06a9\u0631\u062a\u06cc \u06c1\u06d2 \u062a\u0648 \u06c1\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u067e\u0631 pg_cron \u0627\u0646\u0633\u0679\u0627\u0644 \u0646\u06c1 \u06a9\u0631\u06cc\u06ba\u06d4 <code>cron.schedule_in_database()<\/code>:<\/p>\n<pre><code class=\"language-sql\">SELECT cron.schedule_in_database(\n  'analytics-nightly-vacuum',\n  '0 4 * * *',\n  'VACUUM ANALYZE page_views',\n  'analytics_db'\n);\n<\/code><\/pre>\n<p>\u06a9\u0627\u0645 \u0645\u0631\u06a9\u0632\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u06cc\u06d2 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba \u0644\u06cc\u06a9\u0646 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u0686\u0644\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>analytics_db<\/code>. \u06cc\u06c1 \u0641\u0646\u06a9\u0634\u0646 \u0627\u062e\u062a\u06cc\u0627\u0631\u06cc \u0635\u0627\u0631\u0641 \u0646\u0627\u0645 \u06a9\u0648 \u0628\u06be\u06cc \u0642\u0628\u0648\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u06af\u0631 \u06a9\u0627\u0645 \u06a9\u0648 \u0627\u06cc\u06a9 \u0645\u062e\u062a\u0644\u0641 \u0635\u0627\u0631\u0641 \u06a9\u06d2 \u0637\u0648\u0631 \u067e\u0631 \u0686\u0644\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4 <code>active<\/code> \u0631\u0648\u06a9\u0627 \u06c1\u0648\u0627 \u062c\u06be\u0646\u0688\u0627 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u062c\u06be\u0646\u0688\u0627 \u0645\u062a\u0639\u06cc\u0646 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<p>\u06cc\u06c1 \u067e\u06cc\u0679\u0631\u0646 \u062a\u0645\u0627\u0645 \u0634\u06cc\u0688\u0648\u0644\u0632 \u06a9\u0648 \u0627\u06cc\u06a9 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0645\u06cc\u06ba \u0627\u06cc\u06a9 \u0627\u0633\u06a9\u06cc\u0645\u0627 \u0645\u06cc\u06ba \u0631\u06a9\u06be \u06a9\u0631 \u0622\u0688\u06cc\u0679\u0646\u06af \u06a9\u0648 \u0622\u0633\u0627\u0646 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4 <code>SELECT * FROM cron.job<\/code> \u062a\u0645\u0627\u0645 \u0648\u0627\u0642\u0639\u0627\u062a \u0645\u06cc\u06ba \u062a\u0645\u0627\u0645 \u0637\u06d2 \u0634\u062f\u06c1 \u06a9\u0627\u0645 \u062f\u06a9\u06be\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-how-to-let-other-users-schedule-jobs\">\u062f\u0648\u0633\u0631\u06d2 \u0644\u0648\u06af\u0648\u06ba \u06a9\u0648 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0627 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u06cc\u0633\u06d2 \u06a9\u0631\u0646\u06d2 \u062f\u06cc\u06ba\u06d4<\/h2>\n<p>\u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u0637\u0648\u0631 \u067e\u0631\u060c \u0635\u0631\u0641 \u0633\u067e\u0631 \u06cc\u0648\u0632\u0631 \u06c1\u06cc \u0634\u06cc\u0688\u0648\u0644\u0646\u06af \u0641\u0646\u06a9\u0634\u0646\u0632 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u06a9\u06d2 \u06a9\u0631\u062f\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0627\u0646 \u06a9\u06d2 \u0627\u067e\u0646\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u062f\u06cc\u0646\u0627 <code>cron<\/code> \u062e\u0627\u06a9\u06c1:<\/p>\n<pre><code class=\"language-sql\">GRANT USAGE ON SCHEMA cron TO app_user;\n<\/code><\/pre>\n<p>\u0628\u0639\u062f \u0645\u06cc\u06ba \u0627\u062c\u0627\u0632\u062a \u06a9\u0627 \u0645\u0627\u0688\u0644 \u0645\u0639\u0642\u0648\u0644 \u0627\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u06c1\u06d2\u06d4<\/p>\n<ul>\n<li>\n<p>\u0679\u0627\u0633\u06a9 \u0627\u0633 \u0635\u0627\u0631\u0641 \u06a9\u06cc \u0627\u062c\u0627\u0632\u062a \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0686\u0644\u062a\u0627 \u06c1\u06d2 \u062c\u0633 \u0646\u06d2 \u0679\u0627\u0633\u06a9 \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u06cc\u0627 \u062a\u06be\u0627\u06d4<\/p>\n<\/li>\n<li>\n<p>\u0642\u0637\u0627\u0631 \u06a9\u06cc \u0633\u0637\u062d \u06a9\u06cc \u0633\u06cc\u06a9\u06cc\u0648\u0631\u0679\u06cc \u067e\u0627\u0644\u06cc\u0633\u06cc <code>cron.job<\/code> \u0627\u0633 \u06a9\u0627 \u0645\u0637\u0644\u0628 \u06c1\u06d2 \u06a9\u06c1 \u0635\u0627\u0631\u0641\u06cc\u0646 \u0635\u0631\u0641 \u0627\u067e\u0646\u06d2 \u06a9\u0627\u0645 \u06a9\u0648 \u062f\u06cc\u06a9\u06be\u062a\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u0645\u06cc\u06ba \u062a\u0631\u0645\u06cc\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 \u0633\u067e\u0631 \u06cc\u0648\u0632\u0631 \u0633\u0628 \u06a9\u0686\u06be \u062f\u06cc\u06a9\u06be\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p>\u06c1\u0631 \u0635\u0627\u0631\u0641 \u0627\u067e\u0646\u06cc \u0642\u0637\u0627\u0631\u06cc\u06ba \u06cc\u06c1\u0627\u06ba \u0633\u06d2 \u062d\u0630\u0641 \u0628\u06be\u06cc \u06a9\u0631 \u0633\u06a9\u062a\u0627 \u06c1\u06d2: <code>cron.job_run_details<\/code>\u0644\u06c1\u0630\u0627\u060c \u067e\u0686\u06be\u0644\u06d2 \u0635\u0641\u0627\u0626\u06cc \u06a9\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0633\u067e\u0631 \u06cc\u0648\u0632\u0631 \u06a9\u06d2 \u0627\u0633\u062a\u062d\u0642\u0627\u0642 \u06a9\u06d2 \u0628\u063a\u06cc\u0631 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0639\u0645\u0644\u06cc \u0637\u0648\u0631 \u067e\u0631\u060c \u0630\u0627\u062a\u06cc \u0627\u06a9\u0627\u0624\u0646\u0679\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06d2 \u0628\u062c\u0627\u0626\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u06a9 \u0633\u0631\u0634\u0627\u0631 \u06a9\u0631\u062f\u0627\u0631 \u0628\u0646\u0627\u0646\u0627 \u0628\u06c1\u062a\u0631 \u06c1\u06d2\u06d4 \u0627\u06af\u0631 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631 \u062c\u0633 \u0646\u06d2 \u062a\u0645\u0627\u0645 \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0648\u0642\u0627\u062a \u06a9\u06cc \u0645\u0646\u0635\u0648\u0628\u06c1 \u0628\u0646\u062f\u06cc \u06a9\u06cc \u062a\u06be\u06cc \u0648\u06c1 \u0686\u06be\u0648\u0691 \u062f\u06cc\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u0633 \u06a9\u0631\u062f\u0627\u0631 \u06a9\u0648 \u062d\u0630\u0641 \u06a9\u0631 \u062f\u06cc\u0627 \u062c\u0627\u062a\u0627 \u06c1\u06d2\u060c \u0622\u067e \u0646\u06c1\u06cc\u06ba \u0686\u0627\u06c1\u062a\u06d2 \u06a9\u06c1 \u0631\u0627\u062a \u06a9\u06d2 \u0648\u0642\u062a \u06a9\u06d2 \u0631\u0648\u0644 \u0627\u067e \u0627\u0633 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0686\u0644\u06cc\u06ba\u06d4<\/p>\n<h2 id=\"heading-when-to-use-pgcron-and-when-to-avoid-it\">pg_cron \u06a9\u0628 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba (\u0627\u0648\u0631 \u06a9\u0628 \u0627\u0633 \u0633\u06d2 \u0628\u0686\u06cc\u06ba)<\/h2>\n<p>pg_cron \u0686\u0645\u06a9\u062a\u0627 \u06c1\u06d2 \u062c\u0628 \u06cc\u06c1 \u0627\u067e\u0646\u0627 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 <em>\u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632<\/em>. \u0627\u0633 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba:<\/p>\n<ul>\n<li>\n<p><strong>\u0688\u06cc\u0679\u0627 \u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u06d2<\/strong>: \u0633\u06cc\u0634\u0646\u060c \u0644\u0627\u06af\u060c \u0627\u06cc\u0648\u0646\u0679\u060c \u0627\u0648\u0631 \u0679\u0648\u06a9\u0646 \u0679\u06cc\u0628\u0644\u0632 \u0645\u06cc\u06ba \u067e\u0631\u0627\u0646\u06cc \u0642\u0637\u0627\u0631\u0648\u06ba \u06a9\u0648 \u0635\u0627\u0641 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u062a\u0639\u062f\u0627\u062f<\/strong>: \u0627\u06cc\u06a9 \u0645\u0627\u062f\u06cc \u0645\u0646\u0638\u0631 \u06a9\u0648 \u062a\u0627\u0632\u06c1 \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0627\u06cc\u06a9 \u0631\u0648\u0644 \u0627\u067e \u0679\u06cc\u0628\u0644 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0628\u0631\u0642\u0631\u0627\u0631 \u0631\u06a9\u06be\u0646\u0627<\/strong>: \u06c1\u062f\u0641 <code>VACUUM ANALYZE<\/code>\u0627\u0639\u062f\u0627\u062f\u0648\u0634\u0645\u0627\u0631 \u06a9\u06cc \u062a\u0639\u0645\u06cc\u0631 \u0646\u0648\u060c \u062a\u0642\u0633\u06cc\u0645 \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 (\u067e\u06cc \u062c\u06cc_\u067e\u0627\u0631\u0679\u0645\u06cc\u0646 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u062e\u0648\u0628\u0635\u0648\u0631\u062a\u06cc \u0633\u06d2 \u062c\u0648\u0691\u0627)\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u06c1\u0644\u06a9\u0627 \u067e\u06be\u0644\u06a9\u0627 \u067e\u0627\u0626\u067e \u0644\u0627\u0626\u0646<\/strong>: \u0645\u06cc\u0632\u0648\u06ba \u06a9\u06d2 \u062f\u0631\u0645\u06cc\u0627\u0646 \u0642\u0637\u0627\u0631\u06cc\u06ba \u0645\u0646\u062a\u0642\u0644 \u06a9\u0631\u0646\u0627\u060c \u0622\u0624\u0679 \u0628\u0627\u06a9\u0633 \u067e\u06cc\u0679\u0631\u0646 \u06a9\u0648 \u0633\u0646\u0628\u06be\u0627\u0644\u0646\u0627\u060c \u0646\u0631\u0645 \u062d\u0630\u0641 \u0634\u062f\u06c1 \u0631\u06cc\u06a9\u0627\u0631\u0688\u0632 \u06a9\u06cc \u0645\u06cc\u0639\u0627\u062f \u062e\u062a\u0645 \u06c1\u0648 \u0631\u06c1\u06cc \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u06a9\u0627\u0645\u0646 \u062a\u06be\u0631\u06cc\u0688: \u067e\u0648\u0631\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u0627 \u0627\u0638\u06c1\u0627\u0631 \u0627\u06cc\u0633 \u06a9\u06cc\u0648 \u0627\u06cc\u0644 \u06cc\u0627 \u0630\u062e\u06cc\u0631\u06c1 \u0634\u062f\u06c1 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u0645\u06cc\u06ba \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0633\u06d2 \u0628\u0627\u06c1\u0631 \u06a9\u0633\u06cc \u0686\u06cc\u0632 \u06a9\u0648 \u0646\u06c1\u06cc\u06ba \u0686\u06be\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u06af\u0631:<\/p>\n<ul>\n<li>\n<p><strong>\u06a9\u0627\u0645 \u06a9\u0648 \u0627\u06cc\u06a9 \u0628\u06cc\u0631\u0648\u0646\u06cc \u0646\u0638\u0627\u0645 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u0646\u0627 \u0686\u0627\u06c1\u06cc\u06d2\u06d4<\/strong> pg_cron SQL \u0686\u0644\u0627\u062a\u0627 \u06c1\u06d2\u06d4 \u06cc\u06c1 HTTP \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u0628\u06be\u06cc\u062c \u0633\u06a9\u062a\u0627\u060c \u0642\u0637\u0627\u0631\u0648\u06ba \u0645\u06cc\u06ba \u0646\u06c1\u06cc\u06ba \u0644\u06af\u0627 \u0633\u06a9\u062a\u0627\u060c \u06cc\u0627 \u062e\u0648\u062f \u0627\u06cc \u0645\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u0628\u06be\u06cc\u062c \u0633\u06a9\u062a\u0627\u06d4 \u0627\u0646 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0627 \u062a\u0639\u0644\u0642 \u0627\u06cc\u067e\u0644\u06cc\u06a9\u06cc\u0634\u0646 \u06cc\u0627 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0627\u0646\u062c\u0646 \u0633\u06d2 \u06c1\u06d2\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u0627\u0633 \u0645\u06cc\u06ba \u0628\u0644\u0679 \u0627\u0646 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634\u060c \u0628\u06cc\u06a9 \u0622\u0641 \u0627\u0648\u0631 \u0627\u0637\u0644\u0627\u0639 \u06a9\u06cc \u062e\u0635\u0648\u0635\u06cc\u0627\u062a \u06c1\u0648\u0646\u06cc \u0686\u0627\u06c1\u0626\u06cc\u06ba\u06d4<\/strong> pg_cron \u0646\u0627\u06a9\u0627\u0645\u06cc \u06a9\u0648 \u0644\u0627\u06af \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0644\u06cc\u06a9\u0646 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0648\u0634\u0634 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0646\u06c1 \u06c1\u06cc \u0635\u0641\u062d\u06c1 \u06a9\u0648 \u06a9\u0627\u0644 \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u06cc\u0633\u06d2 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u06a9\u06d2 \u0644\u06cc\u06d2 \u062c\u0646\u06c1\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0679\u0648\u0644\u0632 \u062c\u06cc\u0633\u06d2 \u0627\u06cc\u0688\u06c1\u0627\u06a9 \u06cc\u0627 \u0645\u0646\u0627\u0633\u0628 \u0679\u0627\u0633\u06a9 \u06a9\u06cc\u0648 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u06c1\u0648 \u062c\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u06a9\u0627\u0645 \u0628\u06be\u0627\u0631\u06cc \u06c1\u06d2 \u0627\u0648\u0631 \u06a9\u0627\u0641\u06cc \u0648\u0642\u062a \u0644\u06af\u062a\u0627 \u06c1\u06d2\u06d4<\/strong> \u0628\u0646\u06cc\u0627\u062f\u06cc OLTP \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u06a9\u06d2 \u0627\u0646\u062f\u0631 \u0686\u0644\u0646\u06d2 \u0648\u0627\u0644\u06cc \u0686\u0627\u0631 \u06af\u06be\u0646\u0679\u06d2 \u06a9\u06cc \u0628\u06cc\u0686 \u06a9\u06cc \u0645\u0644\u0627\u0632\u0645\u062a\u06cc\u06ba CPU\u060c \u0645\u06cc\u0645\u0648\u0631\u06cc \u0627\u0648\u0631 \u062a\u0627\u0644\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u06cc\u067e\u0644\u06cc \u06a9\u06cc\u0634\u0646\u0632 \u06a9\u06d2 \u0633\u0627\u062a\u06be \u0645\u0642\u0627\u0628\u0644\u06c1 \u06a9\u0631\u062a\u06cc \u06c1\u06cc\u06ba\u06d4 \u0627\u067e\u0646\u06d2 \u0628\u0691\u06d2 \u067e\u06cc\u0645\u0627\u0646\u06d2 \u067e\u0631 \u062d\u0633\u0627\u0628 \u06a9\u062a\u0627\u0628 \u06a9\u06c1\u06cc\u06ba \u0627\u0648\u0631 \u0645\u062d\u0641\u0648\u0638 \u06a9\u0631\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<li>\n<p><strong>\u06a9\u0627\u0645 \u067e\u06cc\u0686\u06cc\u062f\u06c1 \u0627\u0646\u062d\u0635\u0627\u0631 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2.<\/strong> \"A \u06a9\u06d2 \u06a9\u0627\u0645\u06cc\u0627\u0628 \u06c1\u0648\u0646\u06d2 \u06a9\u06d2 \u0628\u0639\u062f \u06c1\u06cc B \u06a9\u0648 \u0686\u0644\u0627\u0626\u06cc\u06ba\u060c \u067e\u06be\u0631 C \u0627\u0648\u0631 D \u06a9\u0648 \u0641\u06cc\u0646 \u0622\u0624\u0679 \u06a9\u0631\u06cc\u06ba\" \u0622\u0631\u06a9\u06cc\u0633\u0679\u0631\u06cc\u0634\u0646 \u06c1\u06d2\u06d4 \u06cc\u06c1 \u0627\u06cc\u0626\u0631 \u0641\u0644\u0648 \u0627\u06cc\u0631\u06cc\u0627 \u06c1\u06d2\u060c \u06a9\u0631\u0648\u0646 \u0627\u06cc\u0631\u06cc\u0627 \u0646\u06c1\u06cc\u06ba\u06d4<\/p>\n<\/li>\n<\/ul>\n<p>\u0627\u0646\u06af\u0648\u0679\u06be\u06d2 \u06a9\u0627 \u0627\u06cc\u06a9 \u0645\u0639\u0642\u0648\u0644 \u0627\u0635\u0648\u0644: pg_cron \u0627\u0633\u06d2 \u0686\u0644\u0627\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06cc \u06a9\u0631\u0648\u0646\u0679\u0627\u0628 \u0627\u0646\u062f\u0631\u0627\u062c \u06a9\u06cc \u062c\u06af\u06c1 \u0644\u06d2 \u0644\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 <code>psql -c \"...\"<\/code> \u0628\u06be\u0648\u0644\u06d2 \u06c1\u0648\u0626\u06d2 \u0633\u0631\u0648\u0631 \u067e\u0631\u06d4 \u06cc\u06c1 \u06a9\u0627\u0645 \u06a9\u06cc \u0642\u0637\u0627\u0631\u0648\u06ba \u06cc\u0627 \u0648\u0631\u06a9 \u0641\u0644\u0648 \u0622\u0631\u06a9\u06cc\u0633\u0679\u0631\u06cc\u0679\u0631\u0632 \u06a9\u0648 \u062a\u0628\u062f\u06cc\u0644 \u0646\u06c1\u06cc\u06ba \u06a9\u0631\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-best-practices-for-working-with-pgcron\">pg_cron \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06d2 \u0644\u06cc\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0637\u0631\u06cc\u0642\u06d2<\/h2>\n<p>\u0644\u0641\u0638 \u06a9\u06d2 \u0628\u06c1\u062a\u0631\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0645\u06cc\u06ba\u060c \u06cc\u06c1\u0627\u06ba \u06a9\u0686\u06be \u0639\u0627\u062f\u0627\u062a \u06c1\u06cc\u06ba \u062c\u0648 \u0637\u06d2 \u0634\u062f\u06c1 \u06a9\u0627\u0645 \u06a9\u0648 \u0628\u0648\u0631\u0646\u06af \u0628\u0646\u0627\u062a\u06cc \u06c1\u06cc\u06ba:<\/p>\n<p><strong>\u062a\u0645\u0627\u0645 \u067e\u06cc\u0634\u0648\u06ba \u06a9\u06d2 \u0646\u0627\u0645 \u0628\u062a\u0627\u0626\u06cc\u06ba\u06d4<\/strong> \u0635\u0631\u0641 ID \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0634\u0646\u0627\u062e\u062a \u0634\u062f\u06c1 \u06af\u0645\u0646\u0627\u0645 \u0645\u0644\u0627\u0632\u0645\u062a\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 6 \u0645\u0627\u06c1 \u06a9\u06d2 \u0628\u0639\u062f \u0645\u0634\u06a9\u0644 \u06c1\u06d2\u06d4 \u0627\u06cc\u06a9 \u0646\u0627\u0645 \u0628\u0646\u0627\u0626\u06cc\u06ba <code>cron.schedule()<\/code> Idempotency: \u06c1\u062c\u0631\u062a \u06a9\u06d2 \u062f\u0648\u0631\u0627\u0646 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0645\u062d\u0641\u0648\u0638 \u0637\u0631\u06cc\u0642\u06d2 \u0633\u06d2 \u0628\u06cc\u0627\u0646 \u06a9\u06cc\u0627 \u062c\u0627 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p><strong>\u0627\u067e\u0646\u0627 \u0679\u0627\u0626\u0645 \u0632\u0648\u0646 \u062c\u0627\u0646 \u0628\u0648\u062c\u06be \u06a9\u0631 \u0633\u06cc\u0679 \u06a9\u0631\u06cc\u06ba\u06d4<\/strong> \u067e\u06c1\u0644\u06d2 \u0633\u06d2 \u0637\u06d2 \u0634\u062f\u06c1 GMT \u06c1\u06d2 \u0627\u0648\u0631 \u0633\u0648\u0627\u0644 \"3am \u06a9\u0627 \u06a9\u0627\u0645 \u0635\u0628\u062d 4 \u0628\u062c\u06d2 \u06a9\u06cc\u0648\u06ba \u0686\u0644\u062a\u0627 \u06c1\u06d2\u061f\" \u06cc\u06c1 \u06af\u0632\u0631\u0646\u06d2 \u06a9\u06cc \u0627\u06cc\u06a9 \u0631\u0633\u0645 \u06c1\u06d2 \u062c\u0633\u06d2 \u0622\u067e \u062a\u0631\u062a\u06cc\u0628\u0627\u062a \u067e\u0631 \u062c\u0627 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4 <code>cron.timezone<\/code> \u067e\u06c1\u0644\u06cc \u0631\u0627\u062a<\/p>\n<p><strong>\u0627\u0646\u0641\u0631\u0627\u062f\u06cc \u0631\u0646\u0632 \u0645\u062e\u062a\u0635\u0631 \u0631\u06a9\u06be\u06cc\u06ba\u06d4<\/strong> \u0628\u06cc\u0686 \u0630\u062e\u06cc\u0631\u06c1 \u0634\u062f\u06c1 \u0637\u0631\u06cc\u0642\u06c1 \u06a9\u0627\u0631 \u0645\u06cc\u06ba \u0628\u0691\u06d2 \u0688\u06cc\u0644\u06cc\u0679\u0633 \u06a9\u0648 \u0644\u067e\u06cc\u0679\u06cc\u06ba\u06d4 \u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688 \u0645\u06cc\u06ba \u0645\u06a9\u0645\u0644 \u06c1\u0648\u0646\u06d2 \u0648\u0627\u0644\u06d2 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u062a\u0627\u0644\u06d2 \u06a9\u0648 \u0645\u062e\u062a\u0635\u0631 \u0637\u0648\u0631 \u067e\u0631 \u0631\u0648\u06a9\u06cc\u06ba \u06af\u06d2 \u0627\u0648\u0631 \u062a\u0627\u062e\u06cc\u0631 \u06a9\u0645 \u06c1\u0648 \u062c\u0627\u0626\u06d2 \u06af\u06cc\u06d4<\/p>\n<p><strong>\u0622\u067e\u0631\u06cc\u0634\u0646\u0648\u06ba \u06a9\u0648 \u0628\u06d2 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0628\u0646\u0627\u062a\u0627 \u06c1\u06d2\u06d4<\/strong> \u0633\u0631\u0648\u0631 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0634\u0631\u0648\u0639 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2 \u0627\u0648\u0631 \u0622\u067e\u0631\u06cc\u0634\u0646 \u0648\u0642\u062a \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u0646\u0627\u06a9\u0627\u0645 \u06c1\u0648 \u0633\u06a9\u062a\u0627 \u06c1\u06d2\u06d4 \u0627\u0633\u062a\u0639\u0645\u0627\u0644 \u06a9\u0631\u06cc\u06ba <code>ON CONFLICT<\/code>\u0648\u0642\u062a \u06a9\u06cc \u062d\u062f \u06a9\u06cc \u067e\u06cc\u0634\u06cc\u0646 \u06af\u0648\u0626\u06cc\u0627\u06ba \u0627\u0648\u0631 \u062f\u0648\u0633\u0631\u06d2 \u0646\u0645\u0648\u0646\u06d2 \u062c\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u0648 \u0628\u06d2 \u0636\u0631\u0631 \u0628\u0646\u0627\u062a\u06d2 \u06c1\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u0645\u0627\u0631\u0648<\/strong> <code>cron.job_run_details<\/code><strong>:<\/strong> \u0645\u0627\u0646\u06cc\u0679\u0631\u0646\u06af \u0633\u06cc\u06a9\u0634\u0646 \u0645\u06cc\u06ba \u0635\u0641\u0627\u0626\u06cc \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0648 \u0634\u06cc\u0688\u0648\u0644 \u06a9\u0631\u06cc\u06ba \u0627\u0633 \u0633\u06d2 \u067e\u06c1\u0644\u06d2 \u06a9\u06c1 \u0622\u067e \u06a9\u06cc \u0645\u06cc\u0632\u06cc\u06ba \u0646\u0645\u0627\u06cc\u0627\u06ba \u0637\u0648\u0631 \u067e\u0631 \u0628\u0691\u06cc \u06c1\u0648 \u062c\u0627\u0626\u06cc\u06ba\u06d4<\/p>\n<p><strong>\u062e\u0627\u0645\u0648\u0634\u06cc \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u0631\u06cc\u06ba\u060c \u0646\u06c1 \u0635\u0631\u0641 \u0646\u0627\u06a9\u0627\u0645\u06cc\u06d4<\/strong> \u0646\u0627\u06a9\u0627\u0645 \u067e\u06be\u0627\u0646\u0633\u06cc\u0627\u06ba \u0622\u06af\u06d2 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u06cc \u06c1\u06cc\u06ba: <code>job_run_details<\/code>\u062a\u0627\u06c1\u0645\u060c \u0645\u06a9\u0645\u0644 \u0637\u0648\u0631 \u067e\u0631 \u063a\u06cc\u0631 \u0637\u06d2 \u0634\u062f\u06c1 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u0627 \u06a9\u0648\u0626\u06cc \u0646\u0634\u0627\u0646 \u0628\u0627\u0642\u06cc \u0646\u06c1\u06cc\u06ba \u0631\u06c1\u062a\u0627\u06d4 \u0628\u0627\u0642\u0627\u0639\u062f\u06af\u06cc \u0633\u06d2 \u062c\u0627\u0646\u0686\u0646\u0627 \u06a9\u06c1 \u0622\u06cc\u0627 \u06c1\u0631 \u0627\u06c1\u0645 \u06a9\u0627\u0645 \u062d\u0627\u0644 \u06c1\u06cc \u0645\u06cc\u06ba \u06a9\u0627\u0645\u06cc\u0627\u0628\u06cc \u0633\u06d2 \u0686\u0644\u0627 \u06c1\u06d2 \u062f\u0648\u0646\u0648\u06ba \u0635\u0648\u0631\u062a\u0648\u06ba \u06a9\u0648 \u067e\u06a9\u0691 \u0644\u06d2 \u06af\u0627\u06d4<\/p>\n<pre><code class=\"language-sql\">SELECT j.jobname, max(d.end_time) AS last_success\nFROM cron.job j\nLEFT JOIN cron.job_run_details d\n  ON d.jobid = j.jobid AND d.status=\"succeeded\"\nGROUP BY j.jobname\nHAVING max(d.end_time) < now() - interval '1 day'\n   OR max(d.end_time) IS NULL;\n<\/code><\/pre>\n<p>\u0627\u0633 \u0627\u0633\u062a\u0641\u0633\u0627\u0631 \u06a9\u06cc \u0648\u0627\u067e\u0633\u06cc \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u0622\u067e\u0631\u06cc\u0634\u0646\u0632 \u0627\u06cc\u06a9 \u062f\u0646 \u0633\u06d2 \u0632\u06cc\u0627\u062f\u06c1 \u0639\u0631\u0635\u06d2 \u0633\u06d2 \u0646\u0627\u06a9\u0627\u0645 \u0631\u06c1\u06d2 \u06c1\u06cc\u06ba\u060c \u0644\u06c1\u0630\u0627 \u0627\u0633 \u067e\u0631 \u0627\u06cc\u06a9 \u0646\u0638\u0631 \u0688\u0627\u0644\u0646\u06d2 \u06a9\u06d2 \u0642\u0627\u0628\u0644 \u06c1\u06d2\u06d4<\/p>\n<h2 id=\"heading-conclusion\">\u0646\u062a\u06cc\u062c\u06c1<\/h2>\n<p>pg_cron PostgreSQL \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0634\u06cc\u0688\u0648\u0644\u0631 \u0645\u06cc\u06ba \u0628\u062f\u0644 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u06d4 \u0622\u067e \u0627\u06cc\u0633 \u06a9\u06cc\u0648 \u0627\u06cc\u0644 \u0645\u06cc\u06ba \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u06cc \u0648\u0636\u0627\u062d\u062a \u06a9\u0631\u062a\u06d2 \u06c1\u06cc\u06ba\u060c \u0688\u06cc\u0679\u0627 \u0628\u06cc\u0633 \u0627\u0633 \u0622\u067e\u0631\u06cc\u0634\u0646 \u06a9\u0648 \u0627\u0646\u062c\u0627\u0645 \u062f\u06cc\u062a\u0627 \u06c1\u06d2\u060c \u0627\u0648\u0631 \u067e\u0648\u0631\u0627 \u0633\u0633\u0679\u0645 (\u062a\u0639\u0631\u06cc\u0641\u060c \u062a\u0627\u0631\u06cc\u062e\u060c \u063a\u0644\u0637\u06cc\u0627\u06ba) \u0628\u0627\u0642\u0627\u0639\u062f\u06c1 \u0633\u0648\u0627\u0644\u0627\u062a \u06a9\u06d2 \u0630\u0631\u06cc\u0639\u06d2 \u0638\u0627\u06c1\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4<\/p>\n<p>\u0627\u0633 \u0679\u06cc\u0648\u0679\u0648\u0631\u06cc\u0644 \u0645\u06cc\u06ba\u060c \u0622\u067e \u0646\u06d2 \u0633\u06cc\u06a9\u06be\u0627 \u06a9\u06c1 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u0627\u0646\u062f\u0631\u0648\u0646\u06cc \u0637\u0648\u0631 \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u06a9\u0627\u0645 \u06a9\u0631\u062a\u06cc \u06c1\u06d2\u060c \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06a9\u0648 \u0627\u067e\u0646\u06d2 \u0633\u0631\u0648\u0631\u0632 \u0627\u0648\u0631 \u0627\u0646\u062a\u0638\u0627\u0645\u06cc \u062e\u062f\u0645\u0627\u062a \u067e\u0631 \u06a9\u06cc\u0633\u06d2 \u0627\u0646\u0633\u0679\u0627\u0644 \u06a9\u0631\u0646\u0627 \u06c1\u06d2\u060c \u0646\u0638\u0627\u0645 \u0627\u0644\u0627\u0648\u0642\u0627\u062a \u06a9\u06cc\u0633\u06d2 \u0628\u0646\u0627\u0646\u0627 \u06c1\u06d2 (\u0628\u0634\u0645\u0648\u0644 pg_cron \u0645\u06cc\u06ba \u0645\u06c1\u06cc\u0646\u06d2 \u06a9\u06d2 \u0634\u0631\u0648\u0639 \u0627\u0648\u0631 \u0622\u062e\u0631 \u06a9\u06cc \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646)\u060c \u0627\u0648\u0631 \u0627\u06cc\u06a9\u0633\u0679\u06cc\u0646\u0634\u0646 \u06a9\u0648 \u0628\u062d\u0627\u0644\u06cc \u06a9\u06d2 \u06a9\u0627\u0645\u0648\u06ba \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u0644\u0627\u06af\u0648 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2 (\u06a9\u0627\u0679\u0646\u0627\u060c \u0631\u0648\u0644 \u0627\u067e\u060c \u0631\u06cc\u0641\u0631\u06cc\u0634\u060c \u0627\u0648\u0631 \u0648\u06cc\u06a9\u06cc\u0648\u0645\u0648\u0628\u0627\u0633\u0644\u06cc\u0679\u0646\u06af \u06a9\u06d2 \u062a\u0645\u0627\u0645 \u06a9\u0627\u0645\u0648\u06ba \u067e\u0631)\u06d4 \u06c1\u0645 \u0646\u06d2 \u06cc\u06c1 \u0628\u06be\u06cc \u062f\u06cc\u06a9\u06be\u0627 \u06a9\u06c1 \u06a9\u0627\u0645\u0648\u06ba \u06a9\u06cc \u0646\u06af\u0631\u0627\u0646\u06cc \u06a9\u06cc\u0633\u06d2 \u06a9\u06cc \u062c\u0627\u0626\u06d2\u060c \u0627\u062c\u0627\u0632\u062a\u0648\u06ba \u06a9\u0627 \u0627\u0646\u062a\u0638\u0627\u0645 \u06a9\u06cc\u0627 \u062c\u0627\u0626\u06d2\u060c \u0627\u0648\u0631 \u06cc\u06c1 \u067e\u06c1\u0686\u0627\u0646\u0627 \u062c\u0627\u0626\u06d2 \u06a9\u06c1 \u0641\u0632\u06cc\u06a9\u0644 \u0679\u0627\u0633\u06a9 \u06a9\u06cc\u0648 \u06cc\u0627 \u0622\u0631\u06a9\u06cc\u0633\u0679\u0631\u06cc\u0679\u0631 \u06a9\u06c1\u0627\u06ba \u0628\u06c1\u062a\u0631 \u0679\u0648\u0644 \u06c1\u0648\u06af\u0627\u06d4<\/p>\n<p>\u0627\u06af\u0631 \u0622\u067e \u06a9\u06d2 \u0628\u0646\u06cc\u0627\u062f\u06cc \u0688\u06be\u0627\u0646\u0686\u06d2 \u0645\u06cc\u06ba \u0641\u06cc \u0627\u0644\u062d\u0627\u0644 \u062a\u0646\u06c1\u0627 \u0633\u0631\u0648\u0631 \u06c1\u06cc\u06ba \u062c\u0646 \u06a9\u0627 \u0648\u0627\u062d\u062f \u0645\u0642\u0635\u062f \u0686\u0644\u0627\u0646\u0627 \u06c1\u06d2\u06d4 <code>psql<\/code> \u0627\u0628 \u0622\u067e \u062c\u0627\u0646\u062a\u06d2 \u06c1\u06cc\u06ba \u06a9\u06c1 \u0627\u0633\u06d2 \u06a9\u0631\u0648\u0646\u0679\u0627\u0628 \u0645\u06cc\u06ba \u06a9\u06cc\u0633\u06d2 \u0679\u06be\u06a9\u0627\u0646\u06d2 \u0644\u06af\u0627\u06cc\u0627 \u062c\u0627\u0626\u06d2\u06d4<\/p>\n<p>\u067e\u0691\u06be\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u0634\u06a9\u0631\u06cc\u06c1! \u0645\u06cc\u06ba PostgreSQL \u0627\u0648\u0631 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0627\u0646\u062c\u06cc\u0646\u0626\u0631\u0646\u06af \u06a9\u06d2 \u0628\u0627\u0631\u06d2 \u0645\u06cc\u06ba \u0644\u06a9\u06be\u062a\u0627 \u06c1\u0648\u06ba\u06d4 \u0622\u067e \u0645\u062c\u06be \u0633\u06d2 LinkedIn \u067e\u0631 \u0631\u0627\u0628\u0637\u06c1 \u06a9\u0631 \u0633\u06a9\u062a\u06d2 \u06c1\u06cc\u06ba \u0627\u0648\u0631<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u06c1\u0631 \u0628\u06cc\u06a9 \u0627\u06cc\u0646\u0688 \u0633\u0633\u0679\u0645 \u06a9\u0648 \u0622\u062e\u0631 \u06a9\u0627\u0631 \u0634\u06cc\u0688\u0648\u0644 \u067e\u0631 \u0686\u0644\u0646\u06d2 \u06a9\u06d2 \u0644\u06cc\u06d2 \u06a9\u0686\u06be \u062f\u0631\u06a9\u0627\u0631 \u06c1\u0648\u062a\u0627 \u06c1\u06d2\u06d4 \u067e\u0631\u0627\u0646\u06d2 \u0633\u06cc\u0634\u0646\u0632 \u06a9\u0648 \u0686\u06be\u0648\u0691\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0633\u0645\u0631\u06cc \u0679\u06cc\u0628\u0644\u0632 \u06a9\u0648 \u062f\u0648\u0628\u0627\u0631\u06c1 \u0628\u0646\u0627\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0645\u0627\u062f\u06cc \u062e\u06cc\u0627\u0644\u0627\u062a \u06a9\u0648 \u062a\u0627\u0632\u06c1 \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2\u060c \u0627\u0648\u0631 \u062f\u06cc\u06a9\u06be \u0628\u06be\u0627\u0644 \u06a9\u0627 \u06a9\u0627\u0645 \u0627\u0633 \u0648\u0642\u062a \u06a9\u0631\u0646\u06d2 \u06a9\u06cc \u0636\u0631\u0648\u0631\u062a \u06c1\u06d2 \u062c\u0628 \u0633\u0628 \u0633\u0648 \u0631\u06c1\u06d2 \u06c1\u0648\u06ba\u06d4 [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-25537","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/25537","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/comments?post=25537"}],"version-history":[{"count":0,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/posts\/25537\/revisions"}],"wp:attachment":[{"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/media?parent=25537"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/categories?post=25537"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/umang.pk\/ur\/wp-json\/wp\/v2\/tags?post=25537"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}