MySQL:性能优化-索引、语句、配置(基于5.7)

发布时间:2020-07-20 15:06:58 作者:小生博客
来源:网络 阅读:4527

   小生博客:http://xsboke.blog.51cto.com

   

  

 

                             -------谢谢您的参考,如有疑问,欢迎交流


一、 数据库的类型

  1) 第一代数据库:

基于层次模型与网状模型的数据库

  2) 第二代数据库:

关系型数据库

  3) 第三代数据库

面向对象型数据库

二、 影响mysql性能的因素

  1. 商业需求的影响

例:要求论坛帖子总量实时更新

1) Myisam存储引擎:

2)Innodb存储引擎:

  2. 系统架构及实现的影响

1)二进制多媒体数据

2)超大文本数据

  3. 查询语句对性能的浪费

对于数据库管理软件,最大的性能瓶颈就在于磁盘的IO,当查询某个数据时,需要多次进行磁盘IO;将数据块加载到内存并且进行数据查找,当查询某个数据时,可能需要几百上千次进行这种磁盘IO的操作,所以在资源消耗方面是很大的,但是如果以不同的方式去寻找其中的某一点内容时,所需的IO次数可能相对就减少,这里说的也就是索引

  4. 数据库schema设计对性能的影响

   就是数据库的数据结构

  5. 硬件性能的影响

l  磁盘的I/O性能:内存、硬盘、网卡等

l  CPU的处理能力

l  网络设备:交换路由、网线网卡等

三、mysql性能优化-----索引

  1. 索引作用

索引通过减少磁盘IO而优化了查询速度,但是在一定程度上降低了增删改的性能,因为索引相当于一本书的目录,书的内容改变,索引也需要更新,而且索引是存放在物理文件中的,相对的也占用了磁盘空间

  2. 索引的类型

索引一般分为B-treeR-tree和全文索引,但是innodb存储引擎是不支持全文索引的,而且常用的索引就是B-tree索引也叫平衡树索引

  3. B-tree索引的结构及原理

   MySQL:性能优化-索引、语句、配置(基于5.7)

  4. 索引的优点

  5. 索引的缺点

  6. 不建议使用索引的情况

  7. 索引的类型

索引包括单列索引和组合索引

1)普通索引

2)唯一索引

3)主键索引:一种特殊的唯一索引,不允许有空值,一般在建表的时候同时建立主键索引

4)组合索引

5)全文索引(几乎不使用,一般用于对大数据进行查询时)

  8. 查询索引

  9. 在什么情况下需要建立索引,应该选择什么列建立索引

l  当表的记录较多,查询速度较慢时我们就需要通过建立索引的方式优化数据库的查询性能

l  一般经常出现在wherejoin子句中的列需要建立索引

l  使用索引的注意事项

四、mysql性能优化的思路

  1. 基本思路

  2. 索引优化

1)比如有用户投诉公司网站查询数据特别慢,这时需要我们优化数据库的查询性能,用户是不知道使用了什么sql语句的,所以需要我们去找到sql语句,并对其进行优化

   2)        慢查询日志

    MySQL:性能优化-索引、语句、配置(基于5.7)

    MySQL:性能优化-索引、语句、配置(基于5.7)

    MySQL:性能优化-索引、语句、配置(基于5.7)

    MySQL:性能优化-索引、语句、配置(基于5.7)

  3) 通过explain工具模拟语句执行,进行分析查询

    MySQL:性能优化-索引、语句、配置(基于5.7)

  4) 通过profiling工具对实际进行的查询语句进行分析,相比explain更准确

    MySQL:性能优化-索引、语句、配置(基于5.7)

    执行要测试的语句并查看反馈的信息

    MySQL:性能优化-索引、语句、配置(基于5.7)

    通过语句的query_id号可以查看语句执行的详细信息

    MySQL:性能优化-索引、语句、配置(基于5.7)

五、 配置优化

   就是my.cnf中的参数配置

  1. Max_connections:最大连接数,只对myisam存储引擎有效

   查看当前已经建立的连接

   MySQL:性能优化-索引、语句、配置(基于5.7)

   查看试图连接或已连接数

   MySQL:性能优化-索引、语句、配置(基于5.7)

   当连接大于最大连接数时,可能报错1040too  many  connections

   判断当前最大连接数的方法:

   MySQL:性能优化-索引、语句、配置(基于5.7)

  2. Back_logmysql请求队列数,只对myisam存储引擎有效

   当mysql并发连接数达到最大时,允许被放入队列的连接数

   查看当前正在等待的队列数

   MySQL:性能优化-索引、语句、配置(基于5.7)

  3. Wait_timeout interactive_timeout,只对myisam存储引擎有效

   非交互式和交互式的闲时超时时间

   MySQL:性能优化-索引、语句、配置(基于5.7)

  4. Key_buffer_size:索引缓冲区大小,只对myisam存储引擎有效

   作用:

      决定索引处理速度

   优化方法:

      MySQL:性能优化-索引、语句、配置(基于5.7)

  5. Query_cache_size:查询缓存,简称QC,只对myisam存储引擎有效

   1)        配置参数

     MySQL:性能优化-索引、语句、配置(基于5.7)

   2)作用:

   3) 通过检查状态值‘Qcache%’可以判断QC设置是否合理

     MySQL:性能优化-索引、语句、配置(基于5.7)

   4) 关于query_cache的配置

    MySQL:性能优化-索引、语句、配置(基于5.7)

  6. Max_connect_errors:与mysql安全有关的计数器值,最大错误连接数,

    只对myisam存储引擎有效

  7. Sort_buffer_site:排序缓冲区大小,只对myisam存储引擎有效

  8. Max_allowed_packet:限制server接受的selectupdate语句包的大小,

    只对myisam存储引擎有效

  9. Join_buffer_size:影响带有多表查询类型语句的查询速度,

    connection级参数,只对myisam存储引擎有效

  10. Tread_cache_size:设置服务器线程缓存,只对myisam存储引擎有效

  11. Innodb_buffer_pool_size:相当于key_buffer_size对于MyISAM表的作用一样

  12. innodb_flush_log_at_trx_commit:控制事务日志刷写的时间点

  13. innodb_thread_concurrency :设置innodb线程的并发数量

  14. innodb_log_buffer_size

  15. innodb_log_file_size

  16. innodb_log_files_in_group

  17. read_buffer_size

  18. read_rnd_buffer_size

  19. bulk_insert_buffer_size

  20. binary log日志文件的配置参数

六、优化后通过mysqlslap工具可以进行测试

  优化前

  MySQL:性能优化-索引、语句、配置(基于5.7)

  将所有优化语句写入,进行测试

  MySQL:性能优化-索引、语句、配置(基于5.7)

七、 优化语句总结

  MySQL:性能优化-索引、语句、配置(基于5.7)


推荐阅读:
  1. mysql5.7配置文件
  2. MySQL 5.7新支持--------如何创建Json类型索引

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql index query

上一篇:使用24个ES6方法解决JS实际开发问题

下一篇:关于向Mybatis传递多个参数进行SQL查询的用法

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》