“資料庫更改通知”入門
php培訓-“資料庫更改通知”特性的用法非常簡單:建立一個針對通知執行的通知處理程式– 一個 PL/SQL 儲存過程或客戶端 OCI 回撥函式。
然後,針對要接收其更改通知的資料庫物件註冊一個查詢,以便每當事務更改其中的任何物件並提交時呼叫通知處理程式。通常情況下,通知處理程式將被修改的表的名稱、所做更改的型別以及所更改行的行 ID(可選)傳送給客戶端監聽程式,以便客戶端應用程式可以在響應中執行相應的處理。
為了瞭解“資料庫更改通知”特性的作用方式,請考慮以下示例。假設您的 PHP 應用程式訪問 OE.ORDERS 表中儲存的訂單以及 OE.ORDER_ITEMS 中儲存的訂單項。
鑑於很少更改已下訂單的資訊,您可能希望應用程式同時快取針對 ORDERS 和 ORDER_ITEMS 表的查詢結果集。要避免訪問過期資料,您可以使用“資料庫更改通知”,它可讓您的應用程式方便地獲知以上兩個表中所儲存資料的更改。
您必須先將 CHANGENOTIFICATION 系統許可權以及 EXECUTE ON DBMS_CHANGENOTIFICATION 許可權授予 OE 使用者,才能註冊對 ORDERS 和 ORDER_ITEMS 表的查詢,以便接收通知和響應對這兩個表所做的 DML 或 DDL 更改。為此,可以從 SQL 命令列工具(如 SQL*Plus)中執行下列命令。
眾所周知,快取資料庫查詢的結果可以顯著縮短指令碼執行時間,並最大限度地減少資料庫伺服器上的負載。如果要處理的資料基本上是靜態的,則該技術將非常有效。這是因為對遠端資料庫的許多資料請求最終可以從本地快取得到滿足,從而不必連線到資料庫、執行查詢以及獲取結果。
但當您使用的資料庫與 Web伺服器位於不同的計算機上時,快取資料庫結果集通常是一個不錯的方法。不過,根據您的情況確定最佳的快取策略卻是一個難題。
例如,對於使用最新資料庫結果集比較重要的應用程式而言,時間觸發的快取方法(快取系統常用的方法,它假設每次到達失效時間戳記時就重新生成快取)可能並不是一個令人滿意的解決方案。
這種情況下,您需要採用一種機制,每當應用程式需要快取的資料庫資料發生更改時,該機制將通知該應用程式,以便該應用程式將快取的過期資料與資料庫保持一致。這種情況下使用“資料庫更改通知”將非常方便。