Comment puis-je effectuer une optimisation de la performance basée sur l'utilisation si j'exécute SQL Server 2008 Express et utilise SQL Server Management Studio Express?Comment: optimisation des performances basée sur l'utilisation dans SQL Server 2008 Express
1
A
Répondre
1
Les vues de gestion dynamique existent-elles dans SQL Server Express? Essayez d'utiliser sys.dm_exec_query_stats pour voir si vous obtenez un résultat. Si c'est le cas, j'ai des procédures stockées que vous pouvez exécuter pour optimiser les performances. Je vous donne un exemple de l'une des procédures, et je peux en poster d'autres si vous le souhaitez.
CREATE PROCEDURE [ADMIN].[spExecutionTimeStats]
@DBName AS SYSNAME
AS
-- +----------------------------------------------------------------------------------------------------------------
-- ! O b j e c t : ADMIN.spExecutionTimeStats
-- ! R e t u r n s : NONE
-- ! P a r a m e t e r s : Name DataType Description
-- + ======================= ============== ==================================================
-- ! @dbname sysname
-- + ---------------------------------------------------------------------------------------------------------------
-- ! O b j e c t i v e :
-- + ---------------------------------------------------------------------------------------------------------------
-- ! S A M P L E S :
-- ! EXEC ADMIN.spExecutionTimeStats 'DWH'
-- ! EXEC ADMIN.spExecutionTimeStats 'DWH_TOOLKIT'
-- ! EXEC ADMIN.spExecutionTimeStats 'DWH_HISTORY'
-- + ---------------------------------------------------------------------------------------------------------------
-- ! H i s t o r y :
-- + ---------------------------------------------------------------------------------------------------------------
-- ! Date Who What
-- + ========== ===== ========================================================================
-- ! 2009-09-04 HAWI Initial version
-- +----------------------------------------------------------------------------------------------------------------
--DECLARE @DBName AS SYSNAME='DWH'
DECLARE @SQL NVARCHAR(MAX)
SET @SQL='SELECT TOP 100 percent
''' [email protected] +'''AS DBName,
OBJECT_SCHEMA_NAME(s.object_id, DB_ID(''' [email protected] +''')) AS Schema_name,
S.name,
D.execution_count,
D.total_physical_reads,
D.total_logical_reads,
d.total_logical_writes,
d.last_execution_time,
total_elapsed_time_s=convert(money,d.total_elapsed_time)/1000000,
max_elapsed_time_s=convert(money,D.max_elapsed_time)/1000000,
last_elapsed_time_s=convert(money,d.last_elapsed_time)/1000000,
min_elapsed_time_s=convert(money,D.min_elapsed_time)/1000000,
avg_time_s=(convert(money,d.total_elapsed_time)/d.execution_count)/1000000,
d.sql_handle as proc_handle,
stmnt.*
FROM ' + @dbname + '.sys.procedures s
INNER JOIN ' + @dbname + '.sys.dm_exec_procedure_stats d
ON s.object_id = d.object_id
LEFT JOIN
(
SELECT TOP 100 PERCENT
QS.sql_handle,
ROW_NUMBER() OVER(PARTITION BY qs.sql_handle ORDER BY statement_start_offset) AS statement_no,
qs.execution_count,
qs.total_physical_reads,
qs.total_logical_reads,
qs.total_logical_writes,
qs.last_execution_time,
sql_total_elapsed_time_s=convert(money,qs.total_elapsed_time)/1000000,
sql_max_elapsed_time_s=convert(money,qs.max_elapsed_time)/1000000,
sql_last_elapsed_time_s=convert(money,qs.last_elapsed_time)/1000000,
sql_min_elapsed_time_s=convert(money,qs.min_elapsed_time)/1000000,
sql_avg_time_s=(convert(money,qs.total_elapsed_time)/qs.execution_count)/1000000,
SUBSTRING(ST.text, (QS.statement_start_offset/2) + 1,
((CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE QS.statement_end_offset END
- QS.statement_start_offset)/2) + 1) AS statement_text
FROM ' + @dbname + '.sys.dm_exec_query_stats AS QS
CROSS APPLY ' + @dbname + '.sys.dm_exec_sql_text(QS.sql_handle) as ST
) AS stmnt
ON d.sql_handle=stmnt.sql_handle
WHERE
convert(money,d.total_elapsed_time)/d.execution_count/1000000>10
OR
d.last_elapsed_time > (d.total_elapsed_time/d.execution_count)*1.15
ORDER BY avg_time_s DESC;'
PRINT @SQL;
EXEC sp_executeSQL @SQL;
GO
+0
Hakan très intéressant, j'aimerais voir d'autres scripts si vous avez :) – Trapias
pouvez-vous être un peu plus précis? C'est une question très large que vous mettez là-bas ...... –