Configuring caching in MySQL

Configuring caching in MySQL can significantly enhance database performance by reducing query execution times. Below are the steps to configure caching in MySQL:


1. Enable Query Cache

The query cache is used to store the results of SELECT queries. If the same query is executed again, MySQL can return the cached result without re-executing the query.

Steps:
  1. Check if the query cache is enabled:

    SHOW VARIABLES LIKE 'query_cache%';

  2. Enable and configure query cache in the MySQL configuration file (my.cnf or my.ini):

    [mysqld] query_cache_type = 1 # 1 = ON, 2 = DEMAND (only cache queries with SQL_CACHE) query_cache_size = 128M # Set the size of the query cache query_cache_limit = 2M # Maximum size of individual query results to cache

  3. Restart the MySQL service to apply changes:

    sudo service mysql restart

  4. Use SQL_CACHE or SQL_NO_CACHE in queries (if query_cache_type = 2):

    SELECT SQL_CACHE * FROM my_table WHERE id = 1;


2. Use InnoDB Buffer Pool

For the InnoDB storage engine, the InnoDB Buffer Pool is the primary caching mechanism for data and indexes.

Steps:
  1. Configure the buffer pool size in my.cnf:

    [mysqld] innodb_buffer_pool_size = 4G # Set it to about 70-80% of total available memory innodb_buffer_pool_instances = 4 # Number of buffer pool instances (for large buffer sizes)

  2. Restart MySQL:

    sudo service mysql restart

  3. Monitor usage:

    SHOW ENGINE INNODB STATUS\G;


3. Configure Table Cache

The table cache determines how many table handles MySQL can keep open at a time.

Steps:
  1. Configure table_open_cache in my.cnf:

    [mysqld] table_open_cache = 2000 # Adjust based on workload

  2. Monitor open tables:

    SHOW STATUS LIKE 'Open_tables';


4. Use Performance Schema and Query Optimization

MySQL includes a Performance Schema to monitor and optimize queries, which helps identify which queries to cache or optimize.

Steps:
  1. Enable Performance Schema:

    [mysqld] performance_schema = ON

  2. Analyze slow queries:

    SHOW FULL PROCESSLIST;

  3. Enable and configure the slow query log:

    [mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql-slow.log long_query_time = 1

  4. Restart MySQL and review slow queries:

    sudo service mysql restart tail -f /var/log/mysql-slow.log


5. Use Proxy Cache (Optional)

Consider using a proxy tool like ProxySQL for advanced query caching mechanisms.


6. Monitor Cache Usage

Use these commands to monitor caching performance:

  • Query cache: SHOW STATUS LIKE 'Qcache%';

  • InnoDB buffer pool: SHOW STATUS LIKE 'Innodb_buffer_pool%';

相关推荐
龙腾AI白云4 小时前
AI检索增强生成(RAG):解决大模型幻觉的核心落地技术
数据库·人工智能·机器学习·知识图谱
一 乐4 小时前
动漫书销售商城|基于springboot + vue动漫书销售商城(源码+数据库+文档)
java·数据库·vue.js·spring boot·毕业设计
zzj_2626104 小时前
MySQL常用操作
数据库·mysql
其实防守也摸鱼5 小时前
Fastjson 反序列化漏洞(JNDI注入)
android·数据库·安全·oracle·自动化·fastjson·反序列化
haerapi5 小时前
把 PostgreSQL 复制巡检做成可审计闭环:确定性采集、阈值判定与受控模型归纳
数据库·postgresql
yolo_guo5 小时前
调试mysql延迟与libevent回调实际发送回复时机问题
c++·mysql·libevent
旺仔学长 哈哈5 小时前
springboot钓鱼爱好者交流平台APP设计与实现
java·spring boot·mysql·充电桩管理系统
微学AI6 小时前
不让每一步都调用最贵模型:用蓝耘智能路由改造自主式研究 Agent
数据库·人工智能·蓝耘
yjb.gz6 小时前
Oracle19 RAC查看集群状态及磁盘空间情况(巡检)
数据库
钝挫力PROGRAMER6 小时前
开发踩坑记:MyBatis selectKey、空 SQL
数据库·sql·mybatis