sistemas de banco de dados - coisas

1. Qual é a coisa

Transação (transacção) é uma operação de acesso com os dados actualizados do sistema constituído por um par de série 程序执行逻辑单元. Em outras palavras: todas as operações realizadas em uma sessão, ao mesmo tempo, quer ter sucesso ou falhar ao mesmo tempo.

4 características básicas ACID 2. Coisas

Transação tem quatro características básicas, a saber:

  • Atomicidade (atomicidade)
  • Consistência (consistência)
  • Isolation (Isolamento)
  • Persistente (Duração)

2.1 atomicidade (atomicidade)

Refere-se a atomicidade de transacção operações deve ser uma unidade átomos de sequência de operação. As operações na transação incluído em uma execução de processos, permitindo que apenas um dos dois estados aparecer.

  • Todos executados com sucesso
  • todos falharam

Qualquer uma das seguintes falhas vai levar ao fracasso de toda a transação, enquanto que outras operações foram realizadas será revogada e rolou para trás, apenas se todas as operações forem bem sucedidos, toda a transação é considerada concluída com êxito.

2.2. Consistência (consistência)

meios de consistência que a transação está executando a transação não põe em causa a integridade e consistência dos dados no banco de dados, e em seguida, executar uma transação, o banco de dados deve impor um estado consistente antes da execução.

Por exemplo: Se você transferir dinheiro da conta A para a conta B, não por causa da conta de dinheiro deduzido A e B não juntar dinheiro para a conta.

2.3 Isolamento

meios de isolamento de transação em um ambiente concorrente, transações concorrentes são isolados uns dos outros, uma transação não pode ser realizada por outras interferências transações. Em outras palavras, diferente transação operação simultânea dos mesmos dados, 每个事务都有各自完整的数据空间.

A operação e uso de dados de transação interna é isolado a partir de outras operações simultâneas, cada transacção não pode ser realizado concorrentemente interferir uns com os outros.

Na especificação SQL padrão define nível de isolamento de quatro transacção, os diferentes níveis de isolamento do processo de transacção. Quatro níveis de isolamento são:

  • Leia não mencionados (READ_UNCOMMITTED)
  • Leia Comprometido (READ_COMMITTED)
  • Leitura Repetida (REPEATABLE_READ,)
  • leitura sequencial (SERIALIZABLE)

2.4. Persistência (Duração)

Durabilidade dos meios de transações que uma vez que a transação é confirmada, os dados no banco de dados deve ser preservado permanentemente. Mesmo que as falhas do servidor ou a falha inatividade do servidor do sistema. Enquanto o banco de dados é reiniciado, ele será capaz de restaurá-lo ao estado após a conclusão bem sucedida da transação.

3. As quatro características de isolamento de coisas pode trazer problemas

As seguintes coisas podem ocorrer quando vários problemas simultâneos:

  • leitura suja

    dados modifica Transação A, mas não enviar a transação para atualizar os resultados de B ler um transações não confirmadas, se a transação não apresentar dados sujos A, a transação B é lido.

  • leitura não repetível

    Leia as mesmas múltiplas transações vezes os mesmos dados, leia resultados inconsistentes. Por exemplo, uma transação antes que a transação A B submeter resultados ler, e ler os resultados após a apresentação pode ser diferente.

  • magia Reading

    Na mesma operação, os resultados da mesma consulta repetidamente retornou inconsistente. Um novo registro de uma transação, a transação B antes e após a apresentação transação A executar uma consulta, uma e outra vez após a descoberta de mais do que o recorde anterior.

Este características de isolamento de coisas estão intimamente relacionados e, portanto, será inferior a quatro características de isolamento Falando sujo lê, leituras fantasmas e problema leitura não repetível.

3.1 Uncommitted Read (READ_UNCOMMITTED)

Leia não confirmadas, o nível de isolamento permite leituras sujas, que é o menor nível de isolamento. Em outras palavras, se uma transação está a processar determinados dados, e ele foi atualizado, mas a transação não foi concluída e, portanto, não confirmar a transação, e isso, ao mesmo tempo, permitir que outra transação pode acessar os dados. Ou seja 事物执行的时候允许访问尚未提交的事物. Isso pode levar a uma leitura suja.

