AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 306455
Accepted
Eitan Blumin
Eitan Blumin
Asked: 2022-01-24 03:44:40 +0800 CST2022-01-24 03:44:40 +0800 CST 2022-01-24 03:44:40 +0800 CST

DBCC CHECKDB em um banco de dados de usuário: tempo limite esgotado ao aguardar o tipo de trava de buffer 2 para a página (X:XXX), ID do banco de dados 2

  • 772

Nosso trabalho Ola Hallengren IntegrityCheck falhou devido a um tempo limite de trava de buffer durante a execução de DBCC CHECKDB em um banco de dados de usuário.

No entanto, o tempo limite de trava do buffer relatado estava em TempDB (ID do banco de dados 2).

Saída do trabalho:

Date and time: 2022-01-22 09:04:15 [SQLSTATE 01000]
Database context: [master] [SQLSTATE 01000]
Command: SET LOCK_TIMEOUT 600000; DBCC CHECKDB ([SentryOne]) WITH NO_INFOMSGS, ALL_ERRORMSGS, MAXDOP = 4 [SQLSTATE 01000]
Msg 845, Sev 17, State 1, Line 1 : Time-out occurred while waiting for buffer latch type 2 for page (6:222), database ID 2. [SQLSTATE 42000]
Outcome: Failed [SQLSTATE 01000]
Duration: 12:40:32 [SQLSTATE 01000]
Date and time: 2022-01-22 21:44:47 [SQLSTATE 01000]

Mensagens no log de erros do SQL:

