CPU超负荷异常情况
问题
项目部署阶段,提交订单时总是出现cpu超负荷工作情况,导致机器卡死,订单提交失败。通过任务管理器可见下图所示:
通过任务管理器中进程信息(见下图)进行查看,可见正是由于项目运行的原因导致CPU超负荷工作。元凶究竟是谁?难道是因为输出的测试语句太多导致的,尝试减少测试输出语句。
追根溯源
经查,是在进行提交订单即执行3002交易时发生的错误。再次运行查看到底是那一步造成的,难道是操作数据表的缘故?用事实说话。如下图所示在执行到操作订单主表lm_bill时,程序便停止运行了,此时CPU已达到100%!
果然如此,执行到
SELECT * FROM lmapp.lm_addr where uid='U18353102068' AND addrid='1' limit 0,1000
Sql语句时,此刻在数据库中查询结果为空!而程序在一直处于等待状态!可见,自己的业务逻辑出现了严重漏洞!
捕获到以下错误:
java.sql.SQLException: Incorrect string value: '\xA2\x97\xE7\xB2\x92' for column 'medname' at row 1
擦,找了半天,原来是自己在网数据库中写数据时不知何时将特殊字符加进去了,以至于读表时出现了意想不到的异常。也是醉啦!
SQL语句如何精准查找某一时间段的数据
在项目开发过程中,自己需要查询出一定时间段内的交易。故需要在sql查询语句中加入日期时间要素,sql语句如何实现?
SELECT * FROM lmapp.lm_bill where tx_time Between '2015-12-20' And '2015-12-31';
仔细研究还是能够发现一些细节性的问题的。
SQL语句1
SELECT * FROM lmapp.lm_bill where merch_uid='S18853883587' AND tx_time Between '2015-09-17' AND '2015-10-27 24:00:0';
查询结果1
SQL语句2
SELECT * FROM lmapp.lm_bill where merch_uid='S18853883587' AND tx_time Between '2015-09-17 0:00:0' AND '2015-10-27 24:00:0';
查询结果2
SQL语句3
SELECT * FROM lmapp.lm_bill where merch_uid='S18853883587' AND tx_time Between '2015-09-17' AND '2015-10-27';
查询结果3
通过对比,可以清楚的发现以上3种sql语句所对应的查询结果均不相同。
若自己想只以日期为查询条件而忽略时间,则需要对sql语句做进一步的处理操作。
数据库中数据存储情况:
由此可见SQL语句1为满足条件的查询语句。
参考文献:
- 点赞
- 收藏
- 关注作者
评论(0)