如今,社会讲求的就是快速,什么事都要有效率,当然服务器也是要有效率。开发人员不断地开发和部署使用LAMP(?、Apache、MySQL 和 PHP/Perl)架构的应用程序。但是,服务器管理员常常对应用程序本身没有什么控制能力,因为应用程序是别人编写的。本文重点讨论为实现最高效率而对数据库层进行的调优。

有3种方法可以加快MySQL服务器的运行速度,效率从低到高依次为:

第一种方法时替换有问题的硬件。对MySQL进程的设置进行调优。对查询进行优化。

替换有问题的硬件通常是我们的第一考虑,主要原因是数据库会占用大量资源。不过这种解决方案也就仅限于此了。实际上,您通常可以让中央处理器(CPU)或磁盘速度加倍,也可以让内存增大4到8倍。

第二种方法是对MySQL服务器(也称为mysqld)进行调优。

对这个进程进行调优意味着适当地分配内存,并让 mysqld 了解将会承受何种类型的负载。加快磁盘运行速度不如减少所需的磁盘访问次数。类似地,确保 MySQL 进程正确操作就意味着它花费在服务查询上的时间要多于花费在处理后台任务(如处理临时磁盘表或打开和关闭文件)上的时间。对mysqld进行调优是本文的重点。

最好的方法是确保查询已经进行了优化。这意味着对表应用了适当的索引,查询是按照可以充分利用MySQL功能的方式来编写的。尽管本文并没有包含查询调优方面的内容(很多著作中已经针对这个主题进行了探讨),不过它会配置mysqld来报告可能需要进行调优的查询。

虽然已经为这些任务指派了次序,但是仍然要注意硬件和mysqld的设置以利于适当地调优查询。机器速度慢也就罢了,我曾经见过速度很快的机器在运行设计良好的查询时由于负载过重而失败,因为mysqld被大量繁忙的工作所占用而不能服务查询。

第三种方法是记录慢速查询

在一个SQL服务器中,数据表都是保存在磁盘上的。索引为服务器提供了一种在表中查找特定数据行的方法,而不用搜索整个表。当必须要搜索整个表时,就称为表扫描。通常来说,您可能只希望获得表中数据的一个子集,因此全表扫描会浪费大量的磁盘I/O,因此也就会浪费大量时间。当必须对数据进行连接时,这个问题就更加复杂了,因为必须要对连接两端的多行数据进行比较。

当然,表扫描并不总是会带来问题;有时读取整个表反而会比从中挑选出一部分数据更加有效(服务器进程中查询规划器用来作出这些决定)。如果索引的使 用效率很低,或者根本就不能使用索引,则会减慢查询速度,而且随着服务器上的负载和表大小的增加,这个问题会变得更加显著。执行时间超过给定时间范围的查询就称为慢速查询。

您可以配置 mysqld 将这些慢速查询记录到适当命名的慢速查询日志中。管理员然后会查看这个日志来帮助他们确定应用程序中有哪些部分需要进一步调查。清单1给出了要启用慢速查询日志需要在my.cnf中所做的配置。

清单1.启用MySQL慢速查询日志

以下为引用的内容:

[mysqld]; enable the slow querylog,default10secondslog-slow-queries;logqueries taking longer than5secondslong_query_time=5;logqueries that don’tuseindexes evenifthey take less than long_query_time;

MySQL4.1andnewer onlylog-queries-not-using-indexes

这三个设置一起使用,可以记录执行时间超过5秒和没有使用索引的查询。请注意有关 log-queries-not-using-indexes 的警告:您必须使用 MySQL 4.1 或更高版本。慢速查询日志都保存在 MySQL 数据目录中,名为 hostname-slow.log。如果希望使用一个不同的名字或路径,可以在my.cnf中使用log-slow-queries = /new/path/to/file 实现此目的。

阅读慢速查询日志最好是通过mysqldumpslow命令进行。指定日志文件的路径,就可以看到一个慢速查询的排序后的列表,并且还显示了它们在日志文件中出现的次数。一个非常有用的特性是mysqldumpslow在比较结果之前,会删除任何用户指定的数据,因此对同一个查询的不同调用被计为一次;这可以帮助找出需要工作量最多的查询。

上文中介绍的方法技巧,希望大家能够灵活掌握,灵活运用,不要死板硬套。

