先說背景,我們單位服務器和交換機性能還行,內部局域網應用,上了一個MES系統和一個ERP系統,ERP的速度還行是用友的。資料庫都是微軟的sqlsever2008,作業系統也是windows。但是!!!MES系統的查詢速度太慢了,無論是客戶端還是IE瀏覽器端都特別慢。瀏覽器端是IE內核。
問題是有什么辦法能快一點,瀏覽器端和客戶端肯定改不了了,但是服務器這邊有什么優化辦法嗎。
uj5u.com熱心網友回復:
是MES系統所有的查詢都很慢,還是某幾個功能的查詢很慢。如果是所有都很慢,估計得服務器硬體升級了。如果是某幾個慢,那最好是有針對性得去優化(當然,如果這時能升級硬體,估計也能有些改善)。uj5u.com熱心網友回復:
性能還行的基礎上,確認資料量,找出例子,在資料庫看下 執行計劃,確認下慢在什么地方uj5u.com熱心網友回復:
先報一下:1。服務器的配置
2。主要表的大小(資料量有多少)
3。執行一下下面的SQL, 看下實際的慢SQL :
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
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/133001.html
標籤:疑難問題
