首页 > 数据库技术 > 详细

性能优化之MySQL优化

时间:2019-05-06 14:32:03      阅读:133      评论:0      收藏:0      [点我收藏+]

数据库优化目的

  避免出现页面访问错误

    • 由于数据库连接timeout产生页面5xx错误

    • 由于慢查询造成页面无法加载

    • 由于阻塞造成数据无法提交

  增加数据库的稳定性

    • 很多数据库的问题都是由于低效的查询引起的

  优化用户体验

    • 流畅页面的访问速度

    • 良好的网站功能体验

可以从几个方面进行数据库优化,以下将对4个方面逐一进行分析

技术分享图片

 

  • sql和索引,写出健壮的sql,索引不是越多越好

  • 数据表结构(存储引擎,字段大小,字段类型,索引,第三规范)

  • 系统配置(打开文件系统次数,文件安全性)

  • 硬件,选择最适合数据库的cpu,更快的IO,更大的内存,cpu不是越多越好,IO并不能减少锁的机制, 也就是不能减少阻塞,所以说硬件的优化成本最高,效果最差

1-1 MySQL慢查日志的开启方式和存储格式

  如何发现有问题的SQL?

    使用MySQL慢查日志对有效问题的SQL进行监控

    • show variables like ‘%slow_query_log%‘ 

      可查出两条: slow_query_log ——查看是否开启慢查日志  ON开启  OFF关闭

             slow_query_log_file——日志存储位置

    • set global slow_query_log = on    开启慢查日志

    • show variables like ‘long_query_time‘  什么样的SQL才会被记录到慢日志中由long_query_time控制,默认情况下为10秒,可以使用命令修改,也可以在my.cnf参数里面修改。关于运  行时间正好等于long_query_time的情况,并不会被记录下来。也就是说,在mysql源码里是判断大于long_query_time,而非大于等于。如果我修改了变量long_query_time,但是查询变量long_query_time的值还是10,难道没有修改到呢?注意:使用命令 set global long_query_time=4修改后,需要重新连接或新开一个会话才能看到修改值。你用show variables like ‘long_query_time‘查看是当前会话的变量值,你也可以不用重新连接会话,而是用show global variables like ‘long_query_time‘

    • set global log_queries_not_using_indexes = on  设置没有索引的记录到慢查询日志中

#使用set global slow_query_log=1开启了慢查询日志只对当前数据库生效,MySQL重启后则会失效。如果要永久生效,就必须修改配置文件my.cnf(其它系统变量也是如此)

性能优化之MySQL优化

原文:https://www.cnblogs.com/cuijiade/p/10819332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!