优化mysql

-- 查询日志是否开启
show VARIABLES LIKE 'slow_query_log'
-- 打开慢查询日志(查完了记得关)
set GLOBAL slow_query_log  = ON;
-- 没有索引的查询会不会被记录到慢查询日志中
show VARIABLES LIKE 'log_queries_not_using_indexes'
-- 打开记录 
set GLOBAL log_queries_not_using_indexes = ON
-- 时间超过多少秒会被记录到慢查询日志
show VARIABLES LIKE 'long_query_time'
SET long_query_time = 1.00000
-- 慢查询日志文件存放在哪
show VARIABLES LIKE 'slow_query_log_file' 
-- 设置慢查询日志地址
set GLOBAL slow_query_log_file = '自定义路径'

1、对sql语句及索引优化

对查询进行优化,要尽量避免全表扫描,首先应考虑在where 及 order by 涉及的列上建立索引

where条件中or两边的字段没有索引时尽量少用or,or两边的字段中,如果有一个不是索引字段会造成查询不走索引的情况

当in里面子查询的数据少可以用in;外层查询的数据少,而内层查询的数据量大,则用exists。

不要使用%前模糊查询,这样会导致索引失效而进行全表扫描,但可以使用右模糊查询

避免在where子句后面对字段进行表达式操作,如果非要运算可以写在等号后面,比如where amount*2=200改成where amount = 200/2。

如果是联合索引存在范围查询的话,比如between、>、<等条件时会造成索引字段失效。

使用JOIN优化,利用小表去驱动大表,减少嵌套循环中的循环次数

2、系统参数调优

thread_concurrency = 8
#并行线程数,该参数取值为服务器逻辑CPU数量*2,比如有两个双核的cpu,那么thread_concurrency的值应该设为8。这是个重点优化参数。

innodb_buffer_pool_size = 128M
# innodb使用一个缓冲池来保存索引和原始数据;如果表里存的大对象字段(Blob)可以设置大些;如果都是文本数据,只是数据量大,那就128M就够了。这里设置越大,在存取表里面数据时所需要的磁盘I/O越少。设置这个变量不要超过到服务器物理内存大小的80%以上,这样会导致操作系统换页颠簸。
————————————————
版权声明:本文为CSDN博主「金士曼灬」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_66929791/article/details/126404785

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值