Arquivo da categoria: Performance e Tuning

Webcast – Dicas e truques para fazer o troubleshooting do Azure SQL Database, Hyperscale e Managed Instance

Fala galera,

Preparados para mais um evento fantástico para a comunidade de dados?

No dia 20/02, a partir das 20h00, teremos um webcast sensacional com o Roberto Cavalcanti dando várias dicas de performance em um ambiente de banco de dados no Azure.

Não perca essa chance e participe fazendo a sua inscrição através do link abaixo:

Dicas e truques para fazer o troubleshooting do Azure SQL Database, Hyperscale e Managed Instance

Espero que tenham gostado e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço.

Be a DataMaster – Qual o maior consumidor do TEMPDB na sua instância?

Fala galera, beleza?

No vídeo de hoje quero demonstrar como você pode, de forma bem simples, encontrar as sessões que estão utilizando de forma excessiva o TEMPDB.

Segue o script utilizado no vídeo


SELECT
sys.dm_exec_sessions.session_id AS [SESSION ID],
(user_objects_alloc_page_count * 8) AS [SPACE Allocated FOR USER Objects (in KB)],
(internal_objects_alloc_page_count * 8) AS [SPACE Allocated FOR Internal Objects (in KB)],
DB_NAME(sys.dm_exec_sessions.database_id) AS [DATABASE Name],
HOST_NAME AS [System Name],
program_name AS [Program Name],
login_name AS [USER Name],
status,
row_count AS [ROW COUNT]
FROM
sys.dm_db_session_space_usage
INNER join
sys.dm_exec_sessions
ON
sys.dm_db_session_space_usage.session_id = sys.dm_exec_sessions.session_id
WHERE
sys.dm_exec_sessions.Session_id > 50

--DBCC INPUTBUFFER(53)

Espero que tenham gostado e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço.

Livro do mês de Fevereiro – Query Store for SQL Server 2019

Fala pessoal, tudo bem?

Quero indicar esse mês um livro extremamente detalhado sobre uma das melhores ferramentas de monitoração do SQL Server para encontrarmos consultas mais custosas e também a famosa regressão de planos de execução, o QUERY STORE.

O nome do livro é QUERY STORE FOR SQL SERVER 2019 e tráz de maneira bem didática quais as melhores práticas para utilizarmos o QUERY STORE e também como analisar todos os dados coletados pelo mesmo.

Espero que tenham gostado e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço.

Be a DataMaster – Criando uma monitoração dos Wait Types da sua instância

Fala galera!!!!!

Hoje quero demonstrar como implementei em um cliente da Vita Database Solutions uma coleta automatizada dos Wait Types ocorrendo em uma instância de banco de dados SQL Server.

Caso queira implementar em seu ambiente, basta utilizar o seguinte script:


USE [master]
go
CREATE TABLE WaitStats_Collection
(DateMonitored DATETIME2, Wait_Type VARCHAR(200),
Waiting_Tasks_Count INT,Percentage_WaitTime DECIMAL(9,2))
GO

