SQL SERVER2008访问数据慢

grubbyer 2018-01-11 07:59:49
以前只有一个A库,犹豫业务需要,又多添加了一个B库,在B库操作玩之后,第二天,A库的数据访问很慢,求解决办法。
...全文
759 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ChinaITOldMan 2018-01-16
  • 打赏
  • 举报
回复
把执行计划帖出来看看
grubbyer 2018-01-11
  • 打赏
  • 举报
回复
[quote=引用 2 楼 yenange 的回复:]
一般出现这种状况,我就重启服务器就解决了,但是不能天天这样子重启。
刚刚重启服务器,现在不会慢了。服务器的硬盘转速是7200K的,会不会有点慢了。

grubbyer 2018-01-11
  • 打赏
  • 举报
回复

select this_.DOCUMENT_ID as DOCUMENT1_1_1_, this_.DOCUMENT_NR as DOCUMENT2_1_1_, this_.INVOICE_TYPE as INVOICE3_1_1_, this_.DOCUMENT_DATE as DOCUMENT4_1_1_, this_.DOCUMENT_CREATE_DATE as DOCUMENT5_1_1_, this_.CUSTOMER_NR as CUSTOMER6_1_1_, this_.CUSTOMER_NAME as CUSTOMER7_1_1_, this_.CUSTOMER_TAX_NR as CUSTOMER8_1_1_, this_.CUSTOMER_ADDRESS as CUSTOMER9_1_1_, this_.CUSTOMER_BANKACCOUNT as CUSTOMER10_1_1_, this_.MEMO as MEMO1_1_, this_.ISSUED as ISSUED1_1_, this_.SPLIT_MERGE_STATE as SPLIT13_1_1_, this_.SPLIT_MERGE_REF_NR as SPLIT14_1_1_, this_.ISSUER as ISSUER1_1_, this_.CHECKER as CHECKER1_1_, this_.PAYEE as PAYEE1_1_, this_.SELLER_TAX_NR as SELLER18_1_1_, this_.SELLER_ADDRESS_TEL as SELLER19_1_1_, this_.SELLER_BANK_ACCOUNT as SELLER20_1_1_, this_.LIST_NAME as LIST21_1_1_, this_.MACHINE_NR as MACHINE22_1_1_, this_.DISCOUNT_VALUE as DISCOUNT23_1_1_, this_.DISCOUNT_TAX as DISCOUNT24_1_1_, this_.DISCOUNT_RATE as DISCOUNT25_1_1_, this_.INCLUDETAX as INCLUDETAX1_1_, this_.UPLOAD as UPLOAD1_1_, this_.AUTO_MERGE as AUTO28_1_1_, this_.ALLOW_ISSUE as ALLOW29_1_1_, this_.IS_MANUAL as IS30_1_1_, this_.REVERSED_NOTICE_NR as REVERSED31_1_1_, this_.REFINVOICECODE as REFINVO32_1_1_, this_.REFINVOICENR as REFINVO33_1_1_, this_.STR1 as STR34_1_1_, this_.STR2 as STR35_1_1_, this_.STR3 as STR36_1_1_, this_.STR4 as STR37_1_1_, this_.STR5 as STR38_1_1_, this_.BOOL1 as BOOL39_1_1_, this_.BOOL2 as BOOL40_1_1_, this_.BOOL3 as BOOL41_1_1_, this_.BOOL4 as BOOL42_1_1_, this_.BOOL5 as BOOL43_1_1_, this_.CONSIGNER_NAME as CONSIGNER44_1_1_, this_.CONSIGNER_TAX_NR as CONSIGNER45_1_1_, this_.SHIPPER_NAME as SHIPPER46_1_1_, this_.SHIPPER_TAX_NR as SHIPPER47_1_1_, this_.ORIGIN_VIA_ARRIVAL_PLACE as ORIGIN48_1_1_, this_.VEHICLE_KIND_NO as VEHICLE49_1_1_, this_.VEHICLE_TONNAGE as VEHICLE50_1_1_, this_.FREIGHT_MEMO as FREIGHT51_1_1_, items2_.DOCUMENT_ID as DOCUMENT37_3_, items2_.DOCUMENT_ITEM_ID as DOCUMENT1_3_, items2_.ITEM_INDEX as ITEM38_3_, items2_.DOCUMENT_ITEM_ID as DOCUMENT1_2_0_, items2_.SEQUENCE_NR as SEQUENCE2_2_0_, items2_.PRODUCT_NR as PRODUCT3_2_0_, items2_.PRODUCT_NAME as PRODUCT4_2_0_, items2_.SPEC as SPEC2_0_, items2_.UNIT as UNIT2_0_, items2_.QUANTITY as QUANTITY2_0_, items2_.PRICE as PRICE2_0_, items2_.VALUE as VALUE2_0_, items2_.TAX_RATE as TAX10_2_0_, items2_.INCLUDE_TAX as INCLUDE11_2_0_, items2_.TAX as TAX2_0_, items2_.TAX_ITEM as TAX13_2_0_, items2_.DISCOUNT_RATE as DISCOUNT14_2_0_, items2_.DISCOUNT_TAX as DISCOUNT15_2_0_, items2_.DISCOUNT_VALUE as DISCOUNT16_2_0_, items2_.STR1 as STR17_2_0_, items2_.STR2 as STR18_2_0_, items2_.STR3 as STR19_2_0_, items2_.STR4 as STR20_2_0_, items2_.STR5 as STR21_2_0_, items2_.DBL1 as DBL22_2_0_, items2_.DBL2 as DBL23_2_0_, items2_.DBL3 as DBL24_2_0_, items2_.DBL4 as DBL25_2_0_, items2_.DBL5 as DBL26_2_0_, items2_.bool1 as bool27_2_0_, items2_.bool2 as bool28_2_0_, items2_.bool3 as bool29_2_0_, items2_.bool4 as bool30_2_0_, items2_.bool5 as bool31_2_0_, items2_.GOODS_NO_VER as GOODS32_2_0_, items2_.GOODS_TAX_NO as GOODS33_2_0_, items2_.TAX_PRE as TAX34_2_0_, items2_.TAX_PRE_CON as TAX35_2_0_, items2_.ZERO_TAX as ZERO36_2_0_ from TBL_PA_VAT_DOCUMENT this_ left outer join TBL_PA_VAT_DOCUMENT_ITEM items2_ on this_.DOCUMENT_ID=items2_.DOCUMENT_ID where this_.DOCUMENT_NR=@P0;
TBL_PA_VAT_DOCUMENT数据量58万条 ,TBL_PA_VAT_DOCUMENT_ITEM数据量175万条。
吉普赛的歌 2018-01-11
  • 打赏
  • 举报
