Как я могу остановить кэширование оператора Oracle Select в PHP? - PullRequest
0 голосов
/ 21 января 2020

У меня есть базовый c SQL оператор SELECT в PHP, который я передаю серверу 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, он поднимается последние изменения, если я оставлю это приложение в покое на некоторое время. Если я часто запускаю приложение, оно, похоже, кеширует запрос, даже без подсказки кеша в запросе.

Я не могу на самом деле гриппить sh кеш на сервере, как в среде prod и на самом деле не хочу замедлять работу других приложений, использующих данные.

Как я могу заставить свой запрос возвращать измененные результаты при выполнении так часто, как каждые 5 минут?

1 Ответ

2 голосов
/ 21 января 2020

Извините, я не думаю, что база данных может давать неправильные результаты из-за кэширования. Документация гласит следующее

"Когда пользователи многократно выполняют запросы и функции, база данных извлекает строки из кэша, уменьшая время отклика. Кэшированные результаты становятся недействительными при изменении данных в зависимых объектах базы данных . "

Поэтому я бы предложил вам либо проверить, действительно ли обновлены данные, либо искать кэшированные результаты на другом прикладном уровне.

Опять же, извините за не помогающий ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...