首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL性能调优

MySQL性能调优
EN

Server Fault用户
提问于 2009-09-03 04:12:02
回答 6查看 1.3K关注 0票数 3

我正在寻找一个简单的列表的常见缺陷和优化调优的MySQL服务器,作为中型网站使用。

一般来说,我在这里寻找的建议类型是普通开发人员或管理员可以轻松实现的信息,这些信息将为他的站点的性能带来可衡量的好处。

为例

以下是我在阅读高性能MySQL时学到的一个技巧,我经常看到它的用途:

当使用MyISAM存储引擎(默认情况)时,服务器将在执行删除或更新操作时,或者在执行没有附加到表末尾的插入时锁定整个表(因为以前的删除会留下一个“漏洞”)。在操作完成之前,其他查询都不能使用该表。

因此,如果在任何频繁使用的表上使用"INSERT“以外的任何操作,则应该使用InnoDB或其他行级锁定引擎进行大量修改。

EN

回答 6

Server Fault用户

回答已采纳

发布于 2009-09-03 08:58:59

下面是我在MySQL优化中遇到的一些事情:

如果您看到您的数据库服务器(特别是MySQL进程)正在使用大部分CPU时间,这可能意味着您缺少索引或需要优化查询。

打开慢速查询日志,并继续执行这些慢速查询,以了解如何优化这些查询。在慢速查询中使用“解释”来找出它们为什么慢。MySQL文档中有几节介绍了如何解释这些结果。

使用memcached尽可能长时间地缓存任何查询的结果。这是非常快的,并且能够缓存许多内部MySQL查询缓存无法缓存的东西,但只能在您知道数据可以长期缓存或手动终止缓存的情况下使用。

在数据库系统上设置"munin“,开始收集有关系统利用率和数据库查询负载的信息。

确保您的系统有足够的RAM,您没有交换,并且希望您也足够少,如果任何光盘读取(使用vmstat或munin监控这一点)。这意味着数据是从MySQL或磁盘缓冲区缓存中提供的。

肖恩

票数 5
EN

Server Fault用户

发布于 2009-09-03 12:23:19

影响MySQL性能的一件事是磁盘上临时表的创建。

您可以运行这几分钟:

mysqladmin -u root -p ext -ri 30 | grep Created_tmp_disk

如果这个数字很高而且还在增长,您可以考虑将MySQL tmpdir放在一个基于RAM的文件系统(例如tmpfs)上。

在某种意义上,这可能是治疗症状而不是病因,但它可以提供一些快速缓解,当你考虑是否/如何治疗的原因。下面的链接提供了有关MySQL如何使用内部临时表的信息:

http://dev.mysql.com/doc/refman/5.0/en/internal-temporary-tables.html

干杯

票数 1
EN

Server Fault用户

发布于 2009-09-03 07:41:20

这并不完全符合主题,但MySQL的优化并不一定会导致网站的性能优化。你上面描述的只是数以百万计的案例中的一例。在你的网络应用程序中,这是一个经常发生的情况吗?MyIssam的这一特性是如何减缓您的网站的呢?(考虑到MyIssam比InnoDB快几十倍或一百倍)。你怎么发现这是你的案子?

基本上,在您实际分析应用程序并找到瓶颈之前,您的问题是没有意义的。否则,一些常见的建议会相互矛盾。

此外,性能优化通常都是关于权衡。您将为另一个优化而牺牲一些优化。

下面是一篇很好的入门文章:http://www.flounder.com/optimization.htm

这不是关于MySQL,也不是关于网络应用,而是关于优化。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/61829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档