none
Quando se cria indice no SQLSERVER as transações se perdem ? RRS feed

  • Pergunta

  • Bom dia Senhores tenho uma dúvida .

    Suponhamos que exista um sistema onde há várias consultas , inserções e alterações na base dados em tempo real ou seja um sistema web que usa o SQL SERVER  . Se nesse momento eu for até o banco e criar indice para a tabela que mais é consumida o que acontace com as transações e consultas que estavam acontecendo nessa tabela no momento que estou criando o indice para ela ?

    Obrigado desde já .


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    sexta-feira, 6 de dezembro de 2013 11:46

Respostas

Todas as Respostas

  • Deleted
    sexta-feira, 6 de dezembro de 2013 11:53
  • Desculpe-me mas ainda não entendi , simplesmente quando a inserção está rolando usando o campo que está no indice , nesse momento de haver um a Inserção e ao mesmo tempo a criação do Indice o que acontecerá ? O Transação Aguarda a criação do indice e depois retoma a execução ou não simplesmente se perde ? 

    Mesmo assim muito obrigado pelo sua resposta , se puder me responder essa agradeço novamente.


    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    sexta-feira, 6 de dezembro de 2013 11:58
  • Deleted
    sexta-feira, 6 de dezembro de 2013 12:04
  • É José  eu li entendi que haverá sim um bloqueio na tabela para atualizações , mas ainda não fala o que acontece depois da criação se de fato existirá um desbloqueio e daí haverá a inserção por exemplo , ou se simplesmente essa transação de insert se perdeu ?  ainda fico com a minha pergunta em aberto , mas obrigado por enquanto.

    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    sexta-feira, 6 de dezembro de 2013 12:15
  • Deleted
    • Marcado como Resposta Davi Murilo sexta-feira, 6 de dezembro de 2013 12:20
    sexta-feira, 6 de dezembro de 2013 12:19
  • Obrigado agora ficou claro e entendido valeu.

    Davi Murilo Referência Principal : Jesus que ilumina minha mente.
    Referência Profissonal : http://www.tidm.com.br

    sexta-feira, 6 de dezembro de 2013 12:21
  • Davi,

         Um índice pode ser criado utilizando a option ONLINE = ON ou OFF. Isso muda o comportamento no momento exato da criação do índice, mas isso depende da versão do SQL que estiver sendo utilizado.

         Se o seu SQL Server for Enterprise ou Developer, é possível criar um índice online (ONLINE = ON). Isso fará com que o SQL mantenha poucos locks na tabela, permitindo que o usuário possa seguir trabalhando com suas consultas e inserções normalmente. Ele provavelmente nem notará que um índice está sendo criado.

         Se o SQL for Standard ou Express, a criação do índice é OFFLINE. Isso significa que o usuário não terá acesso aos dados durante o período em que o índice estiver sendo criado. Se você estiver criando um índice nonclustered o SQL ainda permite que selects sejam feitos, mas nenhum tipo de update é permitido.

         Agora, respondendo sua pergunta. As transações que existiam no momento da criação do índice continuarão existindo normalmente até que o SQL consiga efetuar os locks necessários para a criação do índice. Nenhuma transação é perdida. O máximo que acontecerá é que não serão concedidos novos locks para novas transações.

         Espero ter ajudado!


    Roberto Fonseca MCT / MCITP - Database Administrator 2008 MCITP - Database Developer 2008 MCITP - Business Intelligence 2008


    sexta-feira, 6 de dezembro de 2013 12:22
    Moderador
  • Deleted
    sexta-feira, 6 de dezembro de 2013 14:20