Mysql
 sql >> база данни >  >> RDS >> Mysql

Кога да използвате SQL_NO_CACHE

SQL_NO_CACHE

Просто добавете SQL_NO_CACHE след частта SELECT на израза SELECT и преди списъка с полета. Първата заявка по-долу ще използва кеша на заявките, ако е активиран и заявката е кеширана:

SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms

Втората заявка по-долу няма да използва кеша на заявките:

SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time

Това е особено полезно при сравнителен анализ на заявка; ако кешът на заявките е разрешен, въпреки че първата заявка може да отнеме известно време, втората и следващите заявки са почти мигновени. С използването на SQL_NO_CACHE можете да бъдете сигурни, че кешът на заявката не се използва и можете безопасно да сравнявате времената на резултатите. Подсказката SQL_NO_CACHE изключва вградения механизъм за кеширане на заявки на MySQL за конкретна заявка. Можете да помогнете на MySQL да направи кеша на заявките по-ефективен, като използвате този намек за заявки, които са силно динамични (като търсене по ключова дума или отчет, който се изпълнява само всяка нощ). Уверете се, че кеширането на заявките е включено, в противен случай няма нужда от това команда.

какви SQL_CACHE и SQL_NO_CACHE?

Опциите SQL_CACHE и SQL_NO_CACHE влияят на кеширането на резултатите от заявката в кеша на заявката. SQL_CACHE казва на MySQL да съхранява резултата в кеша на заявката, ако е кешируем и стойността на системната променлива query_cache_type е 2 или DEMAND. С SQL_NO_CACHE сървърът не използва кеша на заявките. Той нито проверява кеша на заявката, за да види дали резултатът вече е кеширан, нито кешира резултата от заявката. (Поради ограничение в анализатора символът за интервал трябва да предхожда и следва ключовата дума SQL_NO_CACHE; неинтервал, като нов ред, кара сървъра да провери кеша на заявката, за да види дали резултатът вече е кеширан.)

NO_CACHE според мен може да се използва, ако 'CACHE' е активиран и данните в db се актуализират динамично, т.е. не може да се разчита на кеш на db данни, например:съхраняване на хеш на паролата на потребителя, не можем да разчитаме на CACHE, тъй като има често възможност за промяна на данните

Актуализации на полезни сценарии

1) принудително да не се използва кеш за тестване на скоростта на заявката



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Йерархични заявки в MySQL

  2. Какво връща успешното MySQL DELETE? Как да проверя дали DELETE е успешно?

  3. MySQL:Как да разбера кои таблици препращат към конкретна таблица?

  4. Как да използвам Spring JdbcTemplate за свързване към обикновена база данни MySql?

  5. Неуспешна SQL LIKE заявка - фатална грешка в подготвената инструкция