none
Primeira página de uma tabela é alterada após realizar delete e em seguida checkpoint RRS feed

  • Pergunta

  • Pessoal,

    Estava fazendo uns testes com o comando DBCC PAGE para estudá-lo e me ocorreu algo que não entendi, daí o post aqui. Uma tabela foi criada e populada com alguns poucos registros. A primeira página da tabela foi encontrada.

    Queria ver o comportamento do offset array quando inserimos e apagamos registros da tabela. Depois de validada a primeira página da tabela, apaguei um registro apenas e executei manualmente um CHECKPOINT. Em seguida, a primeira página da tabela já não era a mesma, havia sido alterada.

    Porque isto ocorreu?

    Grato.

     


    Erickson Ricci
    Microsoft MCP, MCTS SQL Server 2005, 2008
    Visite o meu blog: http://ericksonricci.wordpress.com
    Me siga no twitter: @EricksonRicci
    LinkedIN: http://br.linkedin.com/in/ericksonricci
    e-mail: ericksonfabricio@gmail.com
    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**
    domingo, 23 de outubro de 2011 05:55

Respostas

Todas as Respostas

  • Erickson,

    O que você notou de diferença? A estrutura da página foi alterada?

    Vale ressaltar que a partir do momento que realizamos o CheckPoint de forma manual o SQL Server trabalha de uma forma diferente ao Checkpoint pré-definido.

    Mas eu não consegui entender em relação que você esta dizendo sobre mudança na página!!!


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
    domingo, 23 de outubro de 2011 13:23
  • Junior,

    Não foi a estrutura da página que mudou, o que mudou foi a página mesmo.

    Depois de criar a tabela e inserir alguns registros, a primeira página da tabela era a página 192. Depois de apagar um registro e fazer o checkpoint, a primeira página da tabela passou a ser a página 194.

    Mas acho que entendi o que aconteceu... estava refazendo meu teste e peguei o meu "gap"...

    A página inicial da tabela foi alterada depois que foi criado um índice cluster na tabela. Eu refiz o teste e vou colocar o código aqui embaixo... foi comida de bola minha mesmo ,.. mal....

    USE tempdb;

    -- criando uma tabela qualquer
    CREATE TABLE t1 (cod INT, texto CHAR(5));

    -- inserindo alguns registros
    INSERT INTO t1 VALUES (1, 'aaaaa');
    INSERT INTO t1 VALUES (2, 'bbbbb');
    INSERT INTO t1 VALUES (3, 'ccccc');

    -- validando qual seria a primeira página de dados desta tabela
    SELECT sys.fn_PhysLocFormatter(%%physloc%%), *
    FROM t1

    -- validando os dados da primeira página, no meu caso a página 181
    DBCC TRACEON (3604)
    DBCC PAGE('tempdb', 1, 181, 1)

    -- apagando um registro da tabela
    DELETE FROM t1 WHERE cod = 3
    CHECKPOINT

    ALTER TABLE t1 ALTER COLUMN cod INT NOT NULL
    ALTER TABLE t1 ADD CONSTRAINT pk_cod PRIMARY KEY (cod)

    -- validando qual seria a primeira página de dados desta tabela
    SELECT sys.fn_PhysLocFormatter(%%physloc%%), *
    FROM t1


    Erickson Ricci
    Microsoft MCP, MCTS SQL Server 2005, 2008
    Visite o meu blog: http://ericksonricci.wordpress.com
    Me siga no twitter: @EricksonRicci
    LinkedIN: http://br.linkedin.com/in/ericksonricci
    e-mail: ericksonfabricio@gmail.com
    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**
    domingo, 23 de outubro de 2011 18:29
  • Boa Noite,

    De fato se a tabela foi clusterizada é muito pouco provável que a numeração das páginas em relação a HEAP TABLE sejam as mesmas. Parar pular de 192 para 194, eu seria capaz de apostar que a 192 virou uma IAM e a 193 virou uma página root. Dá pra conferir com o DBCC IND.

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Richard Juhasz terça-feira, 25 de outubro de 2011 18:38
    domingo, 23 de outubro de 2011 23:20
  • Gustavo,

    De fato, acho que foi isto mesmo que aconteceu. A página anterior parece ter se tornado mesmo um IAM e a outra virou a página root.

    Só não consegui identificar exatamente como sei que a página anterior é de fato um IAM. Como posso ter esta certeza analisando o resultado de um DBCC PAGE?

     

    Obrigado.


    Erickson Ricci
    Microsoft MCP, MCTS SQL Server 2005, 2008
    Visite o meu blog: http://ericksonricci.wordpress.com
    Me siga no twitter: @EricksonRicci
    LinkedIN: http://br.linkedin.com/in/ericksonricci
    e-mail: ericksonfabricio@gmail.com
    **Ajude a melhorar o sistema de busca do fórum.Marque a(s) resposta(s) que foram úteis**
    **Se esta resposta solucionou a questão, então, por favor, marque-a como resposta.**
    domingo, 23 de outubro de 2011 23:33
  • Oi Erickson,

    Dá uma olhadinha no PAGE TYPE. Se for 10, é uma IAM

    [ ]s,

    Gustavo Maia Aguiar
    Blog: http://gustavomaiaaguiar.wordpress.com
    Vídeos: http://www.youtube.com/user/gmasql


    Classifique as respostas. O seu feedback é imprescindível
    segunda-feira, 24 de outubro de 2011 01:26