Escolar Documentos
Profissional Documentos
Cultura Documentos
2
ACID
Atomicidade
Exemplo:
Em uma transação realizamos
• Inclusão de um cliente novo
• Geração de uma nota fiscal
• Baixa no estoque do produto vendido
4
ACID
Consistência
Exemplo:
5
ACID
Isolamento
Garantir que nenhuma transação seja interferida por outra até que
ela seja completada.
6
ACID
Isolamento
Exemplo:
Exemplo:
8
ACID
Durabilidade
9
Transações
Exemplo:
START TRANSACTION;
SELECT @A:=SUM(salario)
FROM funcionarios
WHERE cargo=‘Programador’;
UPDATE resumo
SET somatorio=@A
WHERE cargo=‘Programador’;
COMMIT; 11
Transações
12
Transações
13
Transações
Principais instruções
Start Transaction (ou BEGIN):
14
Transações
Principais instruções
SavePoint:
15
Transações
Principais instruções
Rollback to Savepoint
16
Transações
Principais instruções
Rollback
17
Transações
Principais instruções
Commit
18
Transações
Principais instruções
AUTOCOMMIT
19
Transações
Principais instruções
AUTOCOMMIT
20
Transações
Principais instruções
AUTOCOMMIT
21
Transações
Principais instruções
AUTOCOMMIT
[mysqld]
autocommit = 0
22
Níveis de Isolamento
24
Níveis de Isolamento - Fenômenos
25
Níveis de Isolamento - Fenômenos
dirty read
(leitura suja)
26
Níveis de Isolamento - Fenômenos
27
Níveis de Isolamento - Fenômenos
29
Níveis de Isolamento – Fenômenos
30
Níveis de Isolamento - Fenômenos
Uma transação “A” pode ler um conjunto de linhas de uma tabela com base
em alguma condição WHERE SQL.
Suponhamos que a transação “B” insira uma nova linha que também
satisfaz a clausula WHERE na tabela utilizada pela transação A.
Se a transação “A” for repetida ela verá um fantasma, ou seja, uma linha
que não existia na primeira leitura utilizando a clausula WHERE.
31
Níveis de Isolamento - Fenômenos
Phantom read
(leitura fantasma)
32
Níveis de Isolamento
Repeatable Read
Este nível garante que a mesma leitura de um dado através do
SELECT se repita, tendo o mesmo resultado para diferentes
execuções na mesma transação.
33
Níveis de Isolamento
Repeatable Read
É possível acontecer a leitura fantasma com este nível de
bloqueio utilizando o Engine InnoDB.
34
Níveis de Isolamento
Read Commited
Read Uncommited
36
Níveis de Isolamento
Serializable
38
Níveis de Isolamento
[mysqld]
transaction-isolation = 'isolation_level'
40
Níveis de Isolamento
Fonte: http://sqlparatodos.com.br/niveis-de-isolamento-mysql/
41
Storage Engines / motores
Mecanismos de Armazenamento
Principais características, recursos ou funcionalidades inerentes
aos storage engines:
• Capacidade Transacional
• Meio de armazenamento
• Índices
• Integridade Referencial
• Tipo de travamento
• BOL – Backup On-Line
• Auto Recovery 42
Storage Engines / motores
Mecanismos de Armazenamento
Capacidade Transacional
Capacidade da tabela aceitar múltiplos acessos (de múltiplos
usuários / aplicações), com colisão e travamento mínimos, sem
que um usuário interfira com a operação do outro.
É poder executar comandos em blocos (transação), ao invés de
executar um comando SQL por vez.
É estar de acordo com o modelo ACID (Atômico, Consistente,
Isolado e Durável). 43
Storage Engines / motores
Mecanismos de Armazenamento
Meio de armazenamento
No MySQL/MariaDB, dependendo do motor escolhido, pode-se
gravar a tabela 100% em memória (nada no disco)
Em vários outros bancos de dados, toda tabela grava e lê os
dados de uma única forma padrão.
Pode-se gravar dados em uma TABLESPACE, como no Oracle,
por exemplo.
44
Storage Engines / motores
Mecanismos de Armazenamento
Meio de armazenamento
Pode-se se utilizar uma tecnologia dos anos 70, extramente
rápida, conhecida como ISAM, para gravar dados e recuperá-los
(leitura) de forma muito rápida.
45
Storage Engines / motores
Mecanismos de Armazenamento
Meio de armazenamento
Ainda, pode-se gravar em formato CSV que facilita muito a
integração com equipamentos de rede e telefonia, por exemplo.
46
Storage Engines / motores
Mecanismos de Armazenamento
Índices
47
Storage Engines / motores
Mecanismos de Armazenamento
Integridade Referencial
FK (foreign key).
Há motores que usam, e, motores que não usam.
Dependendo da aplicação ou finalidade da tabela isto não é
necessário.
É uma funcionalidade que pesa para o banco de dados.
Às vezes, não ter este recurso pode ser uma vantagem em termos
de velocidade. 48
Storage Engines / motores
Mecanismos de Armazenamento
Tipo de travamento
49
Storage Engines / motores
Mecanismos de Armazenamento
BOL – Backup On-Line
Fazer backup on line (com todo mundo trabalhando, sem precisar
parar o banco).
Tem um custo alto.
Se a sua aplicação não roda H24 (24 horas por dia), significa que
você tem janela de backup. Talvez seja interessante abrir mão
deste recurso para ter mais agilidade nas leituras e escritas.
50
Storage Engines / motores
Mecanismos de Armazenamento
Auto Recovery
52
Mecanismos de Armazenamento
e Tipos de Tabelas no MySQL
53
Mecanismos de Armazenamento
suportados pelo MySQL
InnoDB
54
Mecanismos de Armazenamento
suportados pelo MySQL
InnoDB
MyISAM
Merge
57
Mecanismos de Armazenamento
suportados pelo MySQL
Archive
58
Mecanismos de Armazenamento
suportados pelo MySQL
Federated
59
Mecanismos de Armazenamento
suportados pelo MySQL
CSV
61
Mecanismos de Armazenamento
suportados pelo MySQL
Exemplo:
mysql> CREATE TABLE teste1
-> ( t1 varchar(10)
-> ) engine=innodb;