CREATE PROCEDURE PR_COLLECT_WAITSTATS
AS
INSERT INTO WaitStats_Collection
SELECT
GETDATE() AS [DateMonitored],
wait_type AS Wait_Type,
waiting_tasks_count AS Waiting_Tasks_Count,
wait_time_ms * 100.0 / SUM(wait_time_ms) OVER() AS Percentage_WaitTime
FROM
sys.dm_os_wait_stats
WHERE
wait_type NOT IN
(N'BROKER_EVENTHANDLER',
N'BROKER_RECEIVE_WAITFOR',
N'BROKER_TASK_STOP',
N'BROKER_TO_FLUSH',
N'BROKER_TRANSMITTER',
N'CHECKPOINT_QUEUE',
N'CHKPT',
N'CLR_AUTO_EVENT',
N'CLR_MANUAL_EVENT',
N'CLR_SEMAPHORE',
N'DBMIRROR_DBM_EVENT',
N'DBMIRROR_DBM_MUTEX',
N'DBMIRROR_EVENTS_QUEUE',
N'DBMIRROR_WORKER_QUEUE',
N'DBMIRRORING_CMD',
N'DIRTY_PAGE_POLL',
N'DISPATCHER_QUEUE_SEMAPHORE',
N'EXECSYNC',
N'FSAGENT',
N'FT_IFTS_SCHEDULER_IDLE_WAIT',
N'FT_IFTSHC_MUTEX',
N'HADR_CLUSAPI_CALL',
N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
N'HADR_LOGCAPTURE_WAIT',
N'HADR_NOTIFICATION_DEQUEUE',
N'HADR_TIMER_TASK',
N'HADR_WORK_QUEUE',
N'LAZYWRITER_SLEEP',
N'LOGMGR_QUEUE',
N'MEMORY_ALLOCATION_EXT',
N'ONDEMAND_TASK_QUEUE',
N'PREEMPTIVE_HADR_LEASE_MECHANISM',
N'PREEMPTIVE_OS_AUTHENTICATIONOPS',
N'PREEMPTIVE_OS_AUTHORIZATIONOPS',
N'PREEMPTIVE_OS_COMOPS',
N'PREEMPTIVE_OS_CREATEFILE',
N'PREEMPTIVE_OS_CRYPTOPS',
N'PREEMPTIVE_OS_DEVICEOPS',
N'PREEMPTIVE_OS_FILEOPS',
N'PREEMPTIVE_OS_GENERICOPS',
N'PREEMPTIVE_OS_LIBRARYOPS',
N'PREEMPTIVE_OS_PIPEOPS',
N'PREEMPTIVE_OS_QUERYREGISTRY',
N'PREEMPTIVE_OS_VERIFYTRUST',
N'PREEMPTIVE_OS_WAITFORSINGLEOBJECT',
N'PREEMPTIVE_OS_WRITEFILEGATHER',
N'PREEMPTIVE_SP_SERVER_DIAGNOSTICS',
N'PREEMPTIVE_XE_GETTARGETSTATE',
N'PWAIT_ALL_COMPONENTS_INITIALIZED',
N'PWAIT_DIRECTLOGCONSUMER_GETNEXT',
N'QDS_ASYNC_QUEUE',
N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP',
N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP',
N'QDS_SHUTDOWN_QUEUE',
N'REDO_THREAD_PENDING_WORK',
N'REQUEST_FOR_DEADLOCK_SEARCH',
N'RESOURCE_QUEUE',
N'SERVER_IDLE_CHECK',
N'SLEEP_BPOOL_FLUSH',
N'SLEEP_DBSTARTUP',
N'SLEEP_DCOMSTARTUP',
N'SLEEP_MASTERDBREADY',
N'SLEEP_MASTERMDREADY',
N'SLEEP_MASTERUPGRADED',
N'SLEEP_MSDBSTARTUP',
N'SLEEP_SYSTEMTASK',
N'SLEEP_TASK',
N'SP_SERVER_DIAGNOSTICS_SLEEP',
N'SQLTRACE_BUFFER_FLUSH',
N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
N'SQLTRACE_WAIT_ENTRIES',
N'UCS_SESSION_REGISTRATION',
N'WAIT_FOR_RESULTS',
N'WAIT_XTP_CKPT_CLOSE',
N'WAIT_XTP_HOST_WAIT',
N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG',
N'WAIT_XTP_RECOVERY',
N'WAITFOR',
N'WAITFOR_TASKSHUTDOWN',
N'XE_TIMER_EVENT',
N'XE_DISPATCHER_WAIT',
N'XE_LIVE_TARGET_TVF'
)
AND
wait_time_ms >= 1
GO
USE [msdb]
GO
DECLARE @jobId BINARY(16)
EXEC msdb.dbo.sp_add_job @job_name=N'Automated Wait Statistics Collection',
@enabled=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_page=2,
@delete_level=0,
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
select @jobId
GO
EXEC msdb.dbo.sp_add_jobserver @job_name=N'Automated Wait Statistics Collection', @server_name = N'DESKTOP-OTDNR1N\BEADATAMASTER'
GO
USE [msdb]
GO
EXEC msdb.dbo.sp_add_jobstep @job_name=N'Automated Wait Statistics Collection', @step_name=N'Execute Data Collection',
@step_id=1,
@cmdexec_success_code=0,
@on_success_action=1,
@on_fail_action=2,
@retry_attempts=0,
@retry_interval=0,
@os_run_priority=0, @subsystem=N'TSQL',
@command=N'EXEC PR_COLLECT_WAITSTATS',
@database_name=N'master',
@flags=0
GO
USE [msdb]
GO
EXEC msdb.dbo.sp_update_job @job_name=N'Automated Wait Statistics Collection',
@enabled=1,
@start_step_id=1,
@notify_level_eventlog=0,
@notify_level_email=2,
@notify_level_page=2,
@delete_level=0,
@description=N'',
@category_name=N'[Uncategorized (Local)]',
@owner_login_name=N'sa',
@notify_email_operator_name=N'',
@notify_page_operator_name=N''
GO

