没有合适的资源?快使用搜索试试~ 我知道了~
LAMP系统性能调优MySQL数据库服务器优化.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 14 浏览量
2022-07-14
19:44:42
上传
评论
收藏 86KB PDF 举报
温馨提示
试读
11页
LAMP系统性能调优MySQL数据库服务器优化.pdf
资源推荐
资源详情
资源评论
如今,开发人员不断地开发和部署使用 LAMP(Linux ?、Apache、MySQL 和 PHP/Perl )架构
的应用程序。 但是, 服务器管理员常常对应用程序本身没有什么控制能力, 因为应用程序是
别人编写的。 这份 共三部分的系列文章 将讨论许多服务器配置问题, 这些配置会影响应用
程序的性能。 本文是本系列文章的第三部分, 也是最后一部分, 将重点讨论为实现最高效率
而对数据库层进行的调优。
关于 MySQL 调优
有 3 种方法可以加快 MySQL 服务器的运行速度,效率从低到高依次为:
1. 替换有问题的硬件。
2. 对 MySQL 进程的设置进行调优。
3. 对查询进行优化。
替换有问题的硬件通常是我们的第一考虑, 主要原因是数据库会占用大量资源。 不过这种解
决方案也就仅限于此了。实际上,您通常可以让中央处理器( CPU)或磁盘速度加倍,也可
以让内存增大 4 到 8 倍。
第二种方法是对 MySQL 服务器 (也称为 mysqld )进行调优。 对这个进程进行调优意味着适
当地分配内存, 并让 mysqld 了解将会承受何种类型的负载。 加快磁盘运行速度不如减少所
需的磁盘访问次数。类似地,确保 MySQL 进程正确操作就意味着它花费在服务查询上的时
间要多于花费在处理后台任务 (如处理临时磁盘表或打开和关闭文件) 上的时间。 对 mysqld
进行调优是本文的重点。
最好的方法是确保查询已经进行了优化。 这意味着对表应用了适当的索引, 查询是按照可以
充分利用 MySQL 功能的方式来编写的。尽管本文并没有包含查询调优方面的内容(很多著
作中已经针对这个主题进行了探讨) ,不过它会配置 mysqld 来报告可能需要进行调优的查
询。
虽然已经为这些任务指派了次序, 但是仍然要注意硬件和 mysqld 的设置以利于适当地调优
查询。 机器速度慢也就罢了, 我曾经见过速度很快的机器在运行设计良好的查询时由于负载
过重而失败,因为 mysqld 被大量繁忙的工作所占用而不能服务查询。
记录慢速查询
在一个 SQL 服务器中,数据表都是保存在磁盘上的。索引为服务器提供了一种在表中查找
特定数据行的方法, 而不用搜索整个表。 当必须要搜索整个表时, 就称为表扫描。 通常来说,
您可能只希望获得表中数据的一个子集, 因此全表扫描会浪费大量的磁盘 I/O ,因此也就会
浪费大量时间。 当必须对数据进行连接时, 这个问题就更加复杂了, 因为必须要对连接两端
的多行数据进行比较。
当然, 表扫描并不总是会带来问题; 有时读取整个表反而会比从中挑选出一部分数据更加有
效(服务器进程中查询规划器用来作出这些决定) 。如果索引的使用效率很低, 或者根本就
不能使用索引, 则会减慢查询速度, 而且随着服务器上的负载和表大小的增加, 这个问题会
变得更加显著。执行时间超过给定时间范围的查询就称为慢速查询。
您可以配置 mysqld 将这些慢速查询记录到适当命名的慢速查询日志中。 管理员然后会查看
这个日志来帮助他们确定应用程序中有哪些部分需要进一步调查。清单 1 给出了要启用慢
速查询日志需要在 my.cnf 中所做的配置。
清单 1. 启用 MySQL 慢速查询日志
1. [mysqld]
2. ; enable the slow query log, default 10 seconds
3. log-slow-queries
4. ; log queries taking longer than 5 seconds
5. long_query_time = 5
6. ; log queries that don't use indexes even if they take less than long_query_time
7. ; MySQL 4.1 and newer only
8. log-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 在比较结果之前,会删除任何用户指定的数据,因此对同一个
查询的不同调用被计为一次;这可以帮助找出需要工作量最多的查询。
对查询进行缓存
很多 LAMP 应用程序都严重依赖于数据库,但却会反复执行相同的查询。每次执行查询时,
数据库都必须要执行相同的工作 —— 对查询进行分析, 确定如何执行查询, 从磁盘中加载
信息,然后将结果返回给客户机。 MySQL 有一个特性称为查询缓存,它将(后面会用到的)
查询结果保存在内存中。 在很多情况下, 这会极大地提高性能。 不过, 问题是查询缓存在默
认情况下是禁用的。
将 query_cache_size = 32M 添加到 /etc/my.conf 中可以启用 32MB 的查询缓存。
监视查询缓存
在启用查询缓存之后, 重要的是要理解它是否得到了有效的使用。 MySQL 有几个可以查看的
变量,可以用来了解缓存中的情况。清单 2 给出了缓存的状态。
清单 2. 显示查询缓存的统计信息
1. mysql> SHOW STATUS LIKE 'qcache%';
2. +-------------------------+------------+
3. | Variable_name | Value |
4. +-------------------------+------------+
5. | Qcache_free_blocks | 5216 |
6. | Qcache_free_memory | 14640664 |
7. | Qcache_hits | 2581646882 |
8. | Qcache_inserts | 360210964 |
9. | Qcache_lowmem_prunes | 281680433 |
10. | Qcache_not_cached | 79740667 |
11. | Qcache_queries_in_cache | 16927 |
12. | Qcache_total_blocks | 47042 |
13. +-------------------------+------------+
14. 8 rows in set (0.00 sec)
剩余10页未读,继续阅读
资源评论
ll17770603473
- 粉丝: 0
- 资源: 6万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- mnist手写数据集本地下载链接
- 52193906181644561181711717834527.jpg
- 图片缓冲技术(android)源码
- 花数据集+数据集汇总+标签txt+数据集汇总代码+迁移学习最佳模型+全部迭代最佳模型
- 20240329224412.zip
- switch.docx `switch`语句是C++中的一种流程控制语句,通常用于根据表达式的值选择执行不同的代码块 下面是`
- python绘制直方图-02-进程之间不共享全局变量.ev4.rar
- python绘制直方图-01-第三天知识点回顾.ev4.rar
- 01背包问题动态规划.docx
- 表达式求值.docx表达式求值涉及许多不同的情况和方法,具体取决于表达式的形式和要求的精度 下面是一个简单的例子
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功