1.mysql连接数:MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,连接数少的话,在大并发下连接数会不够用,会有很多线程在等待其他连接释放,就可能会导致数据库连接超时或者响应时间过长,所以需要调整最大连接数。在mysql的配置文件中增加下列内容:max_connections = 1000 #mysql的最大连接数,默认如果不写的话是100个 wait_timeout = 10 #超时时间
之后登录mysql数据库输入命令:[root@besttest /]# /opt/lampp/bin/mysql -uroot -p123456
查看当前有多少个连接:show status like '%Threads_connected%';show processlist;
2.缓存的两个纬度:
查询缓存query cache 缓存的是sql语句和对应的结果集
设置查询缓存参数,在mysql配置文件中添加,linux下为my.cnf,windows下为my.ini:
1.query_cache_type = on
是否开启查询缓存,具体选项是off,on
2.query_cache_size = 200M
分配给查询缓存的总内存,一般建议不超过256M
3.query_cache_limit = 1M
这个选项限制了MySQL存储的最大结果。如果查询的结果比这个大,那么就不会被缓存。
查询qcache状态:SHOW VARIABLES LIKE '%query_cache%';
主要查看三个参数信息:query_cache_limit 缓存块大小,超过该大小不会被缓存;query_cache_size 分配给查询缓存的总内存;query_cache_type 是否开启
查询qcache当前使用情况:SHOW STATUS LIKE 'Qcache%';
参数信息:
Qcache_free_blocks Query Cache中目前还有多少剩余的blocks。如果该值显示较大,则说明Query Cache 中的内存碎片较多了,可能需要寻找合适的机会进行整理。如果这个值非常大,可以使用FLUSH QUERY CACHE;语句来清理查询缓存碎片以提高内存使用性能。该语句不从缓存中移出任何查询。
Qcache_free_memory Query Cache 中目前剩余的内存大小
Qcache_hits 缓存命中次数
Qcache_inserts 多少次未命中然后插入
备注:Query Cache 命中率= Qcache_hits / ( Qcache_hits + Qcache_inserts );
Qcache_lowmem_prunes 多少条Query 因为内存不足而被清除出Query
Qcache_not_cached 因为query_cache_type 的设置或者不能被cache 的Query 的数量
Qcache_queries_in_cache 当前Query Cache 中cache 的Query 数量;
Qcache_total_blocks 当前Query Cache 中的block 数量
存储引擎层-innodb buffer pool 缓存的是表里的数据
主要参数:
Innodb_buffer_pool_size :Innodb_buffer_pool的大小
Innodb_buffer_pool_dump_now:默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘。
Innodb_buffer_pool_load_at_startup:默认为关闭OFF。如果开启该参数,启动MySQL服务时,MySQL将本地热数据加载到InnoDB缓冲池中。
查询Innodb_buffer_pool状态:SHOW VARIABLES LIKE '%innodb_buffer_pool%';
命令参数列表
innodb_buffer_pool_size 设置的bp大小
innodb_buffer_pool_filename 热数据文件名称
innodb_buffer_pool_dump_at_shutdown 停止mysq服务时是否自动保存热数据
innodb_buffer_pool_dump_now 启动mysql服务时是否自动读取热数据
查询Innodb_buffer_pool当前使用情况:SHOW STATUS LIKE '%Innodb_buffer_pool%';
主要关注的两个参数
Innodb_buffer_pool_read_requests 总共查询bp的次数
Innodb_buffer_pool_reads 从物理磁盘中获取到数据的次数,通过这两个参数我们可以知道bp的命中率