优化服务器设置

1. MySQL有大量可以修改的参数--但不应该随便去修改。通常只需要把基本的项配置正确(大部分情况下只有很少一些参数时真正重要的),应将更多时间花在schema的优化、索引,以及查询设计上。

在正确配置了MySQL的基本配置项之后,再花力气去修改其他配置项的收益通常就比较小。

从另一方面来说,没用的配置导致潜在风险的可能更大。

2. 那么什么是该做的呢?

确保基本配置是正确的。例如InnoDB的Buffer Pool和日志文件缓存大小,如果想防止出问题(提醒一下,这样做通常不能提升性能--它们只能避免问题),就设置一个比较安全的值,剩下的配置就不用管了。

3. 另一个节省时间和避免麻烦的好办法是使用默认配置,除非是明确地知道默认值会有问题。很多人都是在默认配置下运行的,这种情况非常普遍。这使得默认配置经过最多的实际测试的。对配置项做一些不必要

的修改可能会遇到一些意料之外的bug.

4. MySQL配置的工作原理:

    1). 配置文件位置一般在/etc/my.cnf或者/etc/mysql/my.cnf

    2). 任何打算长期使用的配置都应该写到全局配置文件中。

4.3 入门

1). 设置变量时请小心,并不是值越大越好,而且如果设置的值太高,可能更容易导致问题:可能会由于内存不足导致服务器内存交换,或者超过地址空间。

   2). 应该始终通过监控来确认生产环境中变量的修改,是提高还是降低了服务器的整体性能。

 3). 如果你经常做笔记,在配置文件中写好注释,可能会节省自己(和同时)大量的工作。一个更好的主意是把配置文件置于版本控制之下。

4). 在开始改变配置之前,应该优化查询和schema,至少先做明显要做的事情,例如添加索引。如果先深入调整配置,然后修改了查询语句和schema,也许需要回头再次评估配置。

4.4 通过基准测试迭代优化

1). 一般情况下不建议做大量的基准测试,收益太少,并且可能会掩盖其他问题。而把时间花在检查备份、监控执行计划的变动之类的事情上,可能会更有意义。

2). 如果必须这样做,我们建议在开始配置服务器之前,开发一份定制的基准测试包。

 3). 最好的办法是一次改变一个或者两个变量,每次一点点,每次更改后运行基准测试,确保运行足够长的时间来确认性能是否稳定。

5. 什么不该做:

1). 不要根据一些"比率" 来调优。例如:如果命中率低,则应该增加缓存大小。这在很多情况下都是错误的。

2). 不要使用调优脚本。有几个这样的可以在互联网上找到的脚本非常受欢迎,最好忽略它们。

3). 在互联网上搜索如何配置并不总是一个好主意。在博客、论坛等地方都可以能知道到很多不好的建议。

    4). 不要相信很溜的内存消耗公式--是的,就是MySQL崩溃时自身输出的那个内存消耗公式。这个公式已经很老了,他可能并不靠谱。

6. 创建配置文件:

9. InnoDB在大多数情况下如果如果要运行得很好,配置大小合适的缓冲池(Buffer Pool)和日志文件(Log File)是必须的,默认值都太小了。其他的所有InnoDB设置都是可选的。

1). 设置缓冲池的大小。

a. 从服务器内存总量开始。

b. 减去操作系统的内存占用,如果MySQL不是唯一运行在这个服务器上的程序,还要扣掉其他程序可能占用的内存。

c. 减去一些MySQL自身需要的内存,例如为每个查询操作分配的一些缓冲。

d. 减去足够让操作系统缓存InnoDB日志文件的内存,至少是足够缓存最近经常访问的部分(此建议适用于标准的MySQL,Percona Server可以配置日志文件用O_DIRECT方式打开,绕过操作系统缓存)。,留一些

内存至少可以缓存二进制日志的最后一部分也是很好的选择,尤其是如果复制产生了延迟,备库就可能读取主库上旧的二进制日志文件,给主库的内存造成一些压力。

e. 减去其他配置的MySQL缓冲和缓存需要的内存,例如MyISAM的键缓存(key Cache),或者查询缓存(Query Cache)。

f. 除以105%,这差不多接近InnoDB管理缓冲池增加的自身管理开销。

g. 把结果四舍五入,向下去一个合理的数值。向下舍入不会太影响结果,但是如果分配太多可能就会是件很糟糕的事情。

我们建议,当配置内存缓存区的时候,宁可谨慎,而不是把它们配置的过大。如果把缓冲池配置的比它可以设的值少了20%,很可能只会对性能产生小的影响,

         也许就只影响几个百分点。如果设置的大了20%,则可能会造成更严重的问题:内存交换、磁盘抖动、甚至内存耗尽和硬件死机。

2). 设置日志文件大小:

a. 整体的日志文件大小受控于innodb_log_file_size和inoodb_log_files_in_group两个参数,这对写性能非常重要。日志文件的总大小是每个文件的大小之和。默认情况下,只有两个5M的文件,总共10M。对于

高性能工作来说这太小了。至少需要几百M,或者甚至上GB的日志文件。

b. InnoDB使用多个文件作为一组循环日志。通常不需要修改默认的日志数量,只修改每个日志文件的大小即可。要修改日志文件大小,需要完全关闭MySQL,将旧的日志文件移到其他地方保存,重新配置参数,然后重启。

