一条记录从远程数据库读出到本地服务器(开发)上显示出来用了8秒左右,读出一段数据列表(20条)用了14秒左右,感觉比较慢,连接本地数据库基本就2秒,用了oscache也没有效果(数据读取使用Ajax,缓存不起作用吧?),想问问可能是那里的问题,怎么去查找?这和数据库配置有关系么?SQLServer 2000,远程数据库不是我控制的,不知道会不会是它造成的影响,如果它配置不好,我本地调试是没有作用的.

解决方案 »

  1.   

    先看看远程数据库执行sql的时间,再看看ajax是否写的很复杂
      

  2.   

    oscache怎么会不起作用。oscache和ajax没任何关系http://www.jopener.cn/category/cache-solutions/
      

  3.   

    正在用一楼的方法调试==============================================[TIMEinfo] 14:10:07  ##NewsAdminDAO_isAdmin() IN
    [SQLinfo] SELECT yhid FROM yuloostudy_site.dbo.news_admin where yhm='kaka' and yhmm='123456'  ##NewsAdminDAO_isAdmin()
    [TIMEinfo] 14:10:07  ##NewsAdminDAO_isAdmin() OUT
    [TIMEinfo] 14:10:07  ##InfoManager_newslistinit IN
    [TIMEinfo] 14:10:07  ##InfoManagerAction_getNewsListLimit() IN
    [TIMEinfo] 14:10:07  ##NewsContentDAO_useSQLServer() IN
    [TIMEinfo] 14:10:12  ##NewsContentDAO_useSQLServer() OUT
    [TIMEinfo] 14:10:12  ##NewsContentDAO_getNewsListLimit() IN
    [SQLinfo] SELECT TOP 20 xwid,xwbt,xwzt,xwmlid,xwcjsj,xwgqsj,xwdjl,xwsx,xwfbr FROM yuloostudy_site.dbo.news_content WHERE (xwid NOT IN(SELECT TOP 0 xwid FROM yuloostudy_site.dbo.news_content ORDER BY xwid)) ORDER BY xwid  ##NewsContentDAO_getNewsListLimit()
    [TIMEinfo] 14:10:13  ##NewsContentDAO_getNewsListLimit() OUT
    [TIMEinfo] 14:10:13  ##InfoManagerAction_getNewsListLimit() OUT
    [TIMEinfo] 14:10:13  ##InfoManagerAction_getNewsCount() IN
    [TIMEinfo] 14:10:13  ##NewsContentDAO_useSQLServer() IN     <=== 一次莫名其妙的进入
    [TIMEinfo] 14:10:17  ##NewsContentDAO_useSQLServer() OUT    <=== 什么也没做就出去了
    [TIMEinfo] 14:10:17  ##NewsContentDAO_getNewsCount() IN
    [SQLinfo] select count(xwid) as total from yuloostudy_site.dbo.news_content;  ##NewsContentDAO_getNewsCount()
    [TIMEinfo] 14:10:18  ##NewsContentDAO_getNewsCount() OUT
    [TIMEinfo] 14:10:18  ##InfoManagerAction_getNewsCount() OUT
    [TIMEinfo] 14:10:18  ##InfoManager_gnewslistinit OUT发现时间延迟就是耗在了useSQLServer()方法里,这个方法是先new 一个对象,然后用obj.useSQLServer()来指定数据库,判断问题可能是重复调用了数据库连接方法:
    public void useSQLServer()
    {
    LogOut.TimeBreak("##NewsContentDAO_useSQLServer() IN");
    dbFlag="SQLServer";
    conn=SQLServerConnection.getConn();
    dbname=SQLServerConnection.getDBname();
    LogOut.TimeBreak("##NewsContentDAO_useSQLServer() OUT");
    }
    ================================================================oscache是起作用的,用Ajax提交数据到数据库保存后,刷列表页面,没有变化
    开始认为读页面慢是没有读缓存,实际可能是连接的事情.但是既然缓存了页面,为什么还要使用连接,应该不走业务逻辑了把?Ajax的原因?