`

产品详情页面加载慢(之前约7s-12s)

阅读更多
问题场景:客户反应网站上的产品详情页面打开时,速度很慢。
运行环境:
  数据库服务器 32位SQL Server 2005 开发者版SP2 开启了AWE
  应用服务器 JDK 1.6,Tomcat 6.0
解决步骤:
  1.火狐,Firebug>网络 查看打开该页面后的时间线 确实是数据查询耗时长导致页面加载慢。
  2.懒得拉代码配置测试环境了(这个项目不能实行热部署,改了程序不能直接看到效果,不太爽),直接在客户机器上通过SQL Server Profiler创建跟踪来获取耗时长的查询。跟踪时间只是点开产品详情页面前后大约15s,这段时间内有一条查询的CPU、IO占用都高的离谱,所以很容易就确定了就是这条慢查询导致的页面打开慢。通过报表看,这条查询平均占用CPU时间8s多,已经执行2W多次。。。。。
  3.将查询拷到Management Studio,添加参数值,设置统计io和time开关,开启实际执行计划,执行查询,分析结果。定位到union前后的两段查询条件重复,导致对连接的另一张大表逻辑读达到40W+,于是改写查询条件,时间缩短为0.15s左右。
  4.提交开发的同事修改,问题解决。

后记:
开发的同事修改之后,速度并无明显改善,于是乎,重来步骤2,发现当product_status字段(varchar类型)的值为'50'时,查询的代价要明显高于传入值为50的情况。这个很费解。。
上执行计划(计划中不同的部分)
Sort(TOP 1, ORDER BY:([t].[dbgndate] ASC))
 |--Filter(WHERE:(CONVERT_IMPLICIT(int,[db].[dbo].[product_info].[product_status] as [t].[product_status],0)=(50) AND CONVERT(varchar(100),[db].[dbo].[product_info].[dbgndate] as [t].[dbgndate],23)>=CONVERT(varchar(100),getdate(),23) AND ([db].[dbo].[product_info].[product_issue] as [t].[product_issue]='2' OR [db].[dbo].[product_info].[product_issue] as [t].[product_issue]='3')))
 |--Nested Loops(Inner Join, OUTER REFERENCES:([t].[uid]))
 |--Index Seek(OBJECT:([db].[dbo].[product_info].[ix_t_product_ulineid] AS [t]), 
 	SEEK:(
	  [t].[ulineid]
	  =[db].[dbo].[t_line].[uid] as [tl].[uid]
	) ORDERED FORWARD)

对product_info逻辑读5W次

Top(TOP EXPRESSION:((1)))
 |--Filter(WHERE:([db].[dbo].[product_info].[product_issue] as [t].[product_issue]='2' OR [db].[dbo].[product_info].[product_issue] as [t].[product_issue]='3'))
 |--Nested Loops(Inner Join, OUTER REFERENCES:([t].[uid]))
 |--Index Seek(OBJECT:([db].[dbo].[product_info].[ix_product_info_status_dbgndate] AS [t]), 
 	SEEK:(
	  [t].[cstatus]='50'), 
	  WHERE:([db].[dbo].[product_info].[ulineid] as [t].[ulineid]
	 	=[db].[dbo].[t_line].[uid] as [tl].[uid] 
	  AND CONVERT(varchar(100),[db].[dbo].[product_info].[dbgndate] as [t].[dbgndate],23)
	  >=CONVERT(varchar(100),getdate(),23)
	) ORDERED FORWARD)

对product_info逻辑读124W次

详细的不说了(现在我也说不清,只能感觉到要调整索引),上解决方案:
新增索引
create index ix_product_info_ulineid_status_dbgndate  on product_info(ulineid, product_status, dbgndate) include(product_issue, uid);


上新增索引后的执行计划:
   |--Nested Loops(Inner Join, OUTER REFERENCES:([tl].[uid], [Expr1038]) WITH ORDERED PREFETCH)
        |--Sort(ORDER BY:([tl].[dupdate] DESC))
        |    |--Index Seek(OBJECT:([db].[dbo].[t_line].[ix_t_line_cstatus_cissue] AS [tl]), SEEK:([tl].[cstatus]='50' AND [tl].[cissue]='2' OR [tl].[cstatus]='50' AND [tl].[cissue]='3') ORDERED FORWARD)
        |--Top(TOP EXPRESSION:((1)))
             |--Index Seek(OBJECT:([db].[dbo].[product_info].[ix_t_product_info_ulineid_cstatus_dbgndate] AS [t]), SEEK:([t].[ulineid]=[db].[dbo].[t_line].[uid] as [tl].[uid] AND [t].[product_status]='50'),  WHERE:(CONVERT(varchar(100),[db].[dbo].[product_info].[dbgndate] as [t].[dbgndate],23)>=CONVERT(varchar(100),getdate(),23) AND ([db].[dbo].[product_info].[product_issue] as [t].[product_issue]='2' OR [db].[dbo].[product_info].[product_issue] as [t].[product_issue]='3')) ORDERED FORWARD)
                 |         |    |    |--Clustered Index Seek(OBJECT:([db].[dbo].[product_info].[pk_y_product_info_uid] AS [tt]), SEEK:([tt].[uid]=[db].[dbo].[product_info].[uid] as [t].[uid]) ORDERED FORWARD)

对product_info逻辑读降为7K,CPU占用时间约为100ms
对比最初的开销,性能提升非常大,刚开始看执行计划,脑袋晕了,优化就暂时先做到这一步。
分享到:
评论

相关推荐

    ESP-12S.PDF

    ESP-12S(WT8266-S6) 模块规格书 ESP-12S(WT8266-S6) 是一款小型、低功耗、低成本的 Wi-Fi 模块,广泛应用于物联网、智能家居、工业自动化等领域。本规格书对 ESP-12S(WT8266-S6) 模块的规格、特性和应用进行了详细...

    ESP8266-12S 原理图1

    ESP8266-12S是一款基于ESP8266芯片的Wi-Fi模块,由深圳市汇思锐科技有限公司生产。ESP8266系列芯片是乐鑫科技(Espressif Systems)推出的一种高性能、低成本的Wi-Fi集成电路,广泛应用于物联网(IoT)设备,如智能...

    安信可ESP-12S WIFI文档

    ESP-12S WIFI模块的原理图和产品试用部分在文档中未给出具体内容,但可以推测,原理图部分可能会详细介绍ESP-12S WIFI模块的电路设计和各个部件的连接方式,产品试用部分则可能介绍如何对ESP-12S WIFI模块进行实际...

    Cisco 3750G-12S 3750G-24T 3750G-48TS 3750G系列机器固件

    Cisco 3750G-12S 3750G-24T 3750G-48TS 3750G系列机器固件 稳定版本

    MT7955-12W-12S1P-330mA-简化版-Rev2.2-2012-9-27.zip程序资料开关电源设计电路原理资料

    MT7955-12W-12S1P-330mA-简化版-Rev2.2-2012-9-27.zip程序资料开关电源设计电路原理资料MT7955-12W-12S1P-330mA-简化版-Rev2.2-2012-9-27.zip程序资料开关电源设计电路原理资料MT7955-12W-12S1P-330mA-简化版-Rev2.2...

    ESP-12S擦除

    相当于格式化,使用该文件可以清空ESP-12SWIFI模块的所有内容

    ESP-12S-A9-A9G-GPRS-Node-v1.0-masterg

    标题 "ESP-12S-A9-A9G-GPRS-Node-v1.0-master" 提供的信息表明,这是一个关于基于ESP模块(可能是ESP8266或ESP32的变体ESP-12S)与A9G模块集成的项目,用于实现GPRS功能的节点设备,版本为1.0,并且是基于Arduino ...

    MQTT_ESP-12S_DIO_32Mbit_2.0.0_2020311.bin

    ESP8266 的MQTT AT固件,可以通过AT指令连接阿里云,并使用MQTT进行主题的订阅与发布

    marantz vp12s4投影机说明书

    ### 马兰士VP-12S4投影机使用手册关键知识点 #### 一、安全警示与操作注意事项 在阅读《马兰士VP-12S4投影机使用手册》时,首先需要关注的是安全警告及操作注意事项,这对于确保设备的安全使用至关重要。 1. **...

    ESP-12S 天猫精灵音控雪花灯

    ESP-12S音控雪花灯-硬件到软件一、功能介绍二、雪花灯硬件三、软件教程1、下载并安装Arduino IDE2、下载并安装blinker APP3、修改编译并上传程序四、 绑定天猫精灵(前提要有一台智能音箱)五、ESP8266控制全彩灯环...

    Haier海尔燃气热水器JSQ24-12S1(12T)使用说明书用户手册图解图示pdf电子版下载.pdf

    - 本产品遵循国家标准GB 6932-2015,适用于中国境内销售和使用。 总的来说,这款海尔燃气热水器的使用和维护涉及到了安全、效率和用户友好性,用户在使用前应详细阅读说明书,以确保安全、正确地安装和操作。此外...

    TI-TPD12S520.pdf

    TI-TPD12S520 HDMI Receiver Port Protection and Interface Device TI-TPD12S520是一款单芯片高清晰度多媒体接口(HDMI)接收器端口保护和接口设备,专门为HDMI接收器提供静电放电(ESD)保护和接口功能。该器件...

    新12S6 消防工程图集

    造价咨询企业按照造价常用文件

    精品资料系列2021-新12S2给水工程.pdf

    在具体介绍知识点之前,我们首先需要明确,由于提供的信息中缺乏足够的具体内容,无法生成精确的知识点。不过根据标题“精品资料系列2021-新12S2给水工程.pdf”和描述“精品资料系列2021-新12S2给水工程.pdf”我们...

    TI-TPD12S015A.pdf

    TPD12S015A 的详细产品信息中包括了该芯片的特点、应用场景、技术信息、订购信息、开发资源、技术支持等信息。 TPD12S015A 是一款功能强大且灵活的 HDMI 配套芯片,适用于各种电子产品的设计和开发。

    esp用arduinoide对接onenet.zip_ESP12S Arduino_esp12s对接onenet_esp8266

    esp8266开发控制,开发硬件为arduino

    思科3750 L3 带三层路由功能IOS文件。c3750-ipbasek9-mz.122-55.SE12.bin

    Catalyst 3750G-12S-SD Switch Catalyst 3750G-24PS Switch Catalyst 3750G-24T Switch Catalyst 3750G-24TS Switch Catalyst 3750G-24TS-1U Switch Catalyst 3750G-48PS Switch Catalyst 3750G-48TS Switch ...

    ESP8266模块官方AD封装库,包括ESP-12S/ESP-12E&F封装等-电路方案

    免责声明:附件内容分享的ESP8266模块官方AD封装库,包括ESP-12S/ESP-12E&F封装等,仅为方便广大网友使用。我司虽然在制作过程中已经仔细核对和检查,但烦请用户使用前一定要仔细核对,我司对于因用户使用该封装...

    LM2576HVS-12规格书

    - **TTL 关断功能**:具备 TTL 控制的关断功能,关断模式下的功耗极低,仅约 50μA。 - **过温保护和限流保护**:内置过温保护和周期性电流限制功能,确保在故障条件下设备的安全运行。 #### 三、应用领域 - **...

Global site tag (gtag.js) - Google Analytics