WEB开发网
开发学院数据库MySQL 十个MySQL性能优化技巧 阅读

十个MySQL性能优化技巧

 2012-06-06 11:10:58 来源:WEB开发网   
核心提示:5、弄清两个扩展性死亡陷阱扩展性可能并不像你认为的那样模糊,实际上,十个MySQL性能优化技巧(2),扩展性有着精确的数学定义,它们以方程式的形式被表示出来,会议、展览以及本地用户集体活动,都会为我们提供获得新见解的机会和与同行建立联系的机会,这些方程式既指出了系统无法扩展的原因,同时也指出了它们应该进行扩展的原因

5、弄清两个扩展性死亡陷阱

扩展性可能并不像你认为的那样模糊。实际上,扩展性有着精确的数学定义,它们以方程式的形式被表示出来。这些方程式既指出了系统无法扩展的原因,同时也指出了它们应该进行扩展的原因。通用扩展定律(Universal Scalability Law)揭示和量化了系统的扩展性特征。其通过两个基础性成本解释了扩展问题:即序列化与串扰(Crosstalk)。

并行处理要求必须中止序列化,这就限制了它们的扩展性。同样的,如果并行处理需要始终进行彼此对话以协调工作,那么它就相互进行了限制。为了避免序列化与串扰,应用进行了更好的扩展。这些在MySQL内部被翻译成了什么?结果不尽相同。不过,一些案例应该避免锁定在特定的行之中。就像第3个技巧中所提到的,队列扩展性差的原因就是如此。
6、不要过分关注配置

数据库管理员会花费许多时间调整配置。调整的结果通常不会有很大的改善,相反有时候会带来损害。我发现许多经过“优化的”服务器,在进行强度稍微高一点的运算时常常出现崩溃、内存不足和性能低下等问题。

虽然MySQL在交付时的默认设置严重过时,但是你并不需要对每一项都进行配置。最好是根据需要,进行基本纠正与设置调整。有10个选项调整正确,即可让服务器发挥95%的最大性能。在许多案例中,我们并不推荐所谓的调整工具,因为它们只是提供一个大概设置,对特定案例没有任何意义。有些工具甚至包含有危险的和错误的设备代码。

7、注意分页查询

分页查询应用会使服务器性能大降。这些应用会在网页上显示搜索结果,然后通过链接跳转至相应网页上。通常这些应用无法使用索引进行聚合与分类,而是使用LIMIT和OFFSET语句,这导致服务器工作负载大幅增加,并放弃行。 在用户界面上常常会发现优化选项。替代在结果中显示网页数量,以及分别与每个网页相连的链接。这样便可以仅显示至下一页的链接。你还可以阻止查询者浏览与首页过远的网页。

8、保存统计数据,提高报警阀值

监控与报警必不可少,但是监控系统被怎么处理了呢?当它们发布假的报警信息时,系统管理员会设置电子邮件过滤规则,以停止这些噪音。很快你的监控系统就彻底没用了。个人认为,应该以下面的两种方式进行监控:捕捉指标与报警。尽可能地捕捉与保存指标非常重要,因为在你试图搞明白系统中需要做哪些调整时,你会庆幸之前保存了它们。如果某一天出现奇怪问题时,你会很高兴自己有能力绘制出服务器工作负载变化的图形。

9、了解索引的三大规则

索引可能是数据库中被误解最多的一项。因为它们的工作方式有许多种,这导致人们常常对索引如何工作,以及服务器如何使用它们感到困惑。要想彻底搞清楚它们需要花上很大一番功夫。在被正确设计时,索引在数据库中主要用于实现以下三个重要目的:

1)它们让服务器寻找相邻行群组,而不是单个行。许多人认为,索引的目的是寻找单个行,但是寻找单个行会导致随时磁盘操作,速度很慢。寻找行群组就要好许多,与一次寻找一个行相比,这更具吸引力。

2)它们让服务器避免以期望的读行顺序对检索结果排序,排序成本十分高昂。以期望的顺序读行速度将更快。

3)它们能够满足来自一个索引的所有查询,从根本上避免了访问表单的需求。这被称为覆盖索引或索引查询。

如果你能设计出符合这三个规则的索引与查询,那么你的查询速度将大幅提升。

10、利用同行的专业知识

不要孤军奋战。如果你在苦苦思考某个问题,并着手制订明智的解决方案,那么这非常不错。在20次中,有19次问题会被顺利解决。但是其中会有一次让你不知所措,导致耗费大量的资金和时间,准确地说,是因为你正在尝试的解决方案只是貌似合理。

创建一个MySQL相关资源网的意义远远大于工具集与故障排除指南。许多经验丰富的专业人员就隐藏在论坛、问答网站之中。会议、展览以及本地用户集体活动,都会为我们提供获得新见解的机会和与同行建立联系的机会,关键时刻这将对你很有帮助。  

上一页  1 2 

Tags:十个 MySQL 性能

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接