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

定時任務(pg_cron)

RDS PostgreSQL支持pg_cron定時任務插件。該插件基于cron的作業調度,語法與常規cron相同,您可以通過相應的SQL命令直接在數據庫中配置定時任務。

功能簡介

pg_cron是基于cron的作業調度插件,語法與常規cron相同,您可以通過相應的SQL命令直接在數據庫中配置定時任務。更多詳細信息請參見pg_cron

每一個定時任務主要包含定時計劃定時任務內容兩部分,例如每周六凌晨3:30(GMT)刪除events表中過期數據的任務SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);中:

  • 定時計劃30 3 * * 6,表示每周六凌晨3:30(GMT)執行。其使用標準的cron語法,其中*表示任意時間都運行,特定數字表示僅在這個時間時運行

     ┌───────────── 分鐘: 0 ~ 59
     │ ┌────────────── 小時: 0 ~ 23
     │ │ ┌─────────────── 日期: 1 ~ 31
     │ │ │ ┌──────────────── 月份: 1 ~ 12
     │ │ │ │ ┌───────────────── 一周中的某一天 :0 ~ 6,0表示周日。
     │ │ │ │ │                  
     │ │ │ │ │
     │ │ │ │ │
     * * * * *

    您可以在crontab.guru網站中創建和理解pg_cron定時任務的時間設置。

  • 定時任務內容$$DELETE FROM events WHERE event_time < now() - interval '1 week'$$,表示刪除events表中的過期數據。

前提條件

  • 實例為RDS PostgreSQL 10或以上版本。

  • 實例內核小版本為20230830或以上。

    重要

    20230830內核小版本之前已支持此插件,但為了規范插件管理,提升RDS PostgreSQL在插件側的安全防護,RDS計劃在內核版本迭代中陸續對部分存在安全風險的插件進行優化,部分插件在低內核小版本無法創建,更多信息,請參見【產品/功能變更】RDS PostgreSQL限制創建插件說明

    • 如果您的實例內核小版本低于20230830,且已經使用了此插件,則不影響使用。

    • 如果您首次創建或重新創建此插件,請升級內核小版本到最新。

  • 使用該插件前,需要將pg_cron添加到shared_preload_libraries運行參數值中。

    您可以使用RDS PostgreSQL的設置實例參數功能,在shared_preload_libraries運行參數值中添加pg_cron。例如,將運行參數值改為'pg_stat_statements,auto_explain,pg_cron'

使用須知

  • 定時任務執行的時間是GMT時間,請注意換算時間。

  • 定時任務都儲存于默認數據庫postgres中,但是您可以在其他數據庫上查詢定時任務。

  • pg_cron插件安裝在cron.database_name參數指定的數據庫中。cron.database_name參數值默認為postgres,如果您需要將pg_cron插件安裝在其他數據庫中,請修改cron.database_name參數值,詳情請參見設置實例參數

  • RDS PostgreSQL 10、11、12在20201130內核小版本之前已支持pg_cron插件,然而,由于pg_cron插件已進行升級,建議將內核小版本升級至最新版本。如果您在升級前已在使用pg_cron,請重新創建插件以利用新特性。需要注意的是,重新創建后原有的定時任務將會丟失。

  • 創建和刪除pg_cron插件時,需要使用高權限賬號,如何創建高權限賬號請參見創建賬號

使用方法

重要

pg_cron插件安裝在cron.database_name參數指定的數據庫(默認為postgres)中,該插件支持的命令僅限于在該特定數據庫內執行。更多pg_cron插件的用法,請參見pg_cron

  • 創建插件

    CREATE EXTENSION pg_cron;
    說明
    • 僅高權限賬號可以執行此命令。如何創建高權限賬號請參見創建賬號

    • 您可以執行SELECT * FROM pg_extension查看已安裝的插件。

  • 創建定時任務

    SELECT cron.schedule('<定時任務名稱>','<定時計劃>', '<定時任務內容>');
    說明

    定時任務名稱可以省略。定時任務設置成功后,返回定時任務ID。

    示例:

    -- 周六3:30am (GMT) 刪除過期數據。 
    SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
    
    ----------
    
    -- 每天的10:00am (GMT) 執行磁盤清理。
    SELECT cron.schedule('0 10 * * *', 'VACUUM');
  • 指定數據庫創建定時任務

    SELECT cron.schedule_in_database('<定時任務名稱>', '<定時計劃>', '<定時任務內容>', '<指定數據庫>');
    重要

    定時任務名稱必須填寫,未填寫將導致任務創建失敗。

    如果RDS PostgreSQL內核小版本小于20230530,請使用如下命令。不指定數據庫時會使用cron.database_name參數指定的數據庫(默認為postgres)。

    SELECT cron.schedule('<定時計劃>', '<定時任務內容>', '<指定數據庫>')

    示例:

    SELECT cron.schedule_in_database('weekly-vacuum', '0 4 * * 0', 'VACUUM', 'some_other_database');
  • 查看當前定時任務列表

    SELECT * FROM cron.job;
  • 刪除某個定時任務

    SELECT cron.unschedule(<定時任務ID>);

    如果您指定了定時任務名稱,也可以通過定時任務名稱刪除該任務。

    SELECT cron.unschedule('<定時任務名稱>');

    示例:

    -- 通過定時任務ID刪除
    SELECT cron.unschedule(43);
    -- 通過定時任務名稱刪除
    SELECT cron.unschedule('test01');
  • 刪除插件

    DROP EXTENSION pg_cron;
    說明

    僅高權限賬號可以執行此命令。