• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    通過緩存數據庫結果提高PHP性能

    發布: 2008-10-15 11:16 | 作者: 不詳 | 來源: 測試時代采編 | 查看: 152次 | 進入軟件測試論壇討論

    領測軟件測試網
    關鍵字: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/

    TAG: php PHP 緩存 結果 數據庫 性能

    31/3123>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>