Date 1/22/2022 9:35:22 PM
Log SQL Server (Archive #1 - 1/23/2022 12:00:00 AM)

Source spid777

Message
A time-out occurred while waiting for buffer latch -- type 2, bp 0000016D7A1DE340, page 6:222, stat 0x40d, database id: 2, allocation unit Id: 536870912/281475513581568, task 0x0000016CD624E4E8 : 2, waittime 300 seconds, flags 0x1a, owning task 0x0000016CD624E4E8. Not continuing to wait.

BobMgr::GetBuf: Sort Big Output Buffer write not complete after 60 seconds.

DBCC CHECKDB (SentryOne) WITH all_errormsgs, no_infomsgs, maxdop = 4 executed by NT SERVICE\SQLSERVERAGENT terminated abnormally due to error state 6. Elapsed time: 12 hours 39 minutes 57 seconds.

[INFO] Database ID: [12]. Cleaning up StorageArray. LastClosedCheckpointEndTs: '1225176490'

[WARNING] ALTER or DROP TABLE could not clean up root row within 10 seconds.

A página em questão é uma página do IAM no TempDB. Saída DBCC PAGE para ele:

PAGE: (6:222)

BUFFER:

BUF @0x0000016D6B622C40

bpage = 0x00000161A6C52000 bPmmpage = 0x0000000000000000 bsort_r_nextbP = 0x0000016D6B622AD0
bsort_r_prevbP = 0x0000016D6B622B80 bhash = 0x0000000000000000 bpageno = (6:222)
bpart = 4 ckptGen = 0x0000000000000000 bDirtyRefCount = 0
bstat = 0x9 breferences = 3 berrcode = 0
bUse1 = 19321 bstat2 = 0x0 blog = 0x215a215a
bsampleCount = 1 bIoCount = 0 resPoolId = 0
bcputicks = 330 bReadMicroSec = 848 bDirtyContext = 0x0000000000000000
bDbPageBroker = 0x0000000000000000 bdbid = 2 bpru = 0x0000016D3A170040

PAGE HEADER:

Page @0x00000161A6C52000

m_pageId = (6:222) m_headerVersion = 1 m_type = 10
m_typeFlagBits = 0x0 m_level = 0 m_flagBits = 0x200
m_objId (AllocUnitId.idObj) = 1837007664 m_indexId (AllocUnitId.idInd) = 28675
Metadata: AllocUnitId = 8071415347312328704
Metadata: PartitionId = 2162691495132069888 Metadata: IndexId = 0
Metadata: ObjectId = -1083263203 m_prevPage = (0:0) m_nextPage = (0:0)
pminlen = 90 m_slotCnt = 2 m_freeCnt = 6
m_freeData = 8182 m_reservedCnt = 0 m_lsn = (324:1435184:42)
m_xactReserved = 0 m_xdesId = (0:0) m_ghostRecCnt = 0
m_tornBits = -551517712 DB Frag ID = 1

Allocation Status

GAM (6:2) = ALLOCATED SGAM (6:3) = ALLOCATED
PFS (6:1) = 0x70 IAM_PG MIXED_EXT ALLOCATED 0_PCT_FULL DIFF (6:6) = NOT CHANGED
ML (6:7) = NOT MIN_LOGGED

IAM: Header @0x00000036C4278064 Slot 0, Offset 96

sequenceNumber = 0 status = 0x0 objectId = 0
indexId = 0 page_count = 0 start_pg = (8:511232)

IAM: Single Page Allocations @0x00000036C427808E

Slot 0 = (0:0) Slot 1 = (0:0) Slot 2 = (0:0)
Slot 3 = (0:0) Slot 4 = (0:0) Slot 5 = (0:0)
Slot 6 = (0:0) Slot 7 = (0:0)

IAM: Extent Alloc Status Slot 1 @0x00000036C42780C2

(8:511232) - (8:592656) = NOT ALLOCATED
(8:592664) - = ALLOCATED
(8:592672) - (8:770424) = NOT ALLOCATED

Encontrei esta pergunta do DBA StackExchange que parece ser mais relevante: Obtendo o erro "Ocorreu o tempo limite enquanto aguardava o tipo de trava de buffer 2 para a página (1:3564879), ID do banco de dados 7". Mas um banco de dados com Id 7 NÃO existe

No entanto, nesse cenário, a página expirada relatada está em um banco de dados do usuário e não no TempDB.

Além disso, estamos na versão mais recente do SQL Server (2019-CU14 Enterprise), portanto, isso não deve acontecer de qualquer maneira.

Percebi que havia latência muito alta nos arquivos de dados TempDB por volta das 18h e 21h40. Não tenho certeza se está relacionado, no entanto, porque o pico de latência às 18h é maior e, no entanto, o trabalho falhou apenas por volta das 21h44.

Latência de arquivos de dados TempDB

Esses picos de latência não se correlacionam com nenhum pico nas métricas do Azure Monitor VM Cached IOPS Consumed Percentagee VM Cached Bandwidth Consumed Percentage.

Informação adicional:

  • O servidor está instalado em uma VM do Azure:Standard E8s v3 (8 vcpus, 64 GiB memory)
  • O banco de dados do usuário em questão (SentryOne) possui tabelas com otimização de memória.
  • Os metadados com otimização de memória TempDB estão DESATIVADOS.
  • A inicialização instantânea do arquivo está ATIVADA.
  • Bloquear Páginas na Memória está DESATIVADO.

Alguma idéia de por que isso aconteceu e como evitá-lo no futuro?

Obrigado!

sql-server tempdb
  • 1 1 respostas
  • 590 Views

1 respostas

  • Voted
  1. Best Answer
    Sean Gallardy
    2022-01-24T07:51:39+08:002022-01-24T07:51:39+08:00

    No entanto, o tempo limite de trava do buffer relatado estava em TempDB (ID do banco de dados 2).

    TempDB é usado com CheckDB , provavelmente havia um conjunto de itens esperando na trava (ou um único item, não posso dizer com os dados fornecidos) e houve uma ocorrência de comboio devido a algo lento (por exemplo, IO ou alocações de memória) ou houve uma única ocorrência disso.

    Ocorreu um tempo limite ao aguardar o tipo de trava de buffer 2, bp 0000016D7A1DE340, página 6 :222, stat 0x40d , ID do banco de dados: 2, ID da unidade de alocação: 536870912/281475513581568, tarefa 0x0000016CD624E4E8 : 2, tempo de espera 300 segundos , sinalizadores 0x1a tarefa 0x0000016CD624E4E8. Não continuar esperando. (em negrito, para enfatizar)

    • página 6:222 - Especificamente tempdb fileid 6
    • stat 0x40d (buffer) - No IO
    • Waittime 300 segundos - Tempo limite depois de esperar muito tempo
    • sinalizadores 0x1a (trava) - no IO, acesso exclusivo

    Percebi que havia latência muito alta nos arquivos de dados TempDB por volta das 18h e 21h40. Não tenho certeza se está relacionado, no entanto, porque o pico de latência às 18h é maior e, no entanto, o trabalho falhou apenas por volta das 21h44.

    De acordo com o seu anúncio de captura de tela, a saída do trabalho:

    • Data e hora: 2022-01-22 09:04:15
    • E/S de disco levando mais de 300.000 ms (mais de 300 segundos)

    Isso se correlaciona muito bem, parece ser algum disco lento no momento com base nos dados disponíveis.

    • 4

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve