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

Трябва ли да пожертвам моя innodb_buufer_pool _size/RAM, за да направя място за query_cache_size?

Още през юни 2014 г. отговорих на https://dba.stackexchange.com/questions/66774/why-query-cache-type-is-disabled-by-default-start-from-mysql-5 -6/66796#66796

В тази публикация обсъдих как InnoDB микроуправлява промените между InnoDB Buffer Pool и Query Cache.

НЕ ИЗПОЛЗВА КЕША НА ЗАЯВКАТА

Най-простият отговор би бил просто да деактивирате кеша на заявките, но има уловка:трябва да зададете и двете query_cache_size и query_cache_type до нула (0).

Ако не зададете query_cache_type до нула(0), микроуправлението на промените все още се случва. Това се потвърждава от това, което Параграф 8 от MySQL Документация „Конфигурация на кеша на заявки“ казва

ИЗПОЛЗВАНЕ НА КЕШ НА ЗАЯВКАТА

Ако наистина искате да използвате кеша на заявки, тогава трябва да проучите данните си. По принцип трябва да знаете размера на вашите резултати. След това ще зададете query_cache_limit и query_cache_min_res_unit за да се съобразят с набора от резултати за среден размер, както и за набор от резултати за максимален размер.

Като алтернатива можете да активирате кеша на заявки глобално, но да деактивирате използването му от вашата DB сесия, както е посочено в Параграф 9 :

ВАШИЯТ ДЕЙСТВИТЕЛЕН ВЪПРОС

Кешът на заявките, InnoDB буферен пул, на нишки за връзка (Вижте моята публикация https://dba.stackexchange.com/questions/16969/how-costly-is-opening-and-closing-of-a-db-connection/ 16973#16973 ), и всички ОС се конкурират за RAM.

Когато разглеждате само Query Cache и InnoDB Buffer Pool, трябва да видите колко място е свободно в InnoDB Buffer Pool, след като MySQL работи в продължение на дни или седмици.

Можете да изпълните тази заявка

SELECT variable_value / 64 free_mb
FROM information_schema.global_status
WHERE variable_name='Innodb_buffer_pool_pages_free';

Това ще ви каже колко можете да намалите InnoDB Buffer Pool. След това можете да увеличите кеша на заявките с този размер. Ако тази заявка върне по-малко от 1024, вероятно не си струва усилията. Или ще трябва да получите допълнителното пространство от RAM, или просто да деактивирате кеша на заявките.



  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 LIMIT в корелирана подзаявка

  2. Пакетни вмъквания с PHP

  3. Как да използвате условие BETWEEN, като използвате основна заявка и подзаявки

  4. Непрекъснато мигриране на данни от mysql към Hbase

  5. Как да върнете лявата или дясната част от низ в MySQL