關鍵字:PHP性能
眾所周知,緩存數據庫查詢的結果可以顯著縮短腳本執行時間,并最大限度地減少數據庫服務器上的負載。如果要處理的數據基本上是靜態的,則該技術將非常有效。這是因為對遠程數據庫的許多數據請求最終可以從本地緩存得到滿足,從而不必連接到數據庫、執行查詢以及獲取結果。但當您使用的數據庫與 Web 服務器位于不同的計算機上時,緩存數據庫結果集通常是一個不錯的方法。不過,根據您的情況確定最佳的緩存策略卻是一個難題。例如,對于使用最新數據庫結果集比較重要的應用程序而言,時間觸發的緩存方法(緩存系統常用的方法,它假設每次到達失效時間戳記時就重新生成緩存)可能并不是一個令人滿意的解決方案。這種情況下,您需要采用一種機制,每當應用程序需要緩存的數據庫數據發生更改時,該機制將通知該應用程序,以便該應用程序將緩存的過期數據與數據庫保持一致。這種情況下使用“數據庫更改通知”將非常方便。
“數據庫更改通知”入門
“數據庫更改通知”特性的用法非常簡單:創建一個針對通知執行的通知處理程序 – 一個 PL/SQL 存儲過程或客戶端 OCI 回調函數。然后,針對要接收其更改通知的數據庫對象注冊一個查詢,以便每當事務更改其中的任何對象并提交時調用通知處理程序。通常情況下,通知處理程序將被修改的表的名稱、所做更改的類型以及所更改行的行 ID(可選)發送給客戶端監聽程序,以便客戶端應用程序可以在響應中執行相應的處理。
為了了解“數據庫更改通知”特性的作用方式,請考慮以下示例。假設您的 PHP 應用程序訪問 OE.ORDERS 表中存儲的訂單以及 OE.ORDER_ITEMS 中存儲的訂單項。鑒于很少更改已下訂單的信息,您可能希望應用程序同時緩存針對 ORDERS 和 ORDER_ITEMS 表的查詢結果集。要避免訪問過期數據,您可以使用“數據庫更改通知”,它可讓您的應用程序方便地獲知以上兩個表中所存儲數據的更改。
您必須先將 CHANGE NOTIFICATION 系統權限以及 EXECUTE ON DBMS_CHANGENOTIFICATION 權限授予 OE 用戶,才能注冊對 ORDERS 和 ORDER_ITEMS 表的查詢,以便接收通知和響應對這兩個表所做的 DML 或 DDL 更改。為此,可以從 SQL 命令行工具(如 SQL*Plus)中執行下列命令。
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/