【IT168文档】Mysql参数优化(2)参数分析

【IT168技术文档】Mysql参数优化对于新手来说是一件很难理解的事情。其实这个参数优化是一件很复杂的事情。对于不同的网站,其在线量、访问量、发帖数、网络状况,也与机器的硬件配置有关。无法一次性完成优化。需要不断的观察和调试才能获得最好的效果。

先说一下我的服务器的硬件和论坛的情况。

CPU:2 个四核 Intel Xeon 2.00GHz

内存:4GB DDR

硬盘:SCSI 146GB

论坛:在线会员一般在5000左右——最高记录13264.

下面,我们根据上述硬件配置结合已经优化过的af进行分析说明:根据论坛和程序员程序的变化,有些参数可能需要重新调整。

[]

端口=3306

= 1

= /tmp/mysql.sock

skip- # 避免 MySQL 的外部锁定,减少出错的机会,增强稳定性。跳过名称-

为外部连接禁用 MySQL 的 DNS 解析。使用此选项可以消除 MySQL 的 DNS 解析时间。不过需要注意的是,如果开启了这个选项,所有远程主机连接授权都必须使用IP地址方式,否则MySQL将无法正常处理连接请求!

= 500

MySQL 需要拥有的连接数。这适用于主 MySQL 线程在短时间内收到大量连接请求,然后主线程花费一些时间(尽管时间很短)检查连接并启动新线程。

该值表示在 MySQL 暂时停止响应新请求之前,可以在短时间内将多少个请求存储在堆栈上。仅当您期望在短时间内有很多连接时才需要增加它,换句话说,就是传入 TCP/IP 连接的侦听队列的大小。您的操作系统对此队列大小有自己的限制。尝试将限制设置为高于您的操作系统将是无效的。当你观察你的宿主进程列表并发现大量 | 增加值 用户 | xxx.xxx.xxx.xxx | 空 | | 空 | 登录 | 要连接的 NULL 进程。默认值为 50,我将其更改为 500。

= 384M

# 指定用于索引的缓冲区大小,尽可能增加它以更好地处理索引(对于所有读取和多次重写)。如果你把它设置得太大,系统将开始换页并变得非常慢。对于内存在 4GB 左右的服务器,这个参数可以设置为 384M 或 512M。通过检查状态值和,可以知道设置是否合理。比例/应该尽量低mysql配置内存,至少1:100,最好是1:1000(以上状态值可以使用SHOW LIKE ‘%’得到)。注意:如果这个参数值设置过大,会降低服务器的整体效率!

= 32M

增加此变量的值是安全的,因为仅在需要时才分配额外的内存。例如,仅当您发出长查询或必须返回大结果行时才分配更多内存。该变量的小默认值是一种预防措施,用于捕获客户端和服务器之间的不良数据包,并确保不会因意外使用大数据包而导致内存溢出。

= 512

指定表缓存的大小。每当 MySQL 访问表时,如果表缓冲区中仍有空间,则将表打开并放入其中,这样可以更快地访问表内容。通过检查峰值时间和总和的状态值,可以决定是否需要增加值。如果你发现它等于,并且它一直在增长,那么你需要增加值(上面的状态值可以使用 SHOW LIKE ‘Open%’ 获得)。请注意,您不能盲目地将其设置为非常大的值。如果设置得太高,可能会导致文件描述符不足,导致性能不稳定或连接失败。

= 4M

查询排序时可以使用的缓冲区大小。注意:该参数对应的分配内存是每个连接独占的!如果有 100 个连接,实际分配的排序缓冲区的总大小为 100 × 4 = 400MB。所以建议4GB左右内存的服务器设置4-8M。

= 4M

读取查询操作可以使用的缓冲区大小。同理,这个参数对应的分配内存也是每个连接独占的!

= 8M

联合查询操作可以使用的缓冲区大小,以及该参数对应的分配内存也是每个连接独占的!

大小 = 64M

表更改时重新排序所需的缓冲

= 64M

指定 MySQL 查询缓冲区的大小。这可以通过在 MySQL 控制台中执行以下命令来观察:

# > 显示喜欢 ‘%%’; # > 显示喜欢 ‘%’; # 如果该值很大,说明经常有缓冲不足;

如果该值很大,则表明查询缓冲区的使用频率很高。如果值小,会影响效率,可以考虑不使用查询缓冲区;如果该值很大,则表明缓冲区中有很多片段。

= 64

可以重复使用的线程数保存在 . 如果有,则从缓存中取出新线程,断开连接时如果有空间,则将客户端的线程放入缓存中。如果有很多新线程,则可以使用此变量值来提高性能。通过变量与状态的对比,可以看出这个变量的作用

= 256M

= 1000

指定 MySQL 允许的最大连接进程数。如果访问论坛时经常出现 Too Many 错误信息,则需要增加该参数的值。

=

对于同一台主机,如果超过该参数的中断错误连接数,该主机将被禁止连接。要解除对主机的阻塞,请执行:FLUSH HOST;。

= 10

指定请求的最长连接时间。对于内存在 4GB 左右的服务器,可以设置为 5-10。

= 8

该参数的值是服务器逻辑CPU个数×2。本例中服务器有2个物理CPU,每个物理CPU都支持HT超线程,所以实际值为4×2=8

跳过-

开启这个选项可以完全关闭 MySQL 的 TCP/IP 连接方式。如果WEB服务器通过远程连接访问MySQL数据库服务器,请不要开启该选项!否则无法正常连接!

= 10

日志慢-=

日志——不使用——

开启慢查询日志(slow query log)

慢查询日志对于跟踪有问题的查询很有用。它记录所有已查找的查询,如果需要,记录不使用索引的记录。下面是一个慢查询日志的例子:

开启慢查询日志,需要设置参数log–not-using-。

指定日志文件。如果没有提供文件名,MySQL 将自己生成默认文件名。指定慢查询阈值,默认为 10 秒。log–not-using- 是在4.1.0 之后引入的参数,用于指示记录不使用索引的查询。设置=10

另外,使用show命令查看mysql状态相关的值及其含义:

使用显示命令

含义如下:

客户端非法断开连接的次数

连接mysql失败

xxx 命令执行次数,有很多

mysql的连接数

文件在磁盘上创建的临时表

在内存中创建的临时表

临时文件数

从缓存中读取一个键块

从磁盘读取关键块的次数

同时使用的连接数

打开表

打开文件

打开表

提交的查询

如果这个值很大,f中的值应该增加

服务器工作的秒数

提高性能的建议:

1.如果太大,f中应该大一些

2.如果太大,你应该把f变大。您可以使用/计算缓存失败率

3.如果太大,你写的SQL语句中很多查询都是扫描整个表,没有起到索引key的作用

4.如果太大mysql配置内存,增加f中的值。您可以使用/计算缓存命中率

5.如果les太大,增加f中的值,将基于磁盘的临时表替换为基于内存的临时表

文章来源:https://tech.it168.com/a2009/0429/274/000000274277.shtml

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享