iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >10个提升MySQL性能的小技巧
  • 434
分享到

10个提升MySQL性能的小技巧

MySQL数据库MySQL 2022-05-23 02:05:15 434人浏览 独家记忆
摘要

从工作量分析到索引的三条规则,这些专家见解肯定会让您的Mysql服务器尖叫。 在所有的关系数据库中,mysql已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困

从工作量分析到索引的三条规则,这些专家见解肯定会让您的Mysql服务器尖叫。

在所有的关系数据库中,mysql已经被证明了完全是一头野兽,只要通知停止运行就绝对不会让你多等一秒钟,使你的应用置于困境之中,你的工作也承受极大的风险。

不过事实是,普通的错误都在Mysql性能错误的射程之内。所以为了使你的MySQL服务器能够高速运转,提供稳定且持续的服务,消除这些错误是非常有必要的,但是这可能常常会被你的繁忙工作或配置陷阱微妙地遮蔽了。

幸运的是,许多MySQL性能问题其实都有相似的解决办法,发现并解决问题,然后你的MySQL用起来就顺手多啦。

接下来就和大家分享一下10个使MySQL性能提升的小技巧。

MySQL性能提升小技巧1:对你的工作进行配置 

想要了解你的服务器到底如何支配时间,最好的办法就是对服务器的工作进行配置。通过配置你的服务器,你可以expose最昂贵的query来为将来的调优做准备。从这个角度,时间就是最重要的衡量标准,因为当你对你的服务器发起一个query之后,除了它到底多块的完成之外你不会关心任何其他事。

配置你的工作文件的最优解就是MySQL Enterprise Monitor的query分析仪或者Percona Toolkit的pt-query-digest。这些工具可以帮助你捕捉你的服务器正在执行的询问以及返回按响应时间递减顺序排序的任务表,它还会持续不断地把最昂贵、费时的任务更新在最上方,这样你就能知道你的精力应该更加集中在什么地方了。

工作文件配置工具会把相似的询问分在一个组,你可以很方便地查看低速运行或者是告诉运行但是多次进行的询问。

MySQL性能提升小技巧2: 深入理解四个基本资源

一个数据库服务器需要以下4种资源才能正常运转:CPU,内存,硬盘以及网络。如果这其中任何一种性能不足,运转不力或者超负荷运转的话,那么数据库服务器就非常可能表现不佳。

理解基础的资源是非常重要是以下两个层面:选择硬件以及疑难问题解答。

当为MySQL选择硬件的时候,确保所有的组件都表现良好。同样重要的是把它们进行合理的配置。大多是时候,一些机构会选择高转速的CPU以及硬盘,但是他们通常来讲内存都不够用。在某些情况下,按照数量级增加内存是提升性能最廉价的办法,尤其是工作负载是绑定磁盘的情况下。这听起来可能违反常识,但是在许多情况下,硬盘都是过度使用的,因为没有足够的内存来储存数据工作集。

另外一个平衡的典范当属CPU。在大多数情况下,MySQL使用高转速的CPU会运转得很好,因为每一个询问都是在单线程中运行而不能在CPU之间并行。

当要解答疑难问题的时候,请了解清楚所有资源的性能和使用情况,用你审慎的目光来判断它们到底是本来就性能差劲还是因为承载了过多的任务。这个姿势应该能让你解决问题快一些。

MySQL性能提升小技巧3:别吧MySQL当成一个队列使

队列和队列访问模式可以在你完全没有察觉的情况下偷偷进入你的应用。举个栗子,如果你设置了某个项的状态,以便某个特定的工作进程在调用它之前可以声明它,那么你就在无意中创建了一个队列。把邮件标记为未发送,发送它们,然后它们被标记为已发送就是一个很好理解的栗子。

队列会产生问题主要有2个原因:它们连续运转你工作,防止它们并行,那么这通常就会产生一个表格,里面包含了进程中的工作还有很久以前已完成工作的历史数据。这不仅会使你的应用产生延迟而且也会给MySQL增加不必要的负荷。

MySQL性能提升小技巧4: 花费最少的结果先过滤

优化MySQL性能最好的办法就是先完成廉价、不确定的工作,然后在最小的结果数据集中完成艰难、准确的工作。

例如你要通过一个给定的地理位置半径来找到你想要的东西。在大多数程序员的工具箱里,他们首先会想到的一定是计算球面上的距离的大圆公式(Haversine)。但是用这个公式的问题在于可能要用到很多三角方面的运算,这对CPU的要求是非常高的。大圆的计算往往运行缓慢,使得机器的CPU使用率飙升。

