mysql性能优化及 Comparison method violates its general contract
项目上嵌套结果集查询,查询的列表再根据每个id进行查询计算,嵌套的sql如下:
SELECT SUM(IFNULL(t.out_rate,0)) totalOutRate, SUM(IF(IFNULL(t.pre_power,0)-IFNULL(t.power,0)<0,0,IFNULL(t.pre_power,0)-IFNULL(t.power,0))) totalPower
FROM ( SELECT i.id id,i.`station_id` station_id,i.`out_rate` out_rate,i.`upload_datetime` upload_datetime,i.power 'power',@i.power pre_power,@i.power:=i.power tem FROM data_inverter i,
(SELECT @i.power:=0) s WHERE i.`upload_datetime`='201712131020' AND i.`del_flag`=0 AND i.`station_id`='f45ca4ba3xxxxxx28003f5ca83137f6c' ORDER BY i.`upload_datetime` DESC) t
WHERE t.station_id='f45ca4xxxxxxx03f5ca83137f6c'
当数据库数据较少时候都没问题,但是数据库数据到达一定数量后,请求服务总是超时,查看日志发现sql语句正常,但是总是报服务响应超时,然后就觉得是sql的性能,于是对上面语句进行explain分析如下:

对上面的station_id创建索引后

在对upload_datetime创建索引后如下:

这样一对比,性能明显好转多了,但是又遇到其他问题,我程序中用到了map排序,现在报错为:
Comparison method violates its general contract!也就是说比较排序违反了一般规律。
然后网上查询最后更改代码如下解决
Collections.sort(monitorList, new Comparator<Stu>() {
@Override
public int compare(Stu p1,Stu p2) {
return p1.getWd().compareTo(p2.getWd());
/*if(p1.getWd()>p2.getWd()){
return 1;
}
else if(p1.getWd()==p2.gd()){
return 0;
}
else{
return -1 ; // 调用String中的compareTo()方法
}*/
}
}
之后,这个问题得到解决,然而当我将项目部署上以后,查询跨度拉大以后,又出现了服务器的问题错误信息主要包含:Last error is: Invoke remote method timeout.因为我们这个需求中没有关于分页的查询,所以,我怀疑是没有分页导致的问题,于是我就测试一下分页对查询性能的影响,首先,对mysql进行设置,查询后查看耗时
1 show profiles;
2 show variables;查看profiling 是否是on状态;
3 如果是off,则 set profiling = 1;
4 执行自己的sql语句;
5 show profiles;就可以查到sql语句的执行时间;
执行几次 后结果如下:

所以页容量越小查询效率也就越高。
mysql性能优化及 Comparison method violates its general contract的更多相关文章
- JDK7的Comparison method violates its general contract异常
1.摘要 前一阵遇到了一个使用Collections.sort()时报异常的问题,跟小伙伴@zhuidawugui 一起排查了一下,发现问题的原因是JDK7的排序实现改为了TimSort,之后我们又进 ...
- java-collections.sort异常Comparison method violates its general contract!
转载:http://www.tuicool.com/articles/MZreyuv 异常信息 java.lang.IllegalArgumentException: Comparison metho ...
- Comparison method violates its general contract
生产环境出现的错误排查,错误log如下 java.lang.IllegalArgumentException: Comparison method violates its general contr ...
- 解决“Comparison method violates its general contract!”
The ONE跑MaxProp.Prophet可能(取决于你JDK的版本)会报“java.lang.IllegalArgumentException: Comparison method violat ...
- 排序遇到问题 JDK7的Comparison method violates its general contract
图解JDK7的Comparison method violates its general contract异常 楼主分析的很详细,能力有限,我看得迷迷糊糊的,不过大致知道这个错误的起因了.学习了,谢 ...
- Comparison method violates its general contract 解决
java.lang.IllegalArgumentException: Comparison method violates its general contract! 原因 JDK7中的Collec ...
- 解决 Comparison method violates its general contract!
问题:Comparison method violates its general contract!报错 Collections.sort(list, new Comparator<Integ ...
- 关于jdk7中 使用Collections的排序方法时报Comparison method violates its general contract!异常
参考: Comparison method violates its general contract Comparison method violates its general contract! ...
- [ Error 分析] Comparison method violates its general contract!
public static void main(String[] args) { List<Long> ret = new ArrayList<>(); int n = 103 ...
随机推荐
- ubuntu13.10安装增强功能
步骤: 1>cd /mnt 2> ./VBoxLinuxAdditions.run 3>设置共享文件夹share 4>访问共享文件夹cd /media/sf_share not ...
- centos将uwsgi添加为系统服务
如果退出ssh 链接, 都会导致uwsgi进程关闭 这时, 我们需要进行管理软件管理uwsgi进行的运行, centos系统中我们采用 systemd, 让我们的项目变为系统服务 第一步: 首先 vi ...
- http://www.yyne.com/python使用-urllib-quote-进行-url-编码小技巧/
http://www.yyne.com/python使用-urllib-quote-进行-url-编码小技巧/
- springboot 模板
参考:https://blog.csdn.net/wangb_java/article/details/71775637
- Java记录4--string
1.toString所有的类都默认自动继承了Objiect类 2.Object类中的toString方法返回的时类的名字和该哈希表码组成的一个字符串, System.out.println(类对象名) ...
- java 8时间使用LocalDateTime,ZonedDateTime,LocalDate
前言 java 8的时间已经能够满足日常的使用,也方便理解.joda-time作为一个有优秀的时间组件也不得不告知使用者在java 8以后使用自带的时间 LocalDateTime以及ZonedDat ...
- 李德胜系列——李德胜和CPC人的初心
很久很久以前,有三条恶龙盘踞着村庄,恶龙们及其爪牙对村民敲骨吸髓,逼着村民卖儿鬻女.苦不堪言.但是村民们却对此压迫习以为常,逆来顺受. 后来,一个书生来到了这个村庄,告诉村民,不许跪,也没有人值得他们 ...
- 关于Android Studio中点9图的编译错误问题
Android中的点9图想必大家都非常熟悉了,能够指定背景图片的缩放区域和文本内容的显示区域,常见如QQ聊天界面的背景气泡这种文本内容不固定并需要适配的应用场景. 这里也给大家准备了一张图,详细介绍了 ...
- ssm 框架 使用ajax异步,实现登陆
只是简单写一下 js.jsp.和controller jsp <%@ page contentType="text/html;charset=UTF-8" language= ...
- AVL-Tree (平衡二叉树)
看到网上AVL-Tree大多数都是用相同的实现方式 —— 递归进行插入.删除.维护平衡等,而我比较喜欢用带父指针的数据结构,于是想了一下午,用C实现了一个迭代版的. 由于没有暂时没有好的画二叉树的工具 ...