文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  排程器元件

7.5.5 排程器元件

注意

scheduler 元件包含在 MySQL 企業版中,這是一項商業產品。若要深入瞭解商業產品,請參閱 https://mysql.dev.org.tw/products/

scheduler 元件提供 mysql_scheduler 服務的實作,讓應用程式、元件或外掛程式能夠每 N 秒設定、執行和取消設定工作。例如,audit_log 伺服器外掛程式在其初始化時呼叫 scheduler 元件,並設定其記憶體快取的定期重複刷新 (請參閱啟用稽核日誌刷新工作)。

  • 用途:實作 component_scheduler.enabled 系統變數,控制排程器是否正在主動執行工作。在啟動時,scheduler 元件會註冊 performance_schema.component_scheduler_tasks 表格,其中列出目前排程的工作以及每個工作的一些執行階段資料。

  • URN: file://component_sheduler

如需安裝指示,請參閱第 7.5.1 節,「安裝和解除安裝元件」

scheduler 元件使用這些元素來實作服務

  • 已註冊且非使用中排程工作的優先順序佇列,依下次執行時間排序 (依遞增順序)。

  • 已註冊且使用中工作的清單。

  • 背景執行緒

    • 如果沒有工作或頂端工作需要更多時間才能執行,則會休眠。它會定期喚醒以檢查是否到了結束的時間。

    • 編譯需要執行的工作清單、將它們從非使用中佇列移至使用中佇列,並個別執行每個工作。

    • 執行工作清單後,從使用中清單中移除工作、將它們新增至非使用中清單,並計算下次需要執行的時間。

當呼叫端叫用 mysql_scheduler.create() 服務時,它會建立新的排程工作執行個體,以新增至佇列,這會向背景執行緒發出號誌。新工作的控制代碼會傳回給呼叫端。呼叫程式碼應保留此控制代碼和排程服務的服務參考,直到呼叫 mysql_scheduler.destroy() 服務之後。當呼叫端叫用 destroy() 並傳入從 create() 收到的控制代碼時,服務會等待工作變成非使用中 (如果正在執行),然後將其從非使用中佇列中移除。

元件服務會依執行每個工作所需的時間,一次一個地按照遞增順序,在同一個排程器執行緒中呼叫每個應用程式提供的回呼 (函式指標)。

希望將排程器佇列功能併入應用程式、元件或外掛程式的開發人員,應查閱 MySQL 原始碼發行版本中的 mysql_scheduler.h 檔案。