MySQL优化

1.书写合适sql语句

  用explain分析有没有用到索引,如果没有用到需修改sql语句。

  慢查询日志

  MySQL可以设置慢查询日志,当SQL执行的时间超过我们设定的时间,这些SQL就会被记录在慢查询日志当中,我们通过查看日志,用explain分析这些SQL的执行计划,来判定为什么效率低下,是没有使用到索引?还是索引本身创建的有问题?或者是索引使用到了,但是由于表的数据量太大,花费的时间本来就很长,那么此时我们可以把表分成n个小表,比如订单表按年份分成多个小表等。

配置文件中:
  打开慢查询日志:slow-query-log=1 (0为关闭)
  慢查询日志记录了包含所有执行时间超过参数 long_query_ time(单位:秒)所设置值的 SQL语句的日志。

  set long_query_time = 0.01; (单位为秒)
  此条语句设置了超过1秒的SQL都会被记录在慢查询日志当中!

  慢查询日志,默认名称是host_name-slow.log,存放在MySQL的数据路径下,内容格式显示大致如下:
  Query_time: 0.012000 Lock_time: 0.000000 Rows_sent: 0
  Rows_examined: 139
  use tuluneducation;
  SET timestamp=1534527397;

  select id,author from subject where content like ‘%linux%’ and title like ‘%c++ linux%’;
  通过查询慢查询日志,发现项目运行过程中,上面这条SQL语句的执行时间超过了设定的慢查询时间,那么接下来就需要用explain分析一下该SQL的执行计划了,根据具体情况找出SQL和索引该怎么去优化。

  log_queries_not_using_indexes参数设置为ON,可以捕获到所有未使用索引的SQL语句。

2.索引和数据缓存

  当explain发现sql语句用到索引时,如果是使用索引的过程比较耗时,那么就要可以修改索引缓存。
MyIsam引擎下: key_buffer_size=8M 索引缓存
InnoDB引擎下:innodb_buffer_pool_size=8M 索引和数据缓存

3.增加连接池

  如果是因为频繁的创建销毁连接耗时(用户量大),可以增加连接池。
  作用:重复使用连接(对象)。

4.增加缓存池(redis数据库缓存级数据库)

  当数据查询修改次数过于频繁时,可以增加缓存池,减少文件IO的次数,因为文件IO特别耗时。

5.修改MySQL的查询缓存

  当对数据查询修改次数过于频繁时,可以修改查询缓存。
  开启缓存:query_cache_type=1
  改变缓存大小:query_cache_size=10 ,改变配置文件中的数据,记得重启服务。

6.MySQL线程缓存

  MySQL在C / S架构下运行(Client/Server)。
  线程池 : thread_cache_size=10
  MySQL如果不在我们自己的服务器上的时候,我们要进行远程访问。既然要远程访问就离不开网络模型。MySQL所使用的是 epoll+ 线程池的模型。这个线程中存放的是能够处理具体任务的线程,当有SQL请求到达MySQL Server的时候,在线程池中取一个线程来执行该SQL请求就可以了,执行完成后,不销毁线程,而是把线程再归还到线程池中,等待下一次任务的处理(当然MySQL会根据用户量,自动加大线程池的数量的)。

7.调整MySQL最大连接量

  当我们发现由于最大连接数量过低,导致有大量用户无法建立连接时,可以调整最大连接量。
show variables like ‘%connect%’;
max_connections=151(默认)

8.连接超时时间

  如果设置连接超时时间过低,用户建立连接速度过慢。就会出现有一些用户无法和mysql正常建立连接。
show global variables like ‘%timeout%’;
在配置文件中添加配置:wait_timeout=600

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值