在你开始应用大圆公式之前,在总集当中将你的记录减少成最小的子集,并把结果集整合成一个确切的圆。一个包含圆(确切或不确切的)的正方形是解决这个问题最简单的方法。这样的话,正方形之外的一切都不回碰上这些成本昂贵的三角函数。

MySQL性能提升小技巧5:了解两种伸缩性死亡陷阱

伸缩性其实并不像你想象的那样捉摸不定。实际上在数学当中已经有非常明确的将伸缩性表示为方程式的定义。这些方程式突出展现了为什么系统并没有如预期那样的良好伸缩。

参见通用可扩展法(Universal Scalability Law)—非常清晰地解释和量化了一个系统的伸缩性特性。它从两个基础成本方面对伸缩性问题进行了阐释:序列化(serialization)和串扰(crosstalk)。

多进程必须为在伸缩性上具有固有限制的序列化停止工作。相似地,如果多个进程必须时时刻刻互相交流才能配合他们的工作的话,他们就是在互相限制。

避免序列化以及串扰,你的应用伸缩性将会大大提升。那么在对MySQL来说意味着什么呢?因情况而异,但有些示例可以避免对行进行排它定。关于队列,参见技巧3,往往会因为队列伸缩性就变得很差。

MySQL性能提升小技巧6:不要太关注配置 

DBA常常耗费大量的时间来调整配置。换来的结果有时却是伤害而不是大的提升。我看到过许多的最优化的服务器时不时就崩溃,内存不足,而且在工作负载稍微多一点的时候就表现很差。

MySQL上搭载的默认配置是一刀切并且严重过时的,但是它们也不需要完全重新配置。只要把最基础的设置正确,有需要的话再做小幅调整即可。在大多数情况下,通过正确设置大约10个选项,你可以获得服务器峰值性能的95%。其他无法应用此方法的的情况的话应该是非常特殊的情况,所以就不用去管他了。

在大多数情况下,服务器“转换”工具是不推荐的,因为它们常常会有一些在特定情况下并不适用的规则。有些甚至存在危险且不准确编码—例如缓存命中率和内存消耗公式。这些都是不对的,而且随这时代的进步他们变得更加地不对。

MySQL性能提升小技巧7: 小心分页询问

分页应用常常会把服务器搞瘫痪。在向你展示结果的页面当中,有翻到下一页的链接,这类应用通常不以索引的方式进行分类整理,然后他们使用一种 LIMIT和 offset使得服务器做大量的工作生成,然后丢弃行。

优化选项在用户界面常常自己就能找到。而不是展示确切的页数结果以及每个页面的单独链接,只展示下一列的链接就好。你也可以防止大家翻到太后面的页数。

从质询方面来看,你可以比你想要的多选取一行,然后当你点击“下一页”链接的时候,你可以指定最后一行作为下一组结果的起点,而不是使用带offset的 LIMIT。举个栗子,当用户在查看120行中的第101行时,你会同时select第121行;为了递交下一页,你可以向服务器询问第121行或者超过121的行,限定在21。

MySQL性能提升小技巧8: 及时保存数据,审慎警告

监管和预警是必不可少的,但是典型的监控系统到底怎么了?它开始发送一些错误的手势,然后系统管理员就设置了垃圾邮件过滤规则来停止这些烦扰。然后很快你的监管系统就会完全瘫痪。

我倾向于从两个方面来看待监管;获取指标以及发出预警。尽可能的获取并保存指标是非常重要的,因为当你想要知道系统到底改变了什么的时候你会很庆幸你当初保存了它们。有一天会突然出现一个很奇怪的错误,然后你就会很高兴你有能力指出服务器的工作负载中的一段然后展示这个改变。

相比之下,警告就可能有点多了。人们常常会对缓存命中率或者短期内每秒所创建的表格发出警告。问题是对这种缓存命中率并没有一个合适的阈值。正确的阈值并不是随着服务器的不同而变化,而是随着你工作负载的不同,每一个小时都是不一样的。

这就导致,警告只能有节制地并且只能在预示一个具体、可操作的问题时才是可行的。一个低缓存命中率并不是可操作的问题,而且他也不指向一个实在的问题,但对连接尝试没有响应的服务器才是真正需要结局的问题。

MySQL性能提升小技巧9: 学习index的三条法则

Index可能是数据库汇总最难理解的概念,因为很容易就对Index到底如何工作以及服务器如何使用它们感到困惑。确实要花些力气才能真正理解它到底是怎么回事。