一定要保证MySQL干净地关闭了,或者还有日志文件可以保证应用到数据文件的事务记录,否则数据库就无法恢复了!当重启服务器的时候,查看MySQL的错误日志。在重启成功后,才可以删除旧的日志文件。

c. 通常不需要把日志缓存区设置的非常大。推荐范围是1MB-8MB,一般来说足够了,除非要写很多相当大的BLOG记录。

    d. 作为一个经验法则,日志文件的全部大小,应该足够容纳服务器一个小时的活动内容。 

mysql笔记05 优化服务器设置的更多相关文章

  1. 第六章 优化服务器设置--高性能MySQL 施瓦茨--读书笔记

    MySql的默认配置不适用于使用大量资源,因为其通用性很高. 不要期望改变配置文件会带来巨大的性能提升.提升大小取决于工作负载,通常可以通过选择适当的配置参数得到两到三倍的性能提升.在这时候,性能提升 ...

  2. mysql笔记一——安装和设置root密码

    1. mysql 5.6安装包下载. MySQL安装文件分为两种,一种是msi格式的,一种是zip格式的.如果是msi格式的可以直接点击安装,按照它给出的安装提示进行安装(相信大家的英文可以看懂英文提 ...

  3. django+nginx+xshell简易日志查询,接上<关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思>

    纠正一下之前在<关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思>中说到的PHP+MySQL太慢,这里只是说我技术不好,没 ...

  4. 关于《rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>》的反思

    关于<rsyslog+mysql+loganalyzer搭建日志服务器<个人笔记>>的反思--链接--http://www.cnblogs.com/drgcaosheng/p/ ...

  5. Linux下jvm、tomcat、mysql、log4j优化配置笔记

    小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了.... 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存 ...

  6. Mysql线程池优化笔记

    Mysql线程池优化我是总结了一个站长的3篇文章了,这里我整理到一起来本文章就分为三个优化段了,下面一起来看看.     Mysql线程池系列一(Thread pool FAQ) 首先介绍什么是mys ...

  7. Linux下jvm、tomcat、mysql、log4j优化配置笔记[转]

    小菜一直对操作系统心存畏惧,以前也很少接触,这次创业购买了Linux云主机,由于木有人帮忙,只能自己动手优化服务器了.... 小菜的云主机配置大致为:centeos6(32位),4核心cpu,4G内存 ...

  8. MySQL性能优化最佳实践 - 05 MySQL核心参数优化

    back_log参数的作用 指定MySQL可能的TCP/IP的连接数量(一个TCP/IP连接占256k),默认是50.当MySQL主线程在很短的时间内得到非常多的连接请求,该参数就起作用,之后主线程花 ...

  9. 高性能MySQL笔记 第6章 查询性能优化

    6.1 为什么查询速度会慢   查询的生命周期大致可按照顺序来看:从客户端,到服务器,然后在服务器上进行解析,生成执行计划,执行,并返回结果给客户端.其中“执行”可以认为是整个生命周期中最重要的阶段. ...

随机推荐

  1. gulp教程

    1. http://www.tuicool.com/articles/FJVNZf 2.http://www.ydcss.com/archives/18 3.手动创建package.json: 如:c ...

  2. cname和CDN

    http://blog.csdn.net/crazw/article/details/8986504 先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baidu.c ...

  3. Windows Server 2008标准证书使用记录

    Windows Server 2008标准证书使用记录   近期准备将单位的服务器全部升级到Windows Server 2008,但有一些“遗留”问题需要解决: (1)现在单位还有一台Windows ...

  4. Infinity loop in cursor iteration

    原始代码如下: begin DECLARE @SQL_STMT NVARCHAR(300), @V_CLIENT_ID INT, @V_PGNAME VARCHAR(1000), @V_LOGID I ...

  5. (转)linux运行tomcat时JRE_HOME显示不对怎么办?

    PS:以前也没出现这些问题,重装了一下系统,感觉什么都让我撞上了.Using CATALINA_BASE:   /usr/share/tomcat7Using CATALINA_HOME:   /us ...

  6. 百度SEO建议

    SEO(Search Engine Optimization)汉译为搜索引擎优化.seo优化是专门利用搜索引擎的搜索规则来提高目前网站在有关搜索引擎内的自然排名的方式.SEO的目的理解是为网站提供生态 ...

  7. 通过sqlserver日志恢复误删除的数据

     如果你已经急的焦头烂额,看到这篇文章的时候,请你换个坐姿,深呼吸几次,静下心来将这篇文章读完,也许你的问题迎刃而解. 我遇到的情况是这样的,网站被植入木马,盗取了我的web.config文件,web ...

  8. android AlarmManager 详解

    在开发互联网应用时候,我们常常要使用心跳来保证客户端与服务器的连接.怎么完成心跳很关键,在说道客户端心跳功能时,如果使用Timer或者专门开起一个线程来做心跳的工作,会浪费CPU工作时间,而且也会更多 ...

  9. Redis 安全性设置

    redis安装好后,默认情况下登陆客户端和使用命令操作时不需要密码的.某些情况下,为了安全起见,我们可以设置在客户端连接后进行任何操作之前都要进行密码验证. 我这边是安装的window系统,修改red ...

  10. C#资源文件和C#枚举如何结合使用?

    最近悟出来一个道理,在这儿分享给大家:学历代表你的过去,能力代表你的现在,学习代表你的将来.我们都知道计算机技术发展日新月异,速度惊人的快,你我稍不留神,就会被慢慢淘汰!因此:每日不间断的学习是避免被 ...