8.不好意思,现在你看到的只有两条线程在执行。但即使只有两条语句,通过dstat iostat分析,服务器的压力还在,嗯,是这些语句的问题了,因为调了一个钟,他们都一直存在。我试图explain一条语句的时候,居然等了很久都没有解释出来,看来sql语句得进一步优化呀。所以得到原来是这些开发人员编写的语句,造成服务器性能的问题,交给开发人员去解决吧。结果:innodb引擎是基于行读锁的,当以下语句对多个表连表查询时,会进行笛卡儿积运算,消耗CPU资源,如果再没有索引过滤,呵呵。一定要小心,因为会产生大量的中转临时表,查询也会占用很久很久的时间。如果不小心,成了僵死线程。以下就是一个很好的案例。[root@testmysql1 ~]# mysql -u root -p -e "show full processlist" | grep -i SELECTEnter password: 411436xx192.168.209.101:36671iosmQuery2409Copying to tmp tableSELECT b.basestationid AS basestationid, b.bname AS basestationname,b.id AS stationid,b.sname AS stationname,u.urgencyrepairCount,r.routineCount FROM (SELECT station.id,station.name AS sname,aab.basestationId,aab.name AS bname,aab.areaId FROM ( SELECT * FROM networkresourcemanage.associate_area_basestation, networkresourcemanage.BaseStation_WLAN WHERE basestationType = 'BaseStation_WLAN' AND basestationId => 411746xx 192.168.206.229:49627iosmQuery102Copying to tmp tableSELECT b.basestationid AS basestationid, b.bname AS basestationname,b.id AS stationid,b.sname AS stationname,u.urgencyrepairCount,r.routineCount \n\tFROM (SELECT station.id,station.name AS sname,aab.basestationId,aab.name AS bname,aab.areaId \n\tFROM ( SELECT * FROM networkresourcemanage.associate_area_basestation, networkresourcemanage.BaseStation_WLAN WHERE basestationType = 'BaseStation_WLAN' AND basestationId => ##################################################################
1.tomcat服务器的底层架构java内核是公司自己开发的,无论是增删改查操作,innodb都会产生
commit 和rollback,造成服务器很忙(Com_数值过50%),java内核在整改,这次不是主要原因。
2.之前服务器都是使用默认配置,数据库层面没有调优,以前事故频繁,现在已经解决了,这次不是主要原因。
3.开发人员处理sql语句经常会出错,忘记使用索引呀,语句臃肿,是这次事故的重要原因。
#################################################################