Index经过适当设计后,主要在数据库服务器中提供如下三种服务:

  1. Index让服务器查找相邻行的集合而不是单独的行。许多人可能会认为index的作用就是为了查找单独的行,但是查找单独的行会导致混乱的硬盘操作,速度就会变慢。而且查找行的集合要容易多了,所有或者说大多数都比一次只查找一个行要有趣多了。

  2. Index通过按照阅读喜好进行排列省去了整理的过程。整理是耗费巨大的。按照自己的喜好进行阅读效率也更高。

  3. Index完全满足了服务器的询问,根本就不需要再连接表格。这是众所周知的覆盖索引或仅索引查询。

如果你可以定义自己的索引和询问来利用这三个机会,你就可以使查询速度快几个数量级。

MySQL性能提升小技巧10: 利用同行的专业知识

不要一个人冒险。如果你对一个问题感到烦恼,同时也在做一些对你来说有逻辑且隔离的解决方式,那很好。这在20次中可能会有19次是有效的。但是剩下的1次,你可能会掉进兔子洞里,会非常费时费力,这完全是因为你现在所做的努力只是看起来可能是有意义的。

建立与MySQL相关的资源网络,这超越了工具和故障排除指南。有一些非常有知识的人潜伏在邮件列表、论坛、问答网站上,等等。会议、展会和本地用户团体活动都提供了宝贵的机会,让你能与那些在紧要关头帮助你的同行建立联系。

如果你们想要找工具对上述的技巧进行实践,你可以看看 Percona Configuration Wizard for MySQL , Percona Query Advisor for MySQL , 以及 Percona Monitoring Plugins 。(你需要注册一个Percona账号才可以免费进入前两个链接。)配置向导可为新的服务器生成一个基准my.cnf文件,这个文件优于服务器上的样本文件。Query advisor会分析你的SQL查询来检测潜在的坏模式,如分页查询(技巧7)。Percona Monitoring Plugins是一系列的监管和图形绘制插件,它们可以帮助你及时保存数据并且警惕预警(技巧8)。所有这些工具都是免费的哦。

 

来自:Http://www.cocoachina.com/programmer/20170731/20067.html

 

您可能感兴趣的文档:

--结束END--

本文标题: 10个提升MySQL性能的小技巧

本文链接: https://www.lsjlt.com/news/9461.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 提升CMS移动端SEO性能的10个技巧
    1. 使用响应式设计 响应式设计是一种网站设计技术,可以使网站在不同设备上都能获得良好的显示效果。对于移动端SEO来说,使用响应式设计可以确保网站在移动设备上也能正常打开和浏览,从而提高移动端用户体验。 2. 优化页面加载速度 页面加载...
    99+
    2024-02-11
    CMS 移动端 SEO 性能 优化 加载速度 安全性 结构化数据 响应式设计 AMP
  • 10个提升web应用程序10倍性能的技巧有哪些
    这篇文章将为大家详细讲解有关10个提升web应用程序10倍性能的技巧有哪些,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。提高Web应用程序性能比以往任何时候都更加重要。在线经济活动的份额正在...
    99+
    2023-06-16
  • 提升Redis性能的小技巧有哪些
    这篇文章主要介绍了提升Redis性能的小技巧有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。01 使用 p...
    99+
    2024-04-02
  • Java 中的5个代码性能提升技巧
    目录1.预先分配HashMap的大小2.优化HashMap的key3.不使用Enum.values()遍历4.使用Enum代替String常量5.使用高版本JDK前言: 提示:我们不...
    99+
    2024-04-02
  • 使用MySQL MVCC 提升数据库性能的技巧
    使用MySQL MVCC 提升数据库性能的技巧随着互联网的发展,数据库成为了系统架构中不可或缺的一部分。MySQL作为最常用的关系型数据库之一,广泛应用于各种网站和应用程序中。为了提高数据库的性能和可扩展性,MySQL引入了MVCC(多版本...
    99+
    2023-10-22
    MySQL mvcc 数据库性能提升
  • 剖析PHP服务器优化的奥秘:10个实用技巧助力性能提升
    代码优化: 作为一名PHP开发者,您需要掌握高效的代码编写技巧,以减少不必要的资源消耗。尽量使用简洁、高效的代码,并避免冗长的循环和复杂的运算。同时,合理使用变量、函数和类,并采用面向对象编程范式,可以显著提高代码的可读性和可维护性...
    99+
    2024-02-13
    PHP服务器优化 性能提升 网站速度 代码优化 缓存 配置优化 负载均衡 数据库优化 安全优化
  • JavaScript小技巧带你提升你的代码技能
    目录1、过滤唯一值2、短路求值(Short-Circuit Evaluation)2.1场景举例3、转换Boolean型4、转换String型5、转换Number类型6、快速求幂7、...
    99+
    2024-04-02
  • 分享5个Java接口性能提升的通用技巧
    目录前言1. 并发调用2. 避免大事务3. 添加合适的索引4. 返回更少的数据5. 使用缓存前言 作为后端开发人员,我们总是在编写各种API,无论是为前端web提供数据支持的HTTP...
    99+
    2023-01-03
    Java接口性能提升技巧 Java接口性能提升 Java接口性能
  • Golang文件读取优化:提升程序性能的小技巧
    Golang是一门以高效和快速著称的编程语言,但在文件读取方面,如果不小心就会陷入性能瓶颈。本文将讨论Golang中文件读取的优化,介绍能够提升程序性能的小技巧,并附带具体的代码示例。 使用缓冲区 在Gola...
    99+
    2024-01-19
    Golang 性能优化 文件读取
  • 提升Python运行速度的5个小技巧
    目录1. 选择合适的数据结构2. 善用强大的内置函数和第三方库3. 少用循环4. 避免循环重复计算5. 少用内存、少用全局变量总结 官方原文,代码均可运行 Python 是世界上使用...
    99+
    2024-04-02
  • Unity 3D 实用的10个小技巧
    Unity引擎,上手简单易懂,但是很少有人对Unity编辑器的功能做一个全面细致的了解,一些非常实用的小功能在日常使用中很难被发现,但它们对工作效率的提升是有不小的帮助的。1)锁定Inspector – 在inspector面板上方有一个小...
    99+
    2023-01-31
    小技巧 Unity
  • 提升Web开发性能的技巧有哪些
    本篇内容介绍了“提升Web开发性能的技巧有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、采用反向代...
    99+
    2024-04-02
  • 分享网站性能提升的实用技巧
    随着互联网的迅猛发展,越来越多的企业、个人都开始建立自己的网站来展示和推广自己的产品、服务或者创意。然而,网站性能的优化一直是一个重要的挑战,因为一个快速、流畅的网站能够吸引更多的访问者,提高用户体验,从而促进业务增长。本文将分...
    99+
    2024-02-03
    缓存 压缩 优化 异步加载 延迟加载
  • 提升操作系统性能监控的技巧
    监控操作系统性能对于保持服务器平稳运行、识别潜在问题并最大限度提高系统效率至关重要。通过实施高效的监控策略,系统管理员可以主动识别和解决问题,从而防止服务中断和性能下降。以下是提升操作系统性能监控的几个最佳实践: 1. 识别关键性能指标...
    99+
    2024-03-02
    操作系统监控、性能优化、服务器管理、监控工具
  • 快速提升开发CSS技能的小技巧有哪些
    这篇文章主要介绍快速提升开发CSS技能的小技巧有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!flexbox 内容换行当我们使用 flexbox 布局的时候,默认情况下,在容器宽...
    99+
    2024-04-02
  • 服务器维护的艺术:提升性能和可靠性的 20 个技巧
    选择合适的服务器硬件:根据您的工作负载需求选择具有足够 CPU、内存和存储的服务器。 使用固态硬盘 (SSD):SSD 比传统硬盘驱动器 (HDD) 快得多,可以显著提高性能。 升级内存:增加服务器的内存可以减少页面故障并提高应用程序性...
    99+
    2024-03-14
    定期维护
  • Python语言的10个小技巧分享
    这篇文章主要讲解了“Python语言的10个小技巧分享”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python语言的10个小技巧分享”吧!10个Python小技巧1. 用ZIP处理列表假设...
    99+
    2023-06-16
  • 提高React界面性能的十个技巧
    目录shouldComponentUpdatePureComponentuseEffect用React.memo提供记忆窗口化(列表虚拟化)函数缓存延迟加载和代码拆分并发模式、Sus...
    99+
    2024-04-02
  • PHP数组反转优化:提升性能的技巧
    大型 php 数组反转性能优化技巧包括:使用 rsort() 按降序排序;使用指针分配避免创建副本;对于小型数组,手动反转最有效。 PHP 数组反转优化:提升性能的技巧 引言 在 PH...
    99+
    2024-04-28
    php 反转数组
  • Vue 父子通信的 10 个最佳实践:提升性能
    1. 充分利用 Vuex Vuex 是一个集中式状态管理工具,可简化跨组件的数据共享。通过在 Vuex 中存储数据,您可以避免不必要的重新渲染和性能瓶颈。 // store.js export default new Vuex.Stor...
    99+
    2024-03-01
    Vue 父子通信 最佳实践 性能优化 数据绑定 事件通信
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作