作者:信步老街 | 来源:互联网 | 2023-06-21 19:59
马上打开活动监视器,发现结果还是和以前的一样,还是jt_user的用户CPU和IO最高,但是晚上jt_user对应的应用系统应该没有人用win10性能优化
马上打开活动监视器,发现结果还是和以前的一样,还是jt_user的用户CPU和IO最高,但是晚上jt_user对应的应用系统应该没有人用win10 性能优化。
马上打开SQL Profiler,事件仅选BatchCompleted,将CPU的阀值设为5,Duration的阀值设为10,这个阀值其实已经很低的了,也就晚上12点我才敢这么设定win10 性能优化。
结果收集的结果吓我一跳,在短短的13分钟内,竟然同一条语句执行了1479次win10 性能优化。
select top 1 end_time from Log_Network_circs order by end_time desc
Log_Network_circs这张表有2657563条记录,平均每秒查询1win10 性能优化。
89次,每分钟查询113win10 性能优化。8次,说白了就是秒对一个265万条记录的表进行排序。而且这条语句明显能写成:
select max(end_time) from Log_Network_circs
又短效率比原来的还高,想不明白win10 性能优化。以下是统计信息。
表 ’Log_Network_circs’win10 性能优化。扫描计数 3,逻辑读取 16352 次,物理读取 0 次,预读 0 次,lob 逻辑读取 0 次,lob 物理读取 0 次,lob 预读 0 次。
SQL Server 执行时间:
CPU 时间 = 1156 毫秒,占用时间 = 619 毫秒win10 性能优化。
![JTSQLServer性能如何优化?](https://img8.php1.cn/3cdc5/12c27/b64/319b8e26da98ac65.jpeg)
更要命的是,我发现这个表的记录数是时刻增长的,每秒4~5条win10 性能优化。insert 语句肯定肯定是让我那个这么低的阀值过滤掉了。
这个明显属于应用系统设计的问题,找开发商聊了win10 性能优化。
不是办法的办法
与开发商联系后,问清楚情况,确认该表的数据可以删除,以防万一,将数据库备份,然后truncate了这个表win10 性能优化。
但是这个不是一个最好的解决办法,我个人认为该问题应该在应用层上面解决win10 性能优化。我向开发商提出了以下几点建议:
1win10 性能优化。将查询的频率调低一点。
![JTSQLServer性能如何优化?](https://img8.php1.cn/3cdc5/12c27/b64/477170ee5f768ed7.jpeg)
2win10 性能优化。select max(end_time) from Log_Network_circs 能比原来这条语句性能好很多,如果只是为了查最后一条。
3win10 性能优化。直接写个触发器,在插入的时候把end_time存到别的表里面去,然后在这个表里面取end_time的值。
4win10 性能优化。定时执行清空这个表的数据。