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 / 54940
Accepted
Fulproof
Fulproof
Asked: 2013-12-14 00:35:34 +0800 CST2013-12-14 00:35:34 +0800 CST 2013-12-14 00:35:34 +0800 CST

O RCSI usa menos ou o mesmo espaço que o SNAPSHOT? Por quê?

  • 772

Tentando entender melhor os isolamentos de transação baseados em versionamento de linha - RCSI (Read Committed Snapshot Isolation and SNAPSHOT) - no SQL Server...

O artigo online do MSDN " Escolhendo níveis de isolamento baseados em controle de versão de linha " declara:

  • *"Para a maioria dos aplicativos, o isolamento de confirmação de leitura usando controle de versão de linha é recomendado em vez do isolamento de instantâneo pelos seguintes motivos:
    • Consome menos espaço tempdb do que o isolamento de instantâneo"*

o que contradiz a declaração de Kimberly L. Tripp, " SQL Server 2005 Row Versioning-Based Transaction Isolation " de Neal Graves:

  • "Versão de linha
    em leitura confirmada usando controle de versão de linha Para consultas executadas sob leitura confirmada usando controle de versão de linha, as versões de linha são necessárias apenas durante cada instrução SELECT na transação. No entanto, as versões de linha são mantidas até o final da transação. Este é um ponto importante a ser considerado para o armazenamento tempdb. O impacto do armazenamento será o mesmo que seria para o isolamento de instantâneo. "

Então, por que o RCSI usa menos (ou o mesmo) espaço?

ATUALIZAÇÃO:
Provavelmente formulei mal a pergunta original, mas isso implica que existem explicações e confirmações RTFM para ambas as "teorias" contraditórias e gostaria de entender:
Qual é a correta?
Por que aquele é realmente correto?
e
Por que outro não está realmente correto (Por que outro está errado?)?

SUBPERGUNTA:

No caso de várias atualizações do mesmo registro em uma única transação, quantas versões estão sendo armazenadas?

sql-server transaction
  • 1 1 respostas
  • 334 Views

1 respostas

  • Voted
  1. Best Answer
    Jon Seigel
    2013-12-14T06:38:55+08:002013-12-14T06:38:55+08:00

    O isolamento de instantâneo confirmado por leitura (isolamento de instantâneo em nível de instrução) potencialmente usa menos armazenamento do que o isolamento de instantâneo (isolamento de instantâneo em nível de transação) porque geralmente as versões de linha não são necessárias por um longo período de tempo após terem sido geradas.

    Para o isolamento do instantâneo no nível da transação, as versões precisam permanecer durante toda a duração de uma transação, o que pode ser bastante longo (ou muito longo, como visto aqui ). É claro que as instruções também podem ser executadas por um longo tempo, mas geralmente é o caso de uma transação demorar mais.

    Para enfatizar o ponto: uma transação executada sob isolamento de instantâneo tem a garantia de ver os dados confirmados como existiam no início da transação. Isso significa que as versões de linha devem ser mantidas até que toda a transação seja concluída. Onde a mesma transação está sendo executada sob RCSI, as versões de linha podem potencialmente ser liberadas após cada instrução. No geral, o isolamento de instantâneo tende a resultar em um tamanho de armazenamento de versão maior do que RCSIna mesma carga de trabalho.

    As mesmas versões são geradas com uma ou ambas as configurações ativadas. Acredito que Kimberly estava se referindo ao impacto do armazenamento no sentido da taxa de gravação, não do armazenamento usado, então as duas declarações que você mencionou não são contraditórias; apenas um pouco obscuro ou inespecífico.

    • 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

    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

    Conceder acesso a todas as tabelas para um usuário

    • 5 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
    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
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +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