如何停止在PHP中缓存Oracle Select语句?

时间:2020-01-21 03:37:45

标签: php oracle caching

我在PHP中有一个基本的SQL select语句,可以将其传递给oracle服务器。

$queryString = "
            SELECT /*+ NOCACHE */
                company,
                addr1,
                addr2,
                addr3,
                city,
                state,
                country,
                zip,                    
                custno CUSTOMERNUMBER,
                prime_contact PRIMECONTACT,
                prime_contact_email PRIMEEMAIL,
                phone_number PRIMEPHONE,
                ext PRIMEEXTN,
                fax_number PRIMEFAX,
                ID
            FROM               
                IQMS.ARCUSTO 
            WHERE 
                ID=" . $ID;


        $stid = oci_parse($OracleConnection, $queryString);
        oci_execute($stid);

        $row = oci_fetch_array($stid, OCI_ASSOC);

        oci_free_statement($stid);
        oci_close($OracleConnection);

当我执行查询n时,如果我将其单独放置一段时间,它将拉出最新的更改。如果我经常运行该应用程序,它似乎会缓存查询,即使查询中没有缓存提示。

我无法像在生产环境中那样真正刷新服务器上的缓存,并且真的不想降低使用数据的其他应用程序的速度。

如何每5分钟运行一次查询以返回更改的结果?

1 个答案:

答案 0 :(得分:2)

对不起,我认为数据库不会由于缓存而提供错误的结果。 documentation说以下

“当用户重复执行查询和功能时,数据库从缓存中检索行,从而减少了响应时间。当修改从属数据库对象中的数据时,缓存的结果将无效。”

因此,我建议您要么检查数据是否确实已更新,要么在另一个应用程序层上查找缓存的结果。

再次,很抱歉没有帮助