mysql层级关系查询 我使用这条语句查询出来的结果depth的值不是我预想中的

mysql层级关系查询 我使用这条语句查询出来的结果depth的值不是我预想中的,第1张

我代码中有一段类似的,也是网上找的,你可以参考下

SELECT CATE_CODE AS ID,PARENT_CODE AS 父ID ,levels AS 级数, paths AS 路径 FROM (

SELECT CATE_CODE,PARENT_CODE,

@le:= IF (PARENT_CODE = 0 ,0,

IF( LOCATE( CONCAT('|',PARENT_CODE,':'),@pathlevel)   >0  ,    

SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',PARENT_CODE,':'),-1),'|',1) +1

,@le+1) ) levels

, @pathlevel:= CONCAT(@pathlevel,'|',CATE_CODE,':', @le ,'|') pathlevel

, @pathnodes:= IF( PARENT_CODE =0,',0',

CONCAT_WS(',',

IF( LOCATE( CONCAT('|',PARENT_CODE,':'),@pathall) >0  ,

SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',PARENT_CODE,':'),-1),'|',1)

,@pathnodes ) ,PARENT_CODE  ) )paths

,@pathall:=CONCAT(@pathall,'|',CATE_CODE,':', @pathnodes ,'|') pathall

FROM  doc_category,

(SELECT @le:=0,@pathlevel:='', @pathall:='',@pathnodes:='') vv

ORDER BY  PARENT_CODE,CATE_CODE

) src

ORDER BY CATE_CODE

您好,很高兴为您解答!

mysql是以文件的形式存储的;

mysql的IO是指数据库文件的读写,也就是检索数据和插入数据。

希望我的回答对您有用!

现象是,系统里的java连接mysql超时了,

于是去mysql的机器,查看/var/log/messages日志,查对应的时间点的情况

发现mysql被阻塞了blocked for more than 120 seconds,mysql的io非常之高,用top查看系统的负载也到达了50的样子

用mpstat查看cpu情况

好明显,都在等io

用iostat查看io情况,%util的值,一直在80%,99%之间变化

以为磁盘有问题,用dd测下速看看

从上面的结果看,也还好,没问题

以为可能磁盘有坏道,用下面命令也扫了一遍,没问题

结果也没有坏的块,这个过程,很耗时。

用show processlist命令查看mysql正在忙着什么,一看,也没什么任务在执行的

想看看mysql,研究写哪个文件时,最耗时的

从上面结果来看,xxl_job是最耗时的。知道点眉目了,因为公司的定时任务是用的xxljob,定时任务里,有每几秒执行的任务,我猜它的日志记录一定很大,于是查看一下

我的天,这个表的记录有千万!!!这些记录,没做定时任务来清理,由于都是一些没用的记录,所以这个表的数据我全清了

清了之后,再用iostat查看

%util一下子就降下来了,用iotop查看mysql进程的io也下降了

cpu的iowait也下降了

定义一个事件,让mysql定时清理30天前的日志记录

记录一下,希望对有需要的朋友也起一点提示


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8339208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存