SQL和索引优化
https://wsmcs.cn/?p=211
慢查询日志 => 设置慢查询时间 => 记录慢查询sql => explain分析sql执行计划 => 优化措施
应用上的优化
连接池
引入缓存
存储热点数据。业务上增加redis、memcache,一般用缓存把经常访问的数据缓存起来。
MySQL Server优化
更改配置文件;关闭自适应哈希索引;增大缓冲区等等
MySQL的查询缓存是把select查询语句上一次的查询结果记录下来放在缓存当中,下一次再查询相同内
容的时候,直接从缓存中取出来就可以了,不用再进行一遍真正的SQL查询。但是当两个select查询中
间出现insert,update,delete语句的时候,查询缓存就会被清空。
(下面的内容直接粘贴的)
可以在MySQL上通过以下命令,来查看查询缓存的设置:
mysql> show variables like '%query_cache%';
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| have_query_cache | YES | 表示MySQL Server是否支持查询缓存,此处
YES为支持!
| query_cache_limit | 1048576 |
| query_cache_min_res_unit | 4096 |
| query_cache_size | 1048576 | 表示查询缓存的大小,单位为M
| query_cache_type | OFF | 表示目前查询缓存目前未开启
| query_cache_wlock_invalidate | OFF |
+------------------------------+---------+
6 rows in set (0.00 sec)
通过show status命令,可以查看MySQL查询缓存的使用状况,如下:
mysql> show status like 'Qcache%';
+-------------------------+---------+
| Variable_name | Value |
+-------------------------+---------+
| Qcache_free_blocks | 1 | 查询缓存中的空闲内存块的数目
| Qcache_free_memory | 1031832 | 查询缓存的空闲内存总数
| Qcache_hits | 0 |
| Qcache_inserts | 0 | 被加入到缓存中的查询数目
| Qcache_lowmem_prunes | 0 | 因为缺少内存而被从缓存中删除的查询数目
| Qcache_not_cached | 170 |
| Qcache_queries_in_cache | 0 | 在缓存中已注册的查询数目
| Qcache_total_blocks | 1 | 查询缓存中的块的总数目
+-------------------------+---------+
8 rows in set (0.00 sec)
可以通过set命令设置上面的缓存参数开启MySQL查询缓存功能,也可以找到MySQL的配置文件
(windows是my.ini,linux是my.cnf),修改query_cache_type参数为1就可以了,然后重启MySQL
Server就可以使用了,如下:
query_cache_type=1
query_cache_size=10
修改完成,重启MySQL Server,查询缓存生效。
重启mysql
su
service mysql restart