在灵川遇见的一个棘手的经验型面试问题。【经验者入】
关于数据库的问题:
在开发环境下,按照一定的流量和压力,其中一张页面相应数据库的时间是5秒。
产品交给客户,前一个月的响应时间依旧是5秒,可一个月后,每次访问这张页面都是50秒多。问以你的经验,为什么?
环境前后不变,压力(包含访问量)不变,数据库总大小不变。
------解决方案--------------------本来想说
/*
前一个月和开发阶段时,数据库有缓存,常用数据常驻内存中
一个月后,访问量变小,客户不再测试了,开发人员也不再测试了,从网络上来的用户流量小,每次数据库都要重新查询,故时间变成50秒了,
*/
的,看到
//环境前后不变,压力(包含访问量)不变,数据库总大小不变。
后,我就不知道了!
------解决方案--------------------很简单,例如这个页面没有采用分页技术,或者是JavaScript或DataGrid分页,一个月前,数据量在千条或万条级别,当然比较快,等到数据量涨到百万千万级别,这个页面就受不了了。
------解决方案--------------------或者一个资料显示页面,如果索引的关键字段没有建索引,那么在数据量增大的情况下,响应时间自然也慢了。
------解决方案--------------------数据库总大小不变不等于数据量不变,就如刚开始数据库就分配了1T的空间,但原先数据条数只是少量的试验数据,而后来数据条数大增,就出现上面lvnoy所说的情况了。
------解决方案--------------------数据库大小不变??
硬件确定正常的话,属于内存泄露问题.
------解决方案--------------------数据库运行内存分配策略会不会有问题,可能你没有给数据库分配固定的物理内存,而是动态的,数据库会把查过的数据放到内存,加快下次查询的速度,只到内存到一个预设的值才会把原来的内存收回来。
------解决方案--------------------环境前后不变,压力(包含访问量)不变,数据库总大小不变,有没有可能一个月后日志文件增大,导致响应速度变慢?
总大小不变是什么意思没搞明白