回复
SELECT TOP 10 OBJECT_NAME(qt.objectid, qt.dbId)  AS procName,
       DB_NAME(qt.dbId)                   AS [db_name],
       qt.text                            AS SQL_Full,
       SUBSTRING(
           qt.text,
           (qs.statement_start_offset / 2) + 1,
           (
               (
                   CASE statement_end_offset
                        WHEN -1 THEN DATALENGTH(qt.text)
                        ELSE qs.statement_end_offset
                   END 
                   - qs.statement_start_offset
               ) / 2
           ) + 1
       )                                  AS SQL_Part --统计对应的部分语句
       ,
       qs.creation_time,
       qs.last_execution_time,
       qs.execution_count,
       qs.last_elapsed_time / 1000000     AS lastElapsedSeconds,
       qs.last_worker_time / 1000000      AS lastCpuSeconds,
       CAST(
           qs.total_elapsed_time / 1000000.0 / (
               CASE 
                    WHEN qs.execution_count = 0 THEN -1
                    ELSE qs.execution_count
               END
           ) AS DECIMAL(28, 2)
       )                                  AS avgDurationSeconds,
       CAST(qs.last_logical_reads AS BIGINT) * 1.0 / (1024 * 1024) * 8060 AS 
       lastLogicReadsMB,
       qs.last_logical_reads,
       qs.plan_handle
FROM   sys.dm_exec_query_stats qs
       CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS p