脏读Exemplos

Os seguintes cenários pode ocorrer quando a transação A e B simultaneamente executar uma transacção:

tempo Transação A (depósito) Transação B (retiradas)
T1 comece transação -
T2 - comece transação
T3 - consulta de saldos (1000 yuan)
T4 - Remover 1000 yuan (Balanço 0 yuan)
T5 consulta de saldo (0 yuan) -
T6 - Revogação da transação (o equilíbrio restaurado 1000 yuan)
T7 Depósito de 500 yuan (saldo de 500 yuan) -
T8 Confirmar a transação -

O saldo deve ser de 1.500 yuan filho. Consulte o tempo de ponto T5, a transação A consulta de saldo neste momento é 0, os dados são dados sujos, ele é a causa da transação B, é claro que a transação não é causada pelo isolamento.

3.2 Read Committed (READ_COMMITTED)

A leitura tem submissão é 不同的事物执行的时候只能获取到已经提交的数据. Esta situação não aparecem acima da leitura suja.

Leia Empenhada em resolver o problema da leitura suja, mas ainda não pode resolver o problema de leitura repetida.

不可重复读Exemplos
tempo Transação A (depósito) Transação B (retiradas)
T1 comece transação -
T2 - comece transação
T3 - consulta de saldos (1000 yuan)
T4 consulta de saldos (1000 yuan) -
T5 - Remover 1000 yuan (Balanço 0 yuan)
T6 - Confirmar a transação
T7 consulta de saldo (0 yuan) -
T8 Confirmar a transação -

Na verdade, para além da consulta da transação Um duas vezes, o que mais não fez nada, os resultados de 1000 o dinheiro se torna 0, e isso é problema leitura não repetível.

3,3 leitura repetida (REPEATABLE_READ,)

Quando a transação de leitura repetida é garantir que o processo, os mesmos dados são lidos repetidamente, e o valor da hora de início dos dados de transação é consistente. Portanto, a transação limita o nível de não-repetíveis e sujo lê, mas fantasma lê os dados podem aparecer.

幻读Exemplos

Magia Reading refere-se às mesmas operações de transações, execução em dois períodos, antes e após a leitura do mesmo item de dados, podem ocorrer resultados inconsistentes.

Um tempo de transação (Estatísticas Total de depósitos) Transação B (depósito)
T1 comece transação -
T2 - comece transação
T3 Estatísticas Total de depósitos (1000 yuan) -
T4 - Depositou $ 100
T5 - Confirmar a transação
T6 Submetido ao total de depósitos (1100) -
T7 Confirmar a transação -

funcionários do Banco ver os resultados não a mesma de quando em uma transação total de depósitos mais estatísticas. Se você quiser resolver o read fantasma, você só pode usar de leitura sequencial.

3,4 sequencial Leia (SERIALIZABLE)

A ordem de leitura é o nível de isolamento da transação mais estrito. Ele exige que todas as transações em fila executadas sequencialmente, isto é 事务只能一个接一个地处理,不能并发.

3.5 resumo

Transação comparação nível de isolamento

nível de isolamento transação leitura suja leitura não repetível magia Reading modelo de concorrência detecção de conflitos de atualização
Leia não mencionados (READ_UNCOMMITTED) permitir permitir permitir pessimista X
Leia Comprometido (READ_COMMITTED) banimento permitir permitir pessimista X
Leitura Repetida (REPEATABLE_READ,) banimento banimento permitir pessimista X
leitura sequencial (SERIALIZABLE) banimento banimento banimento pessimista X

4 tipos de nível de isolamento transação para baixo do nível mais elevado de concorrência pior, a segurança está ficando mais e mais.

nível padrão dados gerais é lido para cometer ou leitura repetida.

Referências

  1. https://www.jianshu.com/p/aa35c8703d61
Publicado 148 artigos originais · ganhou elogios 136 · Exibições 250.000 +

Acho que você gosta

Origin blog.csdn.net/DlMmU/article/details/104702345
Recomendado
Clasificación