Author: Peter Whyte

  • PAGELATCH_KP Wait Type in SQL Server

    ⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: PAGELATCH_EX Wait TypeRelated pillar: Performance & Troubleshooting PAGELATCH_KP is a wait for a Keep (KP) mode latch on a data file page in memory (not in an I/O request). Keep mode pins a page so it cannot be destroyed while the…

  • PAGELATCH_NL Wait Type in SQL Server

    ⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: PAGELATCH_EX Wait TypeRelated pillar: Performance & Troubleshooting PAGELATCH_NL is the wait type for a Null (NL) mode latch on an in-memory data file page. Null mode is a non-acquiring placeholder, and the wait type exists so the page latch family covers…

  • PAGELATCH_SH Wait Type in SQL Server

    ⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: PAGELATCH_EX, TempDB Allocation ContentionRelated pillar: Performance & Troubleshooting PAGELATCH_SH is a wait for a shared (read) latch on a page that is already in memory. Latches are lightweight locks SQL Server uses to protect in-memory structures while they are being read…

  • PAGELATCH_UP Wait Type in SQL Server

    ⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: PAGELATCH_EX Wait TypeRelated pillar: Performance & Troubleshooting PAGELATCH_UP is a wait for an update-mode (UP) latch on a data file page that is already in memory. Update mode is used when a thread needs to modify a page structure that others…

  • How to Delete Duplicate Rows in SQL Server

    Every DBA hits this one eventually. A table has two or more rows that are identical in every column that matters, and you need to remove all but one of them. An ETL job re-ran without a dedupe check. An import script fired twice. A missing unique constraint let bad data in through the front…

  • PARALLEL_REDO_DRAIN_WORKER Wait Type in SQL Server

    ⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: HADR_SYNC_COMMIT Wait TypeRelated pillar: High Availability PARALLEL_REDO_DRAIN_WORKER is recorded when the main parallel redo thread for a database (on an AG replica, or during crash recovery on a standalone instance) waits for the other redo threads to finish all outstanding log…

  • PREEMPTIVE_OS_LOGONUSER Wait Type in SQL Server

    ⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: SOS_SCHEDULER_YIELD Wait TypeRelated pillar: Performance & Troubleshooting PREEMPTIVE_OS_LOGONUSER is recorded when a thread calls the Windows LogonUser function, which authenticates a set of credentials and produces a logon token. SQL Server needs it wherever it must become another Windows identity: Agent…

  • PREEMPTIVE_OS_WRITEFILEGATHER Wait Type in SQL Server

    ⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: IO_COMPLETION Wait TypeRelated pillar: Performance & Troubleshooting PREEMPTIVE_OS_WRITEFILEGATHER is recorded when a thread calls the Windows WriteFileGather function and waits for it to return. In DBA practice this wait has one dominant source: zero-filling file space. When a data or log…

  • QDS_SHUTDOWN_QUEUE Wait Type in SQL Server

    ⏳Part of the SQL Server Wait Types Library, every wait type explained.Related deep dive: IO_COMPLETION Wait TypeRelated pillar: Performance & Troubleshooting QDS_SHUTDOWN_QUEUE is recorded by a Query Store background task parked on the queue it uses to receive shutdown and control signals. Query Store runs a small crew of background workers per enabled database (persistence,…

  • DBA Scripts: Server Inventory

    🔧Part of the DBA-Tools Project, copy/paste SQL Server scripts and health checks.In: Server & Configuration An unfamiliar server · the first pass This is the step everything else is read against. A wait, a permission, a migration plan: none of them mean what they appear to mean until you know what the server actually is.…