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

性能优化之MySQL优化

sqlercn 数据库工程师
难度中级
时长 2小时 0分
  • 1.用连接的方式进行查询可能会导致数据重复,如:select t.id from t join t1 on t.id = t1.tid ,但是通过子查询就只有一条数据了:select * from t where t.id in (select ti.tid from ti);可以通过distinct去重;

    查看全部
    0 采集 收起 来源:子查询的优化

    2019-01-22

    1. explain中的extra列出现了Using filesort 或者 Using temporary时,说明需要优化查询了,可能是order by 或者group by没有使用到索引;

    2. count()函数: count(*)和count(id)查询的结果是不同的,count(*)会包含id是null的列,比如select count(num='2006' or null),count(year='2007' or null) from t;(查询2007和2006年的各自的票数,count函数的参数为null不进行统计)

    3. max()函数,可以使用索引优化:select max(payment_date) from payment; 可以在表payment_date上加索引:create index idx_paydate on payment(pay_date);通过explain解释:explain select max(payment_date) from payment \G ,Extra行出现提示:Seletct tables optimized away(已经优化到不能再优化了)


    查看全部
  • 慢查询日志分析工具:

    1.mysqldumpslow(mysql官方自带的,安装的时候就带有)

    2.mysqldumpslow -t 3 /home/mysql/data/mysql-slow.log  | more(输出排名前三的查询慢的日志)

    3.-s (可以规定慢查询日志以什么方式排序展示)


    查看全部
    1. CPU并不是越多性能越好,数据库对cpu也会有限制;

    2. 内存越大性能越好;


    查看全部
    0 采集 收起 来源:MySQL优化简介

    2019-01-21

  • 拆分表
    查看全部
  • 拆分表
    查看全部
  • Disk IO优化

    查看全部
  • Disk IO优化

    查看全部
  • 服务器硬件优化

    查看全部
  • http://tools.percona.com/wizard

    查看全部
  • /usr/sbin/mysqld - -verbose - -help | grep -A 1 'Default options '

    查看MySQL配置文件路径,如果存在多个配置文件,则后面的会覆盖前面的


    innodb_buffer_pool_size   #重要,缓冲池的大小 推荐总内存量的75%,越大越好。

    innodb_buffer_pool_instances   #该参数可以控制缓冲池的个数,默认只有一个缓冲池,如果一个缓冲池中并发量过大,容易阻塞,此时可以分为多个缓冲池;

    innodb_log_buffer_size   #log缓冲的大小,一般最常1s就会刷新一次,故不用太大;

    innodb_flush_log_at_trx_commit    #重要,对io效率影响较大,默认值为1,具有0,1,2三个值。0:1s刷新一次到磁盘;1:每次提交都会刷新到磁盘;2:每次提交刷新到缓冲区,1s刷新到磁盘;默认为1。一般建议设为2,但如果数据安全性要求比较高则默认设置为1.


    innodb_read_io_threads

    innodb_write_io_threads

    #读写的io进程数量,默认为4

    innodb_file_per_table  #重要,控制每个表使用独立的表空间,默认为OFF,即所有表建立在一个共享的表空间中。

    innodb_stats_on_metadata  #mysql在什么情况下会刷新表的统计信息,一般为OFF。



    查看全部
  • MySQL配置文件

    查看全部
  • 操作系统配置优化

    查看全部
  •  操作系统配置优化:

    1. 网络方面,修改/etc/sysctl.conf文件,增加tcp支持的队列数,减少断开连接时,资源的回收。

    2. 打开文件数的限制。修改/etc/security/limits.conf文件,增加一下内容以修改打开文件数量的限制。

    关闭iptables,selinux等防火墙软件。


    查看全部
  • 表的水平拆分:

    常用的方法是:hash取模拆分

    1、对大表的主键id值进行hash运算,比如要拆分为5张表,可以使用mod(主键id,5)取出0-4个值

    2、针对不同的hashID把数据存到不同的表中。

    挑战:

    1. 跨分区表进行数据查询

    2. 统计及后台报表操作

    查看全部

举报

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

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