WHERE  qs.last_execution_time >= CONVERT(CHAR(10),GETDATE(),120)+' 08:00'	--今天8点之后的慢SQL
       AND qs.last_elapsed_time >= 3 * 1000 * 1000							--只取执行时间大于 3 秒的记录
       AND qt.[text] NOT LIKE '%Proc_DBA%'
ORDER BY
       qs.last_worker_time DESC
先查一下慢SQL, 时间你自己改一下。 另外, CPU, 内存, 磁盘IO的情况也贴出来看看。 慢的时候, 再看下有没有堵塞?
SELECT * FROM sys.sysprocesses AS s WHERE s.spid>50 AND s.blocked>0

--查到上面的spid,然后查下 spid 对应的语句
DBCC INPUTBUFFER( ? )
OwenZeng_DBA 2018-01-11
  • 打赏
  • 举报
回复
数据库慢和六大因素有关。你提供的信息太少了,没办法分析出来原因,建议先从慢语句和等待开始去排查。找到原因先
grubbyer 2018-01-11
  • 打赏
  • 举报
回复
引用 8 楼 yenange 的回复:
[quote=引用 6 楼 linziwen333 的回复:] 另外, 这个SQL 执行出来的结果一般有多少行?
最多不超过20条数据。[/quote] #5 中的索引你先创建吧[/quote] 恩,我已经创建了,到时候在看看吧!
吉普赛的歌 2018-01-11
  • 打赏
  • 举报
回复
引用 6 楼 linziwen333 的回复:
另外, 这个SQL 执行出来的结果一般有多少行?
最多不超过20条数据。[/quote] #5 中的索引你先创建吧
OwenZeng_DBA 2018-01-11
  • 打赏
  • 举报
回复
这么做优化有点困难,还是要先整体衡量找到慢在什么地方。然后再深入到语句级别的优化比较好
grubbyer 2018-01-11
  • 打赏
  • 举报
回复
引用 5 楼 yenange 的回复:
--先创建索引
CREATE INDEX ix_TBL_PA_VAT_DOCUMENT_DOCUMENT_ID_DOCUMENT_NR ON TBL_PA_VAT_DOCUMENT(DOCUMENT_ID,DOCUMENT_NR)
CREATE INDEX ix_TBL_PA_VAT_DOCUMENT_ITEM_DOCUMENT_ID ON TBL_PA_VAT_DOCUMENT_ITEM(DOCUMENT_ID)

