项目上嵌套结果集查询,查询的列表再根据每个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的更多相关文章

  1. JDK7的Comparison method violates its general contract异常

    1.摘要 前一阵遇到了一个使用Collections.sort()时报异常的问题,跟小伙伴@zhuidawugui 一起排查了一下,发现问题的原因是JDK7的排序实现改为了TimSort,之后我们又进 ...

  2. java-collections.sort异常Comparison method violates its general contract!

    转载:http://www.tuicool.com/articles/MZreyuv 异常信息 java.lang.IllegalArgumentException: Comparison metho ...

  3. Comparison method violates its general contract

    生产环境出现的错误排查,错误log如下 java.lang.IllegalArgumentException: Comparison method violates its general contr ...

  4. 解决“Comparison method violates its general contract!”

    The ONE跑MaxProp.Prophet可能(取决于你JDK的版本)会报“java.lang.IllegalArgumentException: Comparison method violat ...

  5. 排序遇到问题 JDK7的Comparison method violates its general contract

    图解JDK7的Comparison method violates its general contract异常 楼主分析的很详细,能力有限,我看得迷迷糊糊的,不过大致知道这个错误的起因了.学习了,谢 ...

  6. Comparison method violates its general contract 解决

    java.lang.IllegalArgumentException: Comparison method violates its general contract! 原因 JDK7中的Collec ...

  7. 解决 Comparison method violates its general contract!

    问题:Comparison method violates its general contract!报错 Collections.sort(list, new Comparator<Integ ...

  8. 关于jdk7中 使用Collections的排序方法时报Comparison method violates its general contract!异常

    参考: Comparison method violates its general contract Comparison method violates its general contract! ...

  9. [ Error 分析] Comparison method violates its general contract!

    public static void main(String[] args) { List<Long> ret = new ArrayList<>(); int n = 103 ...

随机推荐

  1. Python 之并发编程之协程

    一.协程 ''' def gen(): for i in range(10): yield i # 初始化生成七函数 返回生成器对象,简称生成器 mygen = gen() for i in myge ...

  2. null值可以赋给引用变量,不能给基本类型

    下面正确的写法是? cbyte i=128 boolean i=null long i=0xfffL double i=0.9239d null表示没有地址:null可以赋值给引用变量,不能将null ...

  3. springMVC的 Converter转换器 和 Formatter

    Converter转换器 spring的Converter是可以将一种类型转换成另一种类型的一个对象, 自定义Converter需要实现Converter接口 日期转换器 import java.te ...

  4. 【剑指Offer面试编程题】题目1360:乐透之猜数游戏--九度OJ

    题目描述: 六一儿童节到了,YZ买了很多丰厚的礼品,准备奖励给JOBDU里辛劳的员工.为了增添一点趣味性,他还准备了一些不同类型的骰子,打算以掷骰子猜数字的方式发放奖品.例如,有的骰子有6个点数(点数 ...

  5. 3_05_MSSQL课程_Ado.Net_DataSet数据集

    //创建一个内存的数据集 DataSet ds=new DataSet("LJK"); //创建一张内存表 DataTable dt01=new DataTable("d ...

  6. DBCP 数据源获取连接

    Main package p1; import com.JdbcUtils; import org.apache.commons.dbcp.BasicDataSource; import org.ap ...

  7. tcp连接建立和断开

    TCP协议作为传输层主要协议之一,具有面向连接,端到端,可靠的全双工通信,面向字节流的数据传输协议. 1.TCP报文段 虽然TCP面试字节流,但TCP传输的数据单元却是报文段.TCP报文段分为TCP首 ...

  8. 【PAT甲级】1034 Head of a Gang (30 分)

    题意: 输入两个正整数N和K(<=1000),接下来输入N行数据,每行包括两个人由三个大写字母组成的ID,以及两人通话的时间.输出团伙的个数(相互间通过电话的人数>=3),以及按照字典序输 ...

  9. 学习不一样的vue5:vuex(完结)

    学习不一样的vue5:vuex(完结)  发表于 2017-09-10 |  分类于 web前端|  |  阅读次数 4029 首先 首发博客: 我的博客 项目源码: 源码(喜欢请star) 项目预览 ...

  10. 设计模式课程 设计模式精讲 10-2 外观模式coding

    1 代码演练 1.1 代码演练1(不使用外观模式) 1.2 代码演练2(使用外观模式) 2 应用核心 2.1 核心 2.2 零碎知识点 1 代码演练 1.1 代码演练1(不使用外观模式) 需求: 木木 ...