evento
31/03, 23 - 2/04, 23
O melhor evento liderado pela comunidade SQL, Power BI, Fabric e AI. 31 de março - 2 de abril. Use o código MSCUST para um desconto de US $ 150. Os preços sobem a 11 de fevereiro.
Registe-se hoje mesmoEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Aplica-se a: SQL Server Banco de Dados SQL do Azure
Muitas vezes, os administradores de banco de dados precisam identificar a origem de bloqueios que estão obstruindo o desempenho do banco de dados.
Por exemplo, digamos que você esteja monitorando seu servidor de produção quanto a possíveis gargalos. Você suspeita que existem recursos altamente disputados e gostaria de saber quantos bloqueios esses objetos detêm. Uma vez identificados os objetos bloqueados com maior frequência, algumas medidas podem ser tomadas para otimizar o acesso aos objetos disputados.
Para fazer isso, use o Editor de Consultas no SQL Server Management Studio.
No Editor de Consultas, emita as seguintes instruções:
-- Find objects in a particular database that have the most
-- lock acquired. This sample uses AdventureWorksDW2022.
-- Create the session and add an event and target.
IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='LockCounts')
DROP EVENT session LockCounts ON SERVER;
GO
DECLARE @dbid int;
SELECT @dbid = db_id('AdventureWorksDW2022');
DECLARE @sql nvarchar(1024);
SET @sql = '
CREATE event session LockCounts ON SERVER
ADD EVENT sqlserver.lock_acquired (WHERE database_id ='
+ CAST(@dbid AS nvarchar) +')
ADD TARGET package0.histogram(
SET filtering_event_name=''sqlserver.lock_acquired'',
source_type=0, source=''resource_0'')';
EXEC (@sql);
GO
ALTER EVENT session LockCounts ON SERVER
STATE=start;
GO
-- Create a simple workload that takes locks.
USE AdventureWorksDW2022;
GO
SELECT TOP 1 * FROM dbo.vAssocSeqLineItems;
GO
-- The histogram target output is available from the
-- sys.dm_xe_session_targets dynamic management view in
-- XML format.
-- The following query joins the bucketizing target output with
-- sys.objects to obtain the object names.
SELECT name, object_id, lock_count
FROM
(
SELECT objstats.value('.','bigint') AS lobject_id,
objstats.value('@count', 'bigint') AS lock_count
FROM (
SELECT CAST(xest.target_data AS XML)
LockData
FROM sys.dm_xe_session_targets xest
JOIN sys.dm_xe_sessions xes ON xes.address = xest.event_session_address
JOIN sys.server_event_sessions ses ON xes.name = ses.name
WHERE xest.target_name = 'histogram' AND xes.name = 'LockCounts'
) Locks
CROSS APPLY LockData.nodes('//HistogramTarget/Slot') AS T(objstats)
) LockedObjects
INNER JOIN sys.objects o ON LockedObjects.lobject_id = o.object_id
WHERE o.type != 'S' AND o.type = 'U'
ORDER BY lock_count desc;
GO
-- Stop the event session.
ALTER EVENT SESSION LockCounts ON SERVER
state=stop;
GO
Nota
O exemplo de código Transact-SQL precedente é executado no SQL Server local, mas talvez não seja executado no Banco de Dados SQL do Azure. As partes principais do exemplo que envolvem diretamente Eventos, como ADD EVENT sqlserver.lock_acquired
, funcionam no Banco de Dados SQL do Azure também. Porém, os itens preliminares, como sys.server_event_sessions
, devem ser editados em seus equivalentes do Banco de Dados SQL do Azure como sys.database_event_sessions
para que o exemplo seja executado.
Para obter mais informações sobre essas diferenças secundárias entre o SQL Server local versus o Banco de Dados SQL do Azure, confira os seguintes artigos:
Depois que as instruções no script Transact-SQL anterior forem concluídas, a guia Resultados do Editor de Consulta exibe as seguintes colunas:
CREATE EVENT SESSION (Transact-SQL)
ALTER EVENT SESSION (Transact-SQL)
sys.dm_xe_session_targets (Transact-SQL)
sys.dm_xe_sessions (Transact-SQL)
sys.server_event_sessions (Transact-SQL)
evento
31/03, 23 - 2/04, 23
O melhor evento liderado pela comunidade SQL, Power BI, Fabric e AI. 31 de março - 2 de abril. Use o código MSCUST para um desconto de US $ 150. Os preços sobem a 11 de fevereiro.
Registe-se hoje mesmoFormação
Percurso de aprendizagem
Otimizar o desempenho da consulta no Azure SQL - Training
Otimizar o desempenho da consulta no Azure SQL