Mysql数据库如何调优

文章介绍了MySQL数据库调优的关键点,包括何时为查询字段添加索引,列举了索引可能失效的情况,如使用函数、左模糊查询等,并提供了强制使用索引的语法。此外,还强调了查询分析器EXPLAIN的使用来检查索引生效情况。在数据库配置方面,提到了调整query_cache_size、innodb_buffer_pool_size等参数以提升性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL数据库调优

索引

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

2、索引失效的情况:

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

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

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

​ 4、!= not <>

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

​ 6、字段类型不同

​ 7、比较两列值 where 索引列A=索引列B

​ 8、order by 单独使用

​ 等等

3、强制使用索引 force index(索引名) 例:SELECT * FROM subscription force index(expires_time) order by expires_time desc(order by单独使用,索引失效)

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

​ id:表示sql的执行顺序(sql中会有子查询),id越大优先级越高,同级别在上而下执行

​ select_type:

​ SIMPLE:查询中不包含子查询或者UNION

​ PRIMARY:查询中包含子查询,最外层查询则被标记为PRIMARY

​ SUBQUERY:在SELECT或WHERE列表中包含了子查询,该子查询被标记为SUBQUERY

​ DERIVED:在FROM列表中包含的子查询被标记为:DERIVED(衍生)

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

​ UNION RESULT:从UNION表获取结果的SELECT

​ 等等

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

​ possible_keys:可能使用的索引

​ key:真正使用到的索引

​ key_len:索引使用的字节数

​ ref:连接匹配条件

​ rows:查询记录大概需要查询的行数

​ filtered:返回结果的行占需要读到的行(rows)的百分比

​ Extra:额外信息

数据库配置文件优化

查看命令:

show status 看系统的资源

show variables 看变量,在my.cnf配置文件里定义的

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

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

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

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

query_cache_type = 1 //开启查询缓存

query_cache_limit = 50M //单个查询允许的最大的缓存内存,超过限制则不会缓存

thread_cache_size = 20 //缓存空闲的线程

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

innodb_log_buffer_size = 32M //redo log 的写缓存

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

innodb_log_files_in_group = 3 //可以以循环方式将日志文件写到多个文件

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

如风之夏

感谢,你的鼓励是我前进的动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值