欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

性能问题解决案例01sybase数据库内存问题

程序员文章站 2022-06-16 19:24:29
...

最近现场反馈问题,所有电子签章页面打不开文书(pdf式),后台日志没报任何错误,效果就是空白: 1、首先想到是签章的ocx控件问题,检查ocx控件安装,发现其他电脑也打不开文书,测试页面可以直接打开pdf文档,排除控件的问题。 vcD4KPHA+CiAgICAyoaK7s9LJy

最近现场反馈问题,所有电子签章页面打不开文书(pdf格式),后台日志没报任何错误,效果就是空白:

性能问题解决案例01sybase数据库内存问题

1、首先想到是签章的ocx控件问题,检查ocx控件安装,发现其他电脑也打不开文书,测试页面可以直接打开pdf文档,排除控件的问题。喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+CiAgICAyoaK7s9LJysfOxMrpz8LU2LP2zsrM4sHLo6y87LLpzsTK6c/C1Ni5psTco6zO0sPHysew0XBkZs7EyunPwtTYtb2xvrXYobDO0rXEzsS1taGxxL/CvNbQo6zIu7rzyrnTw29jeL/YvP608r+qzsTK6aOsvOyy6beiz9bT0LXEzsTK6cTc1f2zo8/C1Ni1vbG+tdijrNPQtcS4ybTgsrvPwtTYo6zE3M/C1Ni1vbG+tdi1xM7Eyum/ydLU1f2zo7Tyv6qho7zssulmdHC3os/WzsTK6ba8w7vOyszio6y2qM67zsrM4r7Ns/bU2rTTZnRwz8LU2NXiv+mhozwvcD4KPHA+CiAgICAzoaJmdHDPwtTY09Aysr2jrM/IyKXK/b7dv+LW0LLp0a+1vWNjYmijrNTZuPm+3WNjYmi002Z0cM/C1NijrLzssum3os/Wz8LU2MO7zsrM4qOssunRr2NjYmi3x7Ojwv2jrNfuv+zSstKqNTBzssXE3LLp0a+z9sC0o6zC/bXE0qo0oaI1t9bW06Os09DEzdDEtcS7sKOstci0/by4t9bW06OszsTK6crHv8nS1NW5yr6jrNLRvq22qM67tb3Oyszi1K3S8sHLo6yy6dGvY2NiaLXEc3Fs1rTQ0LfHs6PC/aGjPC9wPgo8cD4KICAgIDShorfWzvZzcWyjrLzyu6+683NxbM6qo7o8L3A+CjxwPgo8L3A+CjxwcmUgY2xhc3M9"brush:sql;">SELECT * FROM T_ZXLD_SYYH_FJ WHERE C_BH_SQ='76A1737D773BE344B7154AA479634FED' AND C_FJLX='syyhcx.zz.cxs.gy'

查询条件中C_BH_SQ是有索引的,理论上不应该这么慢呀,查看执行计划发现:

性能问题解决案例01sybase数据库内存问题

竟然没有用到索引,执行时间是274s。有索引却没用到,而且C_BH_SQ这个字段是主表主键,被选中概率应该非常高,怀疑是统计信息出问题了,使用

UPDATE all STATISTICS T_ZXLD_SYYH_FJ

更新统计信息,更新后执行原始sql,用了0.12s,执行计划也显示出使用了索引

性能问题解决案例01sybase数据库内存问题

问题看似解决了,但是偶尔还会出现打开非常慢(快的10s左右,慢的几分钟)的情况,怎么回事呢?检查过程中发现不仅仅这个页面偶尔慢,很多页面都偶尔非常慢,第一次打开慢,后续就很快了,等一会再打开又慢了。

查看p6spy日志发现(深颜色列是sql执行时间,只记录了执行2s以上的sql),把执行时间长的sql拿出来单独执行,很多第一次执行几十秒,第二次执行不到1s,可以确定问题原因了,系统内存较小。

性能问题解决案例01sybase数据库内存问题

sybase数据可以使用下面命令查看io情况:SET STATISTICS io ON"OFF

性能问题解决案例01sybase数据库内存问题

第一次执行结果:

性能问题解决案例01sybase数据库内存问题

第二次执行结果:

性能问题解决案例01sybase数据库内存问题

可以看到第一次从磁盘和内存都读取了内容,第二次physical reads是0,完全从内存读取当然查询快了,内存较小的话,其他查询数据读进内存后,把旧的数据从内存中清除,再查询旧数据还需要从磁盘读取到内存,所以经常出现第一次较慢,后续较快情况。最好办法就是加大内存,把常用的数据都读取到内存中缓存起来。

解决办法建议现场升级sybase到15.7,因为sybase12.5.3没有64位版本,32位最多使用内存2G,好多表都是上百万的数据,确实查询较慢。