mysql 服务器优化_如何对MySQL服务器进行调优相关推荐

  1. mysql sql优化_浅谈mysql中sql优化

    说到sql优化,一般有几个步骤呢,在网上看到了一篇很不错的帖子.在这分享一下吧,也是自己学习的一个过程. 一.查找慢查询 1.1.查看SQL执行频率 SHOW STATUS LIKE 'Com_%'; ...

  2. mysql 性能拐点_性能压测及分析调优实践

    [关键导读] 文中结合一次重保活动的性能压测需求,详解了整体的性能测试策略及性能分析思路,并在实施过程中有效利用了NPT性能测试平台完成了压测场景设计.执行.业务指标监控.性能指标分析,结合监控找出了 ...

  3. mysql数据库优化课程---16、mysql慢查询和优化表空间

    mysql数据库优化课程---16.mysql慢查询和优化表空间 一.总结 一句话总结: a.慢查询的话找到存储慢查询的那个日志文件 b.优化表空间的话可以用optimize table sales; ...

  4. mysql数据库优化课程---15、mysql优化步骤(mysql中最常用最立竿见影的优化是什么)...

    mysql数据库优化课程---15.mysql优化步骤(mysql中最常用最立竿见影的优化是什么) 一.总结 一句话总结:索引优化最立竿见影 索引优化:不然有多少行要扫描多少次,1亿行大概是5到10分 ...

  5. mysql数据库优化课程---13、mysql基础操作

    mysql数据库优化课程---13.mysql基础操作 一.总结 一句话总结:mysql复制表,索引,视图 1.mysql如何复制表? like select * 1.复制表结构 create tab ...

  6. mysql数据库优化课程---6、mysql结构化查询语言有哪些

    mysql数据库优化课程---6.mysql结构化查询语言有哪些 一.总结 一句话总结:主要分为四类 1.DCL 数据控制语言 1)grant 2)commit 3)rollback 2.DDL 数据 ...

  7. mysql数据库优化课程---12、mysql嵌套和链接查询(查询user表中存在的所有班级的信息?)...

    mysql数据库优化课程---12.mysql嵌套和链接查询(查询user表中存在的所有班级的信息?) 一.总结 一句话总结: in:distinct:select * from class wher ...

  8. mysql 什么树_搞懂MySQL InnoDB B+树索引

    一.InnoDB索引 InnoDB支持以下几种索引: B+树索引 全文索引 哈希索引 本文将着重介绍B+树索引.其他两个全文索引和哈希索引只是做简单介绍一笔带过. 哈希索引是自适应的,也就是说这个不能 ...

  9. 阿里云查看mysql是否安装_阿里云CentOS服务器mysql安装

    1.下载mysql源安装包(cd /usr/local/mysql) # wget http://dev.mysql.com/get/mysql57-community-release-el7-8.n ...

最新文章

  1. iOS 最新发布App Store流程
  2. 数据库范式1NF 2NF 3NF BCNF
  3. Javascript 多线程?
  4. android4.0.3 修改启动动画和开机声音
  5. SOLID 设计原则 In C# 代码实现
  6. 如何为物联网选择微控制器?
  7. python语言实现rsa公钥密码算法_python 实现 rsa 算法加解密密码
  8. php提交字符串中有加号(+)时会后台得到空格的问题
  9. selenium IDE下载及使用
  10. cad插件_CAD插件自动标注安装教程
  11. VC++调用大漠插件
  12. 新能源专属车险可在线投保 80%车主基准保费下降
  13. 云通信的风险隐患和解决之道——SUBMAIL
  14. 各种排序算法耗时比较
  15. Python实例6: 贺卡制作
  16. 读书百客:《相思》鉴赏
  17. 无效的列类型: 1111
  18. 如何实现游戏中的段位排行榜?
  19. C# 读取Excel转换为DataTable的几种常见方式及实现步骤
  20. delphi5开发人员指南_建立开发人员职位的黄金指南

热门文章

  1. oracle asm 日志,Oracle+RAC+ASM数据库ora-00257日志归档器错误解决方法
  2. python里import time_python模块---time和timedate
  3. js自动触发onclick_每日一题JS中最基本的this情况分析
  4. pandas describe函数_SQL和Pandas同时掉到河里,你先救谁?
  5. java注销登录_java实现注销登录
  6. axios拦截器_浅谈vue-resource和vue-axios的区别
  7. vim之格式化代码功能——gg=G
  8. Clustering Coefficient
  9. dropout的正则化理解
  10. java需要转go吗,【Java转Go】弄清GOPATH