本章将付息与MySQL性能有关的某些要点。

30.1 改善性能

数据库管理员把他们生命中的相当一部分时间花在了调整、试验以改善DBMS性能之上。在诊断英勇的滞缓现象和性能问题时,性能不良的数据库(以及数据库查询)通常是最常见的祸因。
可以看出,下面的内容并不能完全决定MySQL的性能。我们只是想回顾一下前面各章的重点,提供进行性能优化探讨和分析的一个出发点。

  • 首先,MySQL(与所有DBMS一样),具有特定的硬件建议。在学习和研究MySQL时,使用任何旧的计算机作为服务器都可以。但对用于生产的服务器来说,应该坚持遵循这些硬件建议。
  • 一般来说,关键的生产DBMS应该运行在自己的专用服务器上。
  • MySQL是用一系列的默认设置预先配置的,这些设置开始通常是很好的。但过一段时间后你可能需要调整内存分配、缓冲区大小等。(为查看当前设置,可使用 SHOW VARIABLES;SHOW STATUS; 。)
  • MySQL是一个多用户多线程的DBMS,换言之,它经常同时执行多个任务。如果这些任务中的某一个执行缓慢,则所有请求都会执行缓慢。如果你遇到显著的性能不良,可使用 SHOW PROCESSLIST 显示所有活动进程(以及它们的线程ID和执行时间)。你还可以用 KILL 命令中介某个特定的进程(使用这个命令需要作为管理员登录)。
  • 总是有不止一种方法编写同一条SELECT语句。应该试验联结、并、子查询等,找出最佳的方法。
  • 使用 EXPLAIN 语句让MySQL解释它将如何执行一条SELECT语句。
  • 一般来说,存储过程执行得比一条一条地执行其中的各条MySQL语句块。
  • 应该总是使用正确地数据类型。
  • 绝不要检索比需求还要多的数据。换言之,不要用 __SELECT *__ (除非你真正需要每个列)。
  • 有的操作(包括 INSERT )支持一个可选的 DELAYED 关键字,如果使用它,将把控制立即返回给调用程序,并且一旦有可能就实际执行该操作。
  • 在导入数据时,应该关闭自动提交。你可能还想删除索引(包括 FULLTEXT 索引),然后在导入完成后再重建它们。
  • 必须索引数据库表以改善数据检索的性能。确定索引什么不是一件微不足道的任务,需要分析适用的 SELECT 语句以找出重复的 WHEREORDER BY 子句。如果一个简单的 WHERE 子句返回结果所花的时间太长,则可以断定其中使用的列(或几个列)就是需要索引的对象。
  • 你的 SELECT 语句中有一系列复杂的 OR 条件吗?通过使用多条 SELECT 语句和联结它们的UNION语句,你能看到极大的性能改进。
  • 索引改善数据检索的性能,但损害数据插入、删除和更新的性能。如果你有一些表,它们手机数据且不经常被搜索,则有必要之前不要索引它们。(索引可根据需要田家河删除。)
  • LIKE很慢。一般来说,最好是使用 FULLTEXT 而不是 LIKE
  • 数据库是不断变化的实体。一组优化良好的表一会儿后就面目全非了。由于表的使用和内容的更改,理想的优化和配置也会改变。
  • 最重要的规则是,每条规则在某些条件下都会被打破。
浏览文档 位于[http://dev.mysql.com/doc/](http://dev.mysql.com/doc/)的MySQL文档有许多提示和技巧(甚至有用户提供的评论和反馈)。一定要查看这些非常有价值的资料。

30.2 小结

本章回顾了与MySQL性能有关的某些提示和说明。当然,这只是一小部分,不过,既然你已经完成了本书的学习,你应该能试验和掌握自己觉得最合适的内容。

《MySQL必知必会》学习笔记——第30章 改善性能的更多相关文章

  1. 《MySQL必知必会》学习笔记——前言

    前言 MySQL已经成为世界上最受欢迎的数据库管理系统之一.无论是用在小型开发项目上,还是用来构建那些声名显赫的网站,MySQL都证明了自己是个稳定.可靠.快速.可信的系统,足以胜任任何数据存储业务的 ...

  2. 《MySQL必知必会》学习笔记整理

    简介 此笔记只包含<MySQL必知必会>中部分章节的整理笔记.这部分章节主要是一些在<SQL必知必会>中并未讲解的独属于 MySQL 数据库的一些特性,如正则表达式.全文本搜索 ...

  3. 《mysql必知必会》读书笔记--存储过程的使用

    以前对mysql的认识与应用只是停留在增删改查的阶段,最近正好在学习mysql相关内容,看了一本书叫做<MySQL必知必会>,看了之后对MySQL的高级用法有了一定的了解.以下内容只当读书 ...

  4. MySQL必知必会(第4版)整理笔记

    参考书籍: BookName:<SQL必知必会(第4版)> BookName:<Mysql必知必会(第4版)> Author: Ben Forta 说明:本书学习笔记 1.了解 ...

  5. MySQL必知必会1-20章读书笔记

    MySQL备忘 目录 目录 使用MySQL 检索数据 排序检索数据 过滤数据 数据过滤 用通配符进行过滤 用正则表达式进行搜索 创建计算字段 使用数据处理函数 数值处理函数 汇总数据 分组数据 使用子 ...

  6. 《SQL必知必会》学习笔记二)

    <SQL必知必会>学习笔记(二) 咱们接着上一篇的内容继续.这一篇主要回顾子查询,联合查询,复制表这三类内容. 上一部分基本上都是简单的Select查询,即从单个数据库表中检索数据的单条语 ...

  7. 《SQL必知必会》学习笔记整理

    简介 本笔记目前已包含 <SQL必知必会>中的所有章节. 我在整理笔记时所考虑的是:在笔记记完后,当我需要查找某个知识点时,不需要到书中去找,只需查看笔记即可找到相关知识点.因此在整理笔记 ...

  8. MySQL必知必会复习笔记(1)

    MySQL必知必会笔记(一) MySQL必知必会是一本很优秀的MySQL教程书,并且相当精简,在日常中甚至能当成一本工作手册来查看.本系列笔记记录的是:1.自己记得不够牢的代码:2.自己觉得很重要的代 ...

  9. mysql学习--mysql必知必会1

     例如以下为mysql必知必会第九章開始: 正則表達式用于匹配特殊的字符集合.mysql通过where子句对正則表達式提供初步的支持. keywordregexp用来表示后面跟的东西作为正則表達式 ...

随机推荐

  1. Linux LVM--三种Logic Volume

    本文链接:https://blog.csdn.net/u012299594/article/details/84551722 概述 为了满足在性能和冗余等方面的需求,LVM支持了下面三种Logic V ...

  2. P1902 刺杀大使

    题目描述 伊朗伊斯兰革命卫队(某恐怖组织)正在策划一起刺杀行动,他们的目标是沙特驻美大 使朱拜尔.他们来到了沙特驻美使馆,准备完成此次刺杀,要进入使馆首先必须通过使馆前 的防御迷阵. 迷阵由 n*m ...

  3. mac php 安装php多版本

    之前的开发,PHP的版本都是基于php7.3 .but!!! 接到一个老项目 tp3.1的.没法用php7.3 只能在装一个php5.6了.真坑爹.为啥还要TP3.1的项目.并且是刚开发的新项目. 真 ...

  4. KillTimer不能放在析构函数,可以放在DestroyWindow函数里

    转自 https://www.cnblogs.com/huking/archive/2009/11/27/1612201.html KillTimer&析构函数 析构函数中不能用KillTim ...

  5. webbench 源代码

    WebBench源码:https://github.com/EZLippi/WebBench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问 ...

  6. 怎么根据id匹配到名字?

    下拉框---(ps:为了不泄漏隐私,只能截出来一丢丢) table某两列--- 在下拉框是有调渠道的接口,但是table中只获取到了一个id,并没有渠道名称 1.首先获取到那个接口,将mapForCh ...

  7. setTimeout 的理解

    setTimeout,延迟一段时间执行代码. setTimeout(func,0),这代码的作用并不是简单地和直接调用func一个效果: 1:动态往DOM树中插入元素,然后立刻操作这个元素(选择文本框 ...

  8. Spring|@Autowired与new的区别

    前两天写代码的时候遇到一个问题,通过new出来的对象,自动注入的属性总是报空指针的错误.到网上查了资料,才发现问题所在,同时也加深了自己对于容器IOC的理解.现在把这个问题记录一下,仅供大家参考. [ ...

  9. 深入理解JVM虚拟机10:JVM常用参数以及调优实践

    转自http://www.rowkey.me/blog/2016/11/02/java-profile/?hmsr=toutiao.io&utm_medium=toutiao.io&u ...

  10. EasyTrader踩坑之旅总结

    ​ easytrader是用python写的可以调用主要券商完成自动化炒股的一个软件 ,但我用的是同花顺,在研究过程中,发现同花顺暂时调不通.后来搜索发现thstrade的源码作者说是easytrad ...