热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何优化MySQL数据库性能以提升查询效率和系统稳定性

MYSQL数据库调优 索引 1、对于常用的查询字段加索引,但如果常用字段只有几个常量值就不需要加索引,或者使用索引会失效的情况;2、索引失效的情况&#xff1
MYSQL数据库调优

索引

1、对于常用的查询字段加索引,但如果常用字段只有几个常量值就不需要加索引,或者使用索引会失效的情况;

2、索引失效的情况:

​ 1、索引列使用函数,计算(加减乘除等)

​ 2、like使用左模糊查询 ’%qwew’

​ 3、组合索引不使用第一列

​ 4、!&#61; not <>

​ 5、使用OR 条件查询 前后没有同时使用索引

​ 6、字段类型不同

​ 7、比较两列值 where 索引列A&#61;索引列B

​ 8、order by 单独使用

​ 等等

3、强制使用索引 force index(索引名) 例&#xff1a;SELECT * FROM subscription force index(expires_time) order by expires_time desc(order by单独使用&#xff0c;索引失效)

4、查看索引的的生效情况&#xff0c;在查询语句前加 EXPLAIN(仅对 select 生效)

​ id&#xff1a;表示sql的执行顺序&#xff08;sql中会有子查询&#xff09;&#xff0c;id越大优先级越高&#xff0c;同级别在上而下执行

​ select_type&#xff1a;

​ SIMPLE&#xff1a;查询中不包含子查询或者UNION

​ PRIMARY&#xff1a;查询中包含子查询&#xff0c;最外层查询则被标记为PRIMARY

​ SUBQUERY&#xff1a;在SELECT或WHERE列表中包含了子查询&#xff0c;该子查询被标记为SUBQUERY

​ DERIVED&#xff1a;在FROM列表中包含的子查询被标记为&#xff1a;DERIVED&#xff08;衍生&#xff09;

​ UNION&#xff1a;第二个SELECT出现在UNION之后&#xff0c;则被标记为UNION&#xff1b;若UNION包含在 FROM 子句的子查询中&#xff0c;外层SELECT将被标记为&#xff1a;DERIVED

​ UNION RESULT&#xff1a;从UNION表获取结果的SELECT

​ 等等

​ type&#xff1a;访问类型 ALL(全表查询) index(走索引) range(范围查询) 等等

​ possible_keys&#xff1a;可能使用的索引

​ key&#xff1a;真正使用到的索引

​ key_len&#xff1a;索引使用的字节数

​ ref&#xff1a;连接匹配条件

​ rows&#xff1a;查询记录大概需要查询的行数

​ filtered&#xff1a;返回结果的行占需要读到的行(rows)的百分比

​ Extra&#xff1a;额外信息

数据库配置文件优化

查看命令&#xff1a;

show status 看系统的资源

show variables 看变量&#xff0c;在my.cnf配置文件里定义的

show warnings 查看最近一个sql语句产生的错误警告&#xff0c;看其他的需要看.err日志

show processlist显示系统中正在运行的所有进程。

my.cnf配置(针对innodb引擎)

query_cache_size &#61; 128M //查询增加缓存&#xff0c;由于服务中的很多查询可能在一段时间内结果都是一样的&#xff0c;增加缓存后能大大降低查询时间&#xff0c;如果结果有更新&#xff0c;则会去查询数据库

query_cache_type &#61; 1 //开启查询缓存

query_cache_limit &#61; 50M //单个查询允许的最大的缓存内存&#xff0c;超过限制则不会缓存

thread_cache_size &#61; 20 //缓存空闲的线程

innodb_buffer_pool_size &#61; 4G //指定大小的内存来缓冲数据和索引,根据MySQL手册,建议设置为服务器内存的50%&#xff1b;MYISAM引擎使用 key_buffer_size

innodb_log_buffer_size &#61; 32M //redo log 的写缓存

innodb_log_file_size &#61; 128M //日志文件大小 更大的设置可以提高性能&#xff0c;但也会增加恢复故障数据库所需的时间

innodb_log_files_in_group &#61; 3 //可以以循环方式将日志文件写到多个文件

其他大多数配置使用默认参数即可


推荐阅读
  • 本文详细介绍了如何正确设置Shadowsocks公共代理,包括调整超时设置、检查系统限制、防止滥用及遵守DMCA法规等关键步骤。 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • PHP面试题精选及答案解析
    本文精选了新浪PHP笔试题及最新的PHP面试题,并提供了详细的答案解析,帮助求职者更好地准备PHP相关的面试。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • CentOS下ProFTPD的安装与配置指南
    本文详细介绍在CentOS操作系统上安装和配置ProFTPD服务的方法,包括基本配置、安全设置及高级功能的启用。 ... [详细]
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 从CodeIgniter中提取图像处理组件
    本指南旨在帮助开发者在未使用CodeIgniter框架的情况下,如何独立使用其强大的图像处理功能,包括图像尺寸调整、创建缩略图、裁剪、旋转及添加水印等。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 提升工作效率:掌握15个键盘快捷键
    在日常工作中,熟练掌握计算机操作技巧能够显著提升工作效率。本文将介绍15个常用的键盘快捷键,帮助用户更加高效地完成工作任务。 ... [详细]
  • 网络安全实验:Telnet与SSH服务对比及抓包分析
    本实验旨在对比Telnet和SSH两种安全通信协议的服务差异,并通过搭建服务器和使用Wireshark抓包工具进行详细分析。 ... [详细]
  • 本文介绍了一种通过设置主题(Theme)来实现快速启动的Android引导页,并详细说明了如何避免因不同屏幕分辨率导致的图片拉伸问题。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
author-avatar
梁义鹏e
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有