--再执行
SELECT this_.DOCUMENT_ID               AS DOCUMENT1_1_1_,
       this_.DOCUMENT_NR               AS DOCUMENT2_1_1_,
       this_.INVOICE_TYPE              AS INVOICE3_1_1_,
       this_.DOCUMENT_DATE             AS DOCUMENT4_1_1_,
       this_.DOCUMENT_CREATE_DATE      AS DOCUMENT5_1_1_,
       this_.CUSTOMER_NR               AS CUSTOMER6_1_1_,
       this_.CUSTOMER_NAME             AS CUSTOMER7_1_1_,
       this_.CUSTOMER_TAX_NR           AS CUSTOMER8_1_1_,
       this_.CUSTOMER_ADDRESS          AS CUSTOMER9_1_1_,
       this_.CUSTOMER_BANKACCOUNT      AS CUSTOMER10_1_1_,
       this_.MEMO                      AS MEMO1_1_,
       this_.ISSUED                    AS ISSUED1_1_,
       this_.SPLIT_MERGE_STATE         AS SPLIT13_1_1_,
       this_.SPLIT_MERGE_REF_NR        AS SPLIT14_1_1_,
       this_.ISSUER                    AS ISSUER1_1_,
       this_.CHECKER                   AS CHECKER1_1_,
       this_.PAYEE                     AS PAYEE1_1_,
       this_.SELLER_TAX_NR             AS SELLER18_1_1_,
       this_.SELLER_ADDRESS_TEL        AS SELLER19_1_1_,
       this_.SELLER_BANK_ACCOUNT       AS SELLER20_1_1_,
       this_.LIST_NAME                 AS LIST21_1_1_,
       this_.MACHINE_NR                AS MACHINE22_1_1_,
       this_.DISCOUNT_VALUE            AS DISCOUNT23_1_1_,
       this_.DISCOUNT_TAX              AS DISCOUNT24_1_1_,
       this_.DISCOUNT_RATE             AS DISCOUNT25_1_1_,
       this_.INCLUDETAX                AS INCLUDETAX1_1_,
       this_.UPLOAD                    AS UPLOAD1_1_,
       this_.AUTO_MERGE                AS AUTO28_1_1_,
       this_.ALLOW_ISSUE               AS ALLOW29_1_1_,
       this_.IS_MANUAL                 AS IS30_1_1_,
       this_.REVERSED_NOTICE_NR        AS REVERSED31_1_1_,
       this_.REFINVOICECODE            AS REFINVO32_1_1_,
       this_.REFINVOICENR              AS REFINVO33_1_1_,
       this_.STR1                      AS STR34_1_1_,
       this_.STR2                      AS STR35_1_1_,
       this_.STR3                      AS STR36_1_1_,
       this_.STR4                      AS STR37_1_1_,
       this_.STR5                      AS STR38_1_1_,
       this_.BOOL1                     AS BOOL39_1_1_,
       this_.BOOL2                     AS BOOL40_1_1_,
       this_.BOOL3                     AS BOOL41_1_1_,
       this_.BOOL4                     AS BOOL42_1_1_,
       this_.BOOL5                     AS BOOL43_1_1_,
       this_.CONSIGNER_NAME            AS CONSIGNER44_1_1_,
       this_.CONSIGNER_TAX_NR          AS CONSIGNER45_1_1_,
       this_.SHIPPER_NAME              AS SHIPPER46_1_1_,
       this_.SHIPPER_TAX_NR            AS SHIPPER47_1_1_,
       this_.ORIGIN_VIA_ARRIVAL_PLACE  AS ORIGIN48_1_1_,
       this_.VEHICLE_KIND_NO           AS VEHICLE49_1_1_,
       this_.VEHICLE_TONNAGE           AS VEHICLE50_1_1_,
       this_.FREIGHT_MEMO              AS FREIGHT51_1_1_,
       items2_.DOCUMENT_ID             AS DOCUMENT37_3_,
       items2_.DOCUMENT_ITEM_ID        AS DOCUMENT1_3_,
       items2_.ITEM_INDEX              AS ITEM38_3_,
       items2_.DOCUMENT_ITEM_ID        AS DOCUMENT1_2_0_,
       items2_.SEQUENCE_NR             AS SEQUENCE2_2_0_,
       items2_.PRODUCT_NR              AS PRODUCT3_2_0_,
       items2_.PRODUCT_NAME            AS PRODUCT4_2_0_,
       items2_.SPEC                    AS SPEC2_0_,
       items2_.UNIT                    AS UNIT2_0_,
       items2_.QUANTITY                AS QUANTITY2_0_,
       items2_.PRICE                   AS PRICE2_0_,
       items2_.VALUE                   AS VALUE2_0_,
       items2_.TAX_RATE                AS TAX10_2_0_,
       items2_.INCLUDE_TAX             AS INCLUDE11_2_0_,
       items2_.TAX                     AS TAX2_0_,
       items2_.TAX_ITEM                AS TAX13_2_0_,
       items2_.DISCOUNT_RATE           AS DISCOUNT14_2_0_,
       items2_.DISCOUNT_TAX            AS DISCOUNT15_2_0_,
       items2_.DISCOUNT_VALUE          AS DISCOUNT16_2_0_,
       items2_.STR1                    AS STR17_2_0_,
       items2_.STR2                    AS STR18_2_0_,
       items2_.STR3                    AS STR19_2_0_,
       items2_.STR4                    AS STR20_2_0_,
       items2_.STR5                    AS STR21_2_0_,
       items2_.DBL1                    AS DBL22_2_0_,
       items2_.DBL2                    AS DBL23_2_0_,
       items2_.DBL3                    AS DBL24_2_0_,
       items2_.DBL4                    AS DBL25_2_0_,
       items2_.DBL5                    AS DBL26_2_0_,
       items2_.bool1                   AS bool27_2_0_,
       items2_.bool2                   AS bool28_2_0_,
       items2_.bool3                   AS bool29_2_0_,
       items2_.bool4                   AS bool30_2_0_,
       items2_.bool5                   AS bool31_2_0_,
       items2_.GOODS_NO_VER            AS GOODS32_2_0_,
       items2_.GOODS_TAX_NO            AS GOODS33_2_0_,
       items2_.TAX_PRE                 AS TAX34_2_0_,
       items2_.TAX_PRE_CON             AS TAX35_2_0_,
       items2_.ZERO_TAX                AS ZERO36_2_0_