Espero que tenham gostado e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço.

Dicas para um DBA Iniciante – Analisando uma transação em detalhes utilizando a FN_DBLOG()

Fala galera!!!!!!!

No vídeo de hoje quero demonstrar como podemos utilizar a fn_dblog() para analisar detalhadamente uma transação que esteja consumindo uma grande quantidade do arquivo de transaction log.

Segue o script utilizado no vídeo:


SELECT
[Current LSN],
[Transaction ID],
[Operation],
[Transaction Name],
[CONTEXT],
[AllocUnitName],
[Page ID],
[Slot ID],
[Begin Time],
[End Time],
[Number of Locks],
[Lock Information]
FROM sys.fn_dblog(NULL,NULL)
WHERE Operation IN
('LOP_INSERT_ROWS','LOP_MODIFY_ROW',
'LOP_DELETE_ROWS','LOP_BEGIN_XACT','LOP_COMMIT_XACT')
ORDER BY [Begin Time] DESC

Espero que tenham gostado e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço.

SQL Maniacs – Vamos planejar sua carreira para 2020? / Alta Disponibilidade no SQL Server: Principais Features

Fala galera, tudo bem?

O ano já começou e está na hora de reiniciarmos as atividades do SQLManiacs, concordam?

No dia 21/01, à partir das 18h30, teremos o nosso primeiro encontro de 2020 (100% GRATUITO) e dessa vez acontecerá na FC Nuvem, na Rua Bela Cintra, 986 – 2º andar.

Nesse encontro teremos duas sessões para vocês, sendo que a primeira será comigo e falaremos sobre planejamento de carreira para 2020 e a segunda sessão será com o Marcelo Adade e falaremos sobre as principais funcionalidade de Alta Disponibilidade presentes no SQL Server.

São duas sessões imperdíveis e para participar é só fazer a sua inscrição através do link:

https://www.sympla.com.br/meetup-sqlmaniacs–fc-nuvem-vamos-planejar-sua-carreira-para-2020__738931

Quero encher a sala hein galera e conto muito com a sua presença!!!!!

Também não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço.

Dicas para um DBA Iniciante – Verificando possíveis vulnerabiliddes no seu banco de dados

Fala galera, tudo bem?

No vídeo de hoje quero demonstrar como você pode fazer uma checagem detalhada em um banco de dados SQL Server e identificar possíveis vulnerabilidade de segurança e boas práticas através do VULNERABILITY ASSESSMENT.

E se você tem algum problema de performance no seu ambiente e quer uma ajuda minha e da minha equipe aqui da Vita Database Solutions, aproveita e manda um email para CONTATO@VITADBSOLUTIONS.COM pedindo um HEALTHCHECK completo do seu ambiente, que será executado de forma GRATUITA!!!!!

Espero que tenham gostado e não deixem de inscreverem-se no blog, no canal do youtube, no grupo de discussão SQLManiacs  e em nosso grupo no TELEGRAM.

Grande abraço.