Я поєдную базу даних MySQL з об'єктами даних PHP (PDO) і виконую широкий SQL-запит. Зазвичай це займає близько 1500 мс; Мені ще потрібно її оптимізувати. Коли я запускаю сценарій PHP двічі з коротким інтервалом між ними, запит займає лише близько 90 мс. В обох випадках запит однаковий. Коли я запускаю сценарій з тим же запитом, через деякий час знову потрібно 1500 мс.
Чому так? Чи кешується база даних автоматично? Чи є якийсь час база даних зберігає кеш, а потім автоматично видаляє його?
Я припускаю, що результати не можуть кешуватися PHP, оскільки це відбувається у двох різних потоках. Я не думаю, що PHP буде кешувати результати, оскільки він не може знати, чи змінилася база даних.
У мене сценарій працює щохвилини для вставки нових рядків у базу даних. Це також може бути причиною того, що через деякий час знову потрібно 1500 мс; кеш буде видалено, оскільки відповідні таблиці вже не однакові.