FROM   TBL_PA_VAT_DOCUMENT this_
       LEFT OUTER JOIN TBL_PA_VAT_DOCUMENT_ITEM items2_
            ON  this_.DOCUMENT_ID = items2_.DOCUMENT_ID
WHERE  this_.DOCUMENT_NR = @P0;
另外, 这个SQL 执行出来的结果一般有多少行?
最多不超过20条数据。
吉普赛的歌 2018-01-11
  • 打赏
  • 举报
回复
--先创建索引
CREATE INDEX ix_TBL_PA_VAT_DOCUMENT_DOCUMENT_ID_DOCUMENT_NR ON TBL_PA_VAT_DOCUMENT(DOCUMENT_ID,DOCUMENT_NR)
CREATE INDEX ix_TBL_PA_VAT_DOCUMENT_ITEM_DOCUMENT_ID ON TBL_PA_VAT_DOCUMENT_ITEM(DOCUMENT_ID)

--再执行
SELECT this_.DOCUMENT_ID               AS DOCUMENT1_1_1_,
       this_.DOCUMENT_NR               AS DOCUMENT2_1_1_,
       this_.INVOICE_TYPE              AS INVOICE3_1_1_,
       this_.DOCUMENT_DATE             AS DOCUMENT4_1_1_,
       this_.DOCUMENT_CREATE_DATE      AS DOCUMENT5_1_1_,
       this_.CUSTOMER_NR               AS CUSTOMER6_1_1_,
       this_.CUSTOMER_NAME             AS CUSTOMER7_1_1_,
       this_.CUSTOMER_TAX_NR           AS CUSTOMER8_1_1_,
       this_.CUSTOMER_ADDRESS          AS CUSTOMER9_1_1_,
       this_.CUSTOMER_BANKACCOUNT      AS CUSTOMER10_1_1_,
       this_.MEMO                      AS MEMO1_1_,
       this_.ISSUED                    AS ISSUED1_1_,
       this_.SPLIT_MERGE_STATE         AS SPLIT13_1_1_,
       this_.SPLIT_MERGE_REF_NR        AS SPLIT14_1_1_,
       this_.ISSUER                    AS ISSUER1_1_,
       this_.CHECKER                   AS CHECKER1_1_,
       this_.PAYEE                     AS PAYEE1_1_,
       this_.SELLER_TAX_NR             AS SELLER18_1_1_,
       this_.SELLER_ADDRESS_TEL        AS SELLER19_1_1_,
       this_.SELLER_BANK_ACCOUNT       AS SELLER20_1_1_,
       this_.LIST_NAME                 AS LIST21_1_1_,
       this_.MACHINE_NR                AS MACHINE22_1_1_,
       this_.DISCOUNT_VALUE            AS DISCOUNT23_1_1_,
       this_.DISCOUNT_TAX              AS DISCOUNT24_1_1_,
       this_.DISCOUNT_RATE             AS DISCOUNT25_1_1_,
       this_.INCLUDETAX                AS INCLUDETAX1_1_,
       this_.UPLOAD                    AS UPLOAD1_1_,
       this_.AUTO_MERGE                AS AUTO28_1_1_,
       this_.ALLOW_ISSUE               AS ALLOW29_1_1_,
       this_.IS_MANUAL                 AS IS30_1_1_,
       this_.REVERSED_NOTICE_NR        AS REVERSED31_1_1_,
       this_.REFINVOICECODE            AS REFINVO32_1_1_,
       this_.REFINVOICENR              AS REFINVO33_1_1_,
       this_.STR1                      AS STR34_1_1_,
       this_.STR2                      AS STR35_1_1_,
       this_.STR3                      AS STR36_1_1_,
       this_.STR4                      AS STR37_1_1_,
       this_.STR5                      AS STR38_1_1_,
       this_.BOOL1                     AS BOOL39_1_1_,
       this_.BOOL2                     AS BOOL40_1_1_,
       this_.BOOL3                     AS BOOL41_1_1_,
       this_.BOOL4                     AS BOOL42_1_1_,
       this_.BOOL5                     AS BOOL43_1_1_,
       this_.CONSIGNER_NAME            AS CONSIGNER44_1_1_,
       this_.CONSIGNER_TAX_NR          AS CONSIGNER45_1_1_,
       this_.SHIPPER_NAME              AS SHIPPER46_1_1_,
       this_.SHIPPER_TAX_NR            AS SHIPPER47_1_1_,
       this_.ORIGIN_VIA_ARRIVAL_PLACE  AS ORIGIN48_1_1_,
       this_.VEHICLE_KIND_NO           AS VEHICLE49_1_1_,
       this_.VEHICLE_TONNAGE           AS VEHICLE50_1_1_,
       this_.FREIGHT_MEMO              AS FREIGHT51_1_1_,
       items2_.DOCUMENT_ID             AS DOCUMENT37_3_,
       items2_.DOCUMENT_ITEM_ID        AS DOCUMENT1_3_,
       items2_.ITEM_INDEX              AS ITEM38_3_,
       items2_.DOCUMENT_ITEM_ID        AS DOCUMENT1_2_0_,
       items2_.SEQUENCE_NR             AS SEQUENCE2_2_0_,
       items2_.PRODUCT_NR              AS PRODUCT3_2_0_,
       items2_.PRODUCT_NAME            AS PRODUCT4_2_0_,
       items2_.SPEC                    AS SPEC2_0_,
       items2_.UNIT                    AS UNIT2_0_,
       items2_.QUANTITY                AS QUANTITY2_0_,
       items2_.PRICE                   AS PRICE2_0_,
       items2_.VALUE                   AS VALUE2_0_,
       items2_.TAX_RATE                AS TAX10_2_0_,
       items2_.INCLUDE_TAX             AS INCLUDE11_2_0_,
       items2_.TAX                     AS TAX2_0_,
       items2_.TAX_ITEM                AS TAX13_2_0_,
       items2_.DISCOUNT_RATE           AS DISCOUNT14_2_0_,
       items2_.DISCOUNT_TAX            AS DISCOUNT15_2_0_,
       items2_.DISCOUNT_VALUE          AS DISCOUNT16_2_0_,
       items2_.STR1                    AS STR17_2_0_,
       items2_.STR2                    AS STR18_2_0_,
       items2_.STR3                    AS STR19_2_0_,
       items2_.STR4                    AS STR20_2_0_,
       items2_.STR5                    AS STR21_2_0_,
       items2_.DBL1                    AS DBL22_2_0_,
       items2_.DBL2                    AS DBL23_2_0_,
       items2_.DBL3                    AS DBL24_2_0_,
       items2_.DBL4                    AS DBL25_2_0_,
       items2_.DBL5                    AS DBL26_2_0_,
       items2_.bool1                   AS bool27_2_0_,
       items2_.bool2                   AS bool28_2_0_,
       items2_.bool3                   AS bool29_2_0_,
       items2_.bool4                   AS bool30_2_0_,
       items2_.bool5                   AS bool31_2_0_,
       items2_.GOODS_NO_VER            AS GOODS32_2_0_,
       items2_.GOODS_TAX_NO            AS GOODS33_2_0_,
       items2_.TAX_PRE                 AS TAX34_2_0_,
       items2_.TAX_PRE_CON             AS TAX35_2_0_,
       items2_.ZERO_TAX                AS ZERO36_2_0_
FROM   TBL_PA_VAT_DOCUMENT this_
       LEFT OUTER JOIN TBL_PA_VAT_DOCUMENT_ITEM items2_
            ON  this_.DOCUMENT_ID = items2_.DOCUMENT_ID
WHERE  this_.DOCUMENT_NR = @P0;
另外, 这个SQL 执行出来的结果一般有多少行?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