我会对发生的事情进行细分,但是我的问题并没有太多关系,但我愿意接受建议.
间歇性地不知道它什么时候会发生,过去一个月发生了4次,一个用户,会点击应用程序中的某些内容.用户点击的内容仍然未知.当点击它时,它将在数据库上运行查询,该查询将生成大约700k行.
我检查了表运行查询并且索引看起来很好.
数据库为60GB,服务器上有32GB.
从数据库服务器上的日志中我看到高I / O但cpu和RAM保持不变.
一个应用服务器,cpu上升到大约75%.我可以找到工作进程,找到PID,但是当我杀死与工作进程关联的PID时,cpu会短暂停机然后再向上运行.
同时回收应用程序池,并重新启动IIS也会做同样的事情,cpu会短暂停机,然后再向右移动.
使服务器恢复正常的唯一办法就是重启.
所以我的建议如果这个查询是导致锁定的原因可以在框上增加内存以允许数据库被缓存并耗尽内存.我听过一次,但我不确定它是否属实.
存储是HP PAR 3,有3层,数据库几乎存在于SSD层.
哪个是更快的SSD或内存
解决方法
Which is faster SSD or Memory
DRAM比NAND闪存更快. RAM访问大约为100 ns,而SSD随机读取大约16,000 ns. Latency Numbers Every Programmer Should Know
您需要对正在发生的事情和原因进行系统分析.不要仅仅因为你听到另一个关于另一个系统的事情而改变事物.找出这个系统的问题.
幸运的是,DBMS系统往往具有性能工具. Oracle和其他RDBMS具有EXPLAIN PLAN以显示完整扫描和其他低效率.即使使用索引,查询也可以执行得非常糟糕.还有像Oracle AWR这样的系统性能报告可以找到瓶颈.如果您想进一步询问数据库性能,您也可以询问我们的姐妹网站https://dba.stackexchange.com/