日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

云原生數(shù)據(jù)倉(cāng)庫(kù) AnalyticDB PostgreSQL 版的定時(shí)任務(wù),支持在指定時(shí)間點(diǎn)執(zhí)行批處理任務(wù),如定時(shí)更新數(shù)據(jù)、備份數(shù)據(jù)或清理過(guò)期數(shù)據(jù)等,能夠確保任務(wù)按照預(yù)定計(jì)劃進(jìn)行,避免遺漏或延遲,節(jié)省時(shí)間和人力成本,實(shí)現(xiàn)自動(dòng)準(zhǔn)確高效的任務(wù)執(zhí)行,提升系統(tǒng)的效率和可管理性。

功能介紹

pg_cron是基于cron的作業(yè)調(diào)度插件,語(yǔ)法與常規(guī)cron相同,但pg_cron可以直接從數(shù)據(jù)庫(kù)執(zhí)行PostgreSQL命令。

定時(shí)任務(wù)主要分為定時(shí)計(jì)劃和任務(wù)內(nèi)容兩個(gè)部分,具體介紹如下:

  • 任務(wù)內(nèi)容:用于指定該任務(wù)的具體內(nèi)容,例如VACUUM

  • 定時(shí)計(jì)劃:用于規(guī)定任務(wù)的時(shí)間計(jì)劃,例如每隔一分鐘執(zhí)行一次該任務(wù)。

    定時(shí)計(jì)劃使用標(biāo)準(zhǔn)的cron語(yǔ)法,語(yǔ)法如下:

     ┌───────────── 分鐘 (取值為0 - 59)
     │ ┌────────────── 小時(shí) (取值為0 - 23)
     │ │ ┌─────────────── 日期 (取值為1 - 31)
     │ │ │ ┌──────────────── 月份 (取值為1 - 12)
     │ │ │ │ ┌───────────────── 一周中的一天 (取值為0 - 6,0表示周日)
     │ │ │ │ │
     │ │ │ │ │
     │ │ │ │ │
      *  *  *  *  *
    • *表示任意時(shí)間都可以運(yùn)行。

    • 特定數(shù)字表示僅在這個(gè)時(shí)間運(yùn)行。

    • ,表示分隔多個(gè)指定時(shí)間。

    • -表示時(shí)間范圍。

    • /表示范圍間隔。

    創(chuàng)建或預(yù)覽定時(shí)計(jì)劃,請(qǐng)參見(jiàn)Crontab.guru

    示例如下:

    • 每周六3:30 AM(GMT):

      30 3 * * 6
    • 每月1號(hào)和30號(hào)1:45 AM(GMT):

      45 1 1,30 * *
    • 每周一至周五的3:00 AM (GMT):

      00 3 * * 1-5
    • 從8點(diǎn)(GMT)到20點(diǎn)(GMT),每?jī)尚r(shí)整點(diǎn):

      0 8-20/2 * * *

注意事項(xiàng)

  • 定時(shí)任務(wù)執(zhí)行的時(shí)間是GMT或UTC時(shí)間,在使用時(shí)注意換算本地時(shí)間。

  • 定時(shí)任務(wù)都儲(chǔ)存于默認(rèn)數(shù)據(jù)庫(kù)postgres中,僅支持在數(shù)據(jù)庫(kù)postgres中查詢(xún)定時(shí)任務(wù)。

  • 如果實(shí)例版本低于v6.3.6.0(AnalyticDB PostgreSQL 6.0版實(shí)例)、v7.0.3.0(AnalyticDB PostgreSQL 7.0版實(shí)例)或v2.0.0.1(AnalyticDB PostgreSQL版Serverless模式實(shí)例),本文中介紹的部分功能可能無(wú)法使用。如需使用本文中的所有功能,建議您升級(jí)實(shí)例內(nèi)核小版本。升級(jí)實(shí)例的內(nèi)核版本,請(qǐng)參見(jiàn)版本升級(jí)

安裝或刪除插件

安裝插件

pg_cron插件為默認(rèn)安裝插件,創(chuàng)建云原生數(shù)據(jù)倉(cāng)庫(kù) AnalyticDB PostgreSQL 版實(shí)例后自動(dòng)安裝,無(wú)需手動(dòng)安裝。

刪除插件

pg_cron插件目前存在內(nèi)核功能依賴(lài),無(wú)法刪除。

添加定時(shí)任務(wù)

添加定時(shí)任務(wù)

語(yǔ)法如下:

SELECT cron.schedule('<定時(shí)計(jì)劃>', '<定時(shí)任務(wù)>');

示例如下:

  • 周六3:30 AM(GMT)刪除過(guò)期數(shù)據(jù):

    SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
  • 每天的10:00 AM(GMT)執(zhí)行函數(shù)test:

    SELECT cron.schedule('0 10 * * *', 'select test()');
  • 每分鐘執(zhí)行指定SQL:

    SELECT cron.schedule('* * * * *', 'select 1');
  • 每月1號(hào)和30號(hào)以及每周六和周日的2:30 AM(GMT)執(zhí)行磁盤(pán)清理:

    SELECT cron.schedule('30 2 1,30 * 6,0', 'VACUUM FULL');

指定定時(shí)任務(wù)名稱(chēng)

pg_cron現(xiàn)已支持添加定時(shí)任務(wù)名稱(chēng)字段,語(yǔ)法如下:

SELECT cron.schedule('<定時(shí)任務(wù)名稱(chēng)>', '<定時(shí)計(jì)劃>', '<定時(shí)任務(wù)>');

示例如下:

  • 每周六的10:00 AM(GMT)刪除過(guò)期數(shù)據(jù):

    SELECT cron.schedule('Delete Expired Data','30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
  • 每分鐘執(zhí)行指定SQL:

    SELECT cron.schedule('Select Per Minute', '* * * * *', 'select 1');
  • 每天的11:00 PM(GMT)對(duì)Postgres庫(kù)執(zhí)行VACUUM:

    SELECT cron.schedule('Do Vacuum', '0 23 * * *' , 'VACUUM FULL');

指定定時(shí)任務(wù)執(zhí)行數(shù)據(jù)庫(kù)

低于1.4版本的pg_cron插件只能在安裝插件的庫(kù)執(zhí)行定時(shí)任務(wù),如果需要在其他庫(kù)執(zhí)行任務(wù),需要直接操作cron.job表,操作不方便且不安全。

1.4版本的pg_cron插件支持指定數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)賬號(hào)執(zhí)行定時(shí)任務(wù)。語(yǔ)法如下:

SELECT cron.schedule('<定時(shí)任務(wù)名稱(chēng)>', '<定時(shí)計(jì)劃>', '<定時(shí)任務(wù)>', '<執(zhí)行數(shù)據(jù)庫(kù)>', '<數(shù)據(jù)庫(kù)賬號(hào)>', '<任務(wù)是否啟用>');
  • '<執(zhí)行數(shù)據(jù)庫(kù)>':默認(rèn)值為空,表示在postgres庫(kù)執(zhí)行。

  • '<數(shù)據(jù)庫(kù)賬號(hào)>:默認(rèn)值為空,表示使用當(dāng)前賬號(hào)執(zhí)行。

  • '<任務(wù)是否啟用>':默認(rèn)值為true,表示啟用該定時(shí)任務(wù)。

示例如下:

  • 每天的11:00 PM(GMT)在dw庫(kù)執(zhí)行VACUUM:

    SELECT cron.schedule('Do Vacuum', '0 23 * * *' , 'VACUUM FULL', 'dw');
  • 每分鐘讓gp1234用戶(hù)在dw庫(kù)中執(zhí)行指定SQL:

    SELECT cron.schedule('Select Per Minute', '* * * * *', 'select 1', 'dw', 'gp1234');
  • 每天的10:00 AM(GMT)讓user1用戶(hù)在dw庫(kù)執(zhí)行函數(shù)test:

    SELECT cron.schedule('DO Function', '0 10 * * *', 'select test()', 'dw', 'user1', true);

更改定時(shí)任務(wù)

pg_cron提供了cron.alter_job函數(shù)用于更改定時(shí)任務(wù),語(yǔ)法如下:

SELECT cron.alter_job(<定時(shí)任務(wù)ID>, '<定時(shí)計(jì)劃>', '<定時(shí)任務(wù)>', '<執(zhí)行數(shù)據(jù)庫(kù)>', '<執(zhí)行用戶(hù)>', '<任務(wù)是否啟用>');
  • <定時(shí)任務(wù)ID>:必填。定時(shí)任務(wù)ID為創(chuàng)建任務(wù)時(shí)自動(dòng)生成的,可以通過(guò)查看cron.job表的jobid字段查看。

  • 其他參數(shù):非必填,默認(rèn)值為空,表示不更改。

示例如下:

  • 任務(wù)ID為3的定時(shí)任務(wù)更改為每天11:00 AM(GMT)執(zhí)行:

    SELECT cron.alter_job(3, '0 11 * * *');
  • 任務(wù)ID為1的定時(shí)任務(wù)更改為VACUUM:

    SELECT cron.alter_job(1, null , 'VACUUM');
  • 任務(wù)ID為2的定時(shí)任務(wù)的執(zhí)行用戶(hù)更改為gp1234:

    SELECT cron.alter_job(2, null , null, null, 'gp1234');

查看定時(shí)任務(wù)執(zhí)行信息

pg_cron新增了cron.job_run_details表記錄定時(shí)任務(wù)執(zhí)行信息,您可以在該表中獲取執(zhí)行任務(wù)的詳細(xì)情況。

說(shuō)明

定時(shí)任務(wù)較多時(shí),可能會(huì)導(dǎo)致cron.job_run_details表變得非常大,建議設(shè)置一個(gè)定時(shí)任務(wù)來(lái)刪除該表。如果您不需要記錄定時(shí)任務(wù)的執(zhí)行情況,也可以提交工單聯(lián)系技術(shù)支持修改cron.log_run關(guān)閉記錄信息。

示例如下:

  • 查看失敗的任務(wù)詳情:

    SELECT * FROM cron.job_run_details WHERE status = 'failed';
  • 查看任務(wù)ID為1的定時(shí)任務(wù)執(zhí)行詳情:

    SELECT * FROM cron.job_run_details WHERE jobid = '1';

查看定時(shí)任務(wù)列表

示例如下:

SELECT * FROM cron.job;

刪除定時(shí)任務(wù)

  • 通過(guò)任務(wù)名稱(chēng)刪除定時(shí)任務(wù),語(yǔ)法如下:

    SELECT cron.unschedule('<定時(shí)任務(wù)名稱(chēng)>');
    重要

    pg_cron允許創(chuàng)建重復(fù)的定時(shí)任務(wù)名稱(chēng),當(dāng)刪除名稱(chēng)重復(fù)的定時(shí)任務(wù)時(shí),只會(huì)刪除任務(wù)ID較小的定時(shí)任務(wù)。

    示例如下:

    刪除名為Do Vacuum的定時(shí)任務(wù):

    SELECT cron.unschedule('Do Vacuum');
  • 通過(guò)定時(shí)任務(wù)ID刪除定時(shí)任務(wù),語(yǔ)法如下:

    SELECT cron.unschedule(<定時(shí)任務(wù)ID>);

    定時(shí)任務(wù)ID為創(chuàng)建任務(wù)時(shí)自動(dòng)生成的,可以通過(guò)查看cron.job表的jobid字段查看。

    示例如下:

    刪除定時(shí)任務(wù)ID為21的定時(shí)任務(wù):

    SELECT cron.unschedule(21);

相關(guān)文檔