为了账号安全,请及时绑定邮箱和手机立即绑定
慕课网数字资源数据库体验端
性能优化之MySQL优化_学习笔记_慕课网
为了账号安全,请及时绑定邮箱和手机立即绑定

性能优化之MySQL优化

sqlercn 数据库工程师
难度中级
时长 2小时 0分
  • 演示数据库
    查看全部
    0 采集 收起 来源:数据准备

    2017-08-16

  • SQL索引、系统配置、硬件
    查看全部
    0 采集 收起 来源:MySQL优化简介

    2017-08-15

  • /usr/sbin/mysqld - -verbose - -help | grep -A 1 'Default options ' 查看MySQL配置文件路径,如果存在多个配置文件,则后面的会覆盖前面的 #重要,缓冲池的大小 推荐总内存量的75%,越大越好。 innodb_buffer_pool_size #默认只有一个缓冲池,如果一个缓冲池中并发量过大,容易阻塞,此时可以分为多个缓冲池; innodb_buffer_pool_instances #log缓冲的大小,一般最常1s就会刷新一次,故不用太大; innodb_log_buffer_size #重要,对io效率影响较大。0:1s刷新一次到磁盘;1:每次提交都会刷新到磁盘;2:每次提交刷新到缓冲区,1s刷新到磁盘;默认为1。 innodb_flush_log_at_trx_commit #读写的io进程数量,默认为4 innodb_read_io_threads innodb_write_io_threads #重要,控制每个表使用独立的表空间,默认为OFF,即所有表建立在一个共享的表空间中。 innodb_file_per_table #mysql在什么情况下会刷新表的统计信息,一般为OFF。 innodb_stats_on_metadata
    查看全部
  • limit常用于分页处理,时常会伴随order by从句使用,因此大多时候会使用Filesorts这样会造成大量的io问题 1.使用有索引的列或主键进行order by操作 2.记录上次返回的主键,在下次查询时使用主键过滤 即将:select film_id,description from sakila.film order by film_id limit 50,5; 改为:select film_id,description from sakila.film where file_id >55 and film_id<=60 order by film_id limit 1,5; 使用这种方式有一个限制,就是主键一定要顺序排序和连续的,如果主键出现空缺可能会导致最终页面上显示的列表不足5条,解决办法是附加一列,保证这一列是自增的并增加索引就可以了
    查看全部
  • Max()和Count()的优化 1.对max()查询,可以为表创建索引,例如 select max(payment_date) from payment; 可以对payment建立索引 create index idx_paydate on payment(payment_date); 然后在进行查询 2.count()对多个关键字进行查询,比如在一条SQL中同时查出2006年和2007年电影的数量,语句: select count(release_year='2006' or null) as '2006年电影数量', count(release_year='2007' or null) as '2007年电影数量' from film; 这里解释一下为什么要加'or null': count()函数只有count(NULL)是才不计数,即count(NULL)=0; 而'release_year='2006''是个比较运算符,结果为1或者0,不管是不是2006 count函数都会计数。 当加上or null以后,当值不为2006,release_year='2006'的结果为0, '0 or null'结果为null,这样就排除了2006以外的结果 3.count(*) 查询的结果中,包含了该列值为null的结果
    查看全部
  • explain 返回各列的含义 table:显示这一行的数据时关于哪张表的 type:显示连接使用了何种类型 const、eq_reg、ref、range、index和ALL;const:主键、索引;eq_reg:主键、索引的范围查找;ref:连接的查找(join),range:索引的范围查找;index:索引的扫描; possible_keys:显示可能应用在这张表中的索引,如果为空,没有可能的索引 key:实际使用的索引,如果为null,没有使用索引 key_len:使用的索引的长度,在不损失精确性的情况下,长度越短越好 ref:显示索引的哪一列被使用了,如果可能的话,是一个常数 rows:mysql认为必须检查的用来返回请求数据的行数; extra:如果返回值是如下两个就需要进行优化了 using filesort:mysql需要进行额外的步骤来发现如果对返回的行排序。它根据连接类型以及存储排序键值和匹配条件的全部行的行指针来排序全部行 using temporary:MySQL需要创建一个临时表来存储结果,这通常发生在对不同的列集进行order by上,而不是group by 上 其中type是重要的列,以下从最好到最差: const:是一个常数查找,一般是主键和唯一索引查找 eq_reg:主键和唯一索引的范围查找 ref:连接的查找,一般一个表是基于某一个索引的查找 range:基于索引的范围查找 index:基于索引的扫描 all:基于表扫描
    查看全部
  • 1.查询次数多且每次查询占用时间长的SQL 通常为pt-query-digest分析的前几个查询 2.IO大的SQL 注意pt-query-digest分析中的Rows examine项 3.未命中索引的SQL 注意pt-query-digest分析中的Rows examine和Row send 的对比 当Rows examine>>Row send 基本上是使用了索引扫描或者表扫描的方式来进行查询,需要进行优化
    查看全部
  • /usr/sbin/mysqld - -verbose - -help | grep -A 1 'Default options '
    查看全部
  • MySQL配置文件08
    查看全部
  • MySQL配置文件07
    查看全部
  • MySQL配置文件06
    查看全部
  • MySQL配置文件05
    查看全部
  • MySQL配置文件04
    查看全部
  • MySQL配置文件03
    查看全部
  • MySQL配置文件02
    查看全部

举报

0/150
提交
取消
课程须知
想要学好这门课程,你需要具备MySQL数据库的基本知识,如果具有相关的工作经验并且希望能提升工作技能的话,这门课程就再适合不过了。
老师告诉你能学到什么?
1、了解数据库优化的各个方面的方法和技巧 2、如何对SQL语句和索引进行优化 3、如何对数据库结构及运行环境进行优化
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!