Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP

Documentos relacionados
Transações Seguras em Bancos de Dados (MySQL)

GBC043 - Sistemas de Banco de Dados Lab8 : Transações no PostgreSql

BDII SQL TRANSAÇÃO Revisão 2

Lista de Exercícios 12 Transações

Orientações. Transações - PostgreSQL. Relembrando: Propriedades desejáveis. Abrir Prompt de comando ROLLBACK

CONCORRÊNCIA. Buscando aumentar os níveis de concorrência redução da espera em detrimento do isolamento, a SQL definiu alguns níveis de isolamento.

Sumário. Introdução a Transações

Controle de Transação

Banco de Dados I 6 Transações e Controle de Concorrência

se a transacção falhar entre os passos 4 6, os passos 1 3 ficam sem efeito

BD II (SI 587) Transações em Banco de Dados. Prof. Josenildo Silva

se a transação falhar entre os 3 passos 4 6, os passos 1 3 ficam sem efeito 4 read(b) Consistência

Oracle Comandos para Processamento de Transações

Sistemas de Informação e Bases de Dados 2012/2013. Transações. Alberto Sardinha

Banco de Dados II. Transações (Oracle) Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Processamento de Transações

PSI Linguagem de Definição de dados. Módulo 15

Banco de Dados I. Aula 18 - Prof. Bruno Moreno 22/11/2011

Transacções. Vitor Vaz da Silva

Professor Leonardo Larback

Controle de Transações. Banco de Dados André Luiz do Vale Soares

CONCORRÊNCIA. 1. Introdução. Recursos exclusivos. Não necessita controle. Abundância de recursos compartilhados. Controle necessário mas mínimo

Lock. Administração de Banco de Dados

Aula 03. Evandro Deliberal

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Processamento de Transações

BCD29008 Banco de dados

Banco de Dados I Introdução SQL

Linguagem SQL Restrições, Triggers e Views

Múltiplas Tabelas. Disciplina de Banco de Dados

Conceitos. Gestão de Transacções. Transacção. Conceitos e Propriedades. Controlo de Concorrência. Recuperação. Transacções no SGBD Oracle

BCD29008 Banco de dados

Tabelas. Banco de Dados I MySQL

FACULDADE INGÁ Unidade de Ensino Superior Ingá Ltda Ciência da Computação TRIGGERS. Prof. Erinaldo Sanches Nascimento

Triggers(Gatilhos) Tiago Alves de Oliveira

Administração de Banco de Dados

Banco de Dados. Maurício Edgar Stivanello

Processamento de Transações. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

BANCO DE DADOS 2 TRANSAÇÃO

Criando Transações. Prof. Fernanda Baião. TbEstoqueLivros. TbEstoqueLivros. ID IDLoja IDLivro Estoque

Sistemas de Bases de Dados 2.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Revisão Banco de Dados

Gerenciamento de Transações em Banco de Dados

Processamento de Transações

A linguagem SQL

Processamento de Transações

Processamento de Transações. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

BANCO DE DADOS II SQL Básico. COTEMIG Gerson Borges

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Sistemas Distribuídos Transações

Sistemas de Bases de Dados 2.º teste (com consulta limitada: 2 folhas identificadas) - Duração: 2 horas

Processamento de INDUSTRIA 4.0. Big Data. Aula #8 - Transações e concorrência MARMELADA NO RING, FONTE: ESTADAO EDUARDO CUNHA DE ALMEIDA

revisão Controle de Concorrência com Locks Bancos de Dados I 2015/02

UNIVERSIDADE FEDERAL DO MARANHÃO - UFMA. Banco de Dados II. Recuperação. Carlos Eduardo Portela Serra de Castro

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Controle de transações em SQL

A U L A 1 0 C R I A N D O V I E W S V I E W S ( V I S Õ E S )

23/05/12. Conteúdo. Introdução ao gerenciamento de transações. Motivação. Motivação. Motivação. Motivação

ANÁLISE E PROJETO DE BANCO DE DADOS

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Introdução. Processamento de Transações. Introdução. Introdução. Transações. Transações

Banco de Dados para Web

A instância Oracle é composta de :

MySql. Introdução a MySQL. Andréa Garcia Trindade

Banco de Dados. Professora: Luciana Faria

BD II (SI 587) Backup de Banco de Dados. Josenildo Silva.

RECUPERAÇÃO DE CONTEÚDO BANCO DE DADOS

trigger insert, delete, update

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Marcos Alexandruk Marcos Alexandruk

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 21. Escola Politécnica da Universidade de São Paulo

Adriano Maranhão TRANSAÇÕES

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Banco de Dados II. Transações. Segurança: Introdução; Controle de Acesso; Criptografia; Recursos de SQL.

Aula 06 Sistemas Embarcados LT38C

Bases de Dados. Parte VI SQL em Ambiente de Programação

Sistemas de Gerência de Bancos de Dados

Introdução. Processamento de Transações. Introdução. Introdução. Transações. Transações. Transação

Programando em SQL. Triggers, Stored Procedures e funções. Profa. Késsia Marchi

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

[versão para impressão] Link original: comp=24763 Conhecendo o PL/SQL

e c d o o r B s s n i : l e F s

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

Stored Procedures e Triggers

Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker

Bases de Dados 2013/2014 Transações. Helena Galhardas. Sumário!

Transcrição:

Instituto Federal de Educação, Ciência e Tecnologia de São Paulo - IFSP Campus de Caraguatatuba Tecnólogo em Análise e Desenvolvimento de Sistemas 1 0 Semestre de 2013 BD I Prof. Lineu Mialaret Aula 25: Controle Transacional em BD Aula 25-1

Introdução (1) Aula 25-2

Introdução (2) Uma transação é um programa em execução (sequência de instruções), o qual forma uma unidade lógica de processamento no banco de dados. Uma transação inclui uma ou mais operações de acesso ao banco de dados Englobam operações de inserção, exclusão, alteração ou recuperação. Aula 25-3

Introdução (3) Aula 25-4

Introdução (4) Aula 25-5

Propriedades ACID (1) Do ponto de vista dos Sistemas Gerenciadores de Bancos de Dados (SGBD), ACID são propriedades fundamentais nos processos transacionais, pois garantem a consistência da base de dados. Propriedades ACID: Atomicidade; Consistência; Isolamento; e Durabilidade. Aula 25-6

Atomicidade Propriedades ACID (2) A propriedade de atomicidade garante que as transações sejam atômicas (indivisíveis). A transação será executada totalmente ou não será executada. Se durante a transação qualquer ação que constitui uma unidade de trabalho falhar, a transação inteira deve ser desfeita (rollback). Quando todas as ações são efetuadas com sucesso, a transação pode ser efetivada e persistida em banco (commit). Aula 25-7

Consistência Propriedades ACID (3) A propriedade de consistência garante que o banco de dados passará de uma forma consistente para outra forma também consistente. Uma fotografia do banco (snapshot) é tirada e esse é seu estado, depois de uma transação é retirada uma nova foto, se a 1ª estava consistente a 2ª também deverá estar. Todas as regras e restrições definidas no banco de dados devem ser obedecidas. Relacionamentos por chaves estrangeiras, checagem de valores para campos restritos ou únicos devem ser obedecidos para que uma transação possa ser completada com sucesso. Aula 25-8

Propriedades ACID (4) Isolamento A propriedade de isolamento garante que a transação não será interferida por nenhuma outra transação concorrente. Caso sejam executadas duas transações juntas referentes ao mesmo dado, uma transação será executada e todos os dados da tabela são alocados para aquela transação e a outra somente será executada após o término da 1ª. Cada transação funciona completamente à parte de outras estações. Todas as operações são parte de uma transação única. O principio é que nenhuma outra transação, operando no mesmo sistema, possa interferir no funcionamento da transação corrente(é um mecanismo de controle). Outras transações não podem visualizar os resultados Aula 25-9

Durabilidade Propriedades ACID (5) A propriedade de durabilidade garante que o que foi salvo (persistido), não será mais perdido. A responsabilidade fica sobre o subsistema de restauração do SGBD. Significa que os resultados de uma transação são permanentes e podem ser desfeitos somente por uma transação subsequente. Por exemplo, todos os dados e status relativos a uma transação devem ser armazenados num repositório permanente, não sendo passíveis de falha por uma falha de hardware. Aula 25-10

Porque a Restauração é Necessária O subsistema de restauração de transações do SGBD é o responsável pela atomicidade. Ele deverá garantir que: Todas as operações na transação foram completadas com sucesso e seu efeito será gravado permanentemente no banco de dados; ou A transação não terá nenhum efei to sobre o banco de dados ou sobre quaisquer outras transações. Aula 25-11

Suporte a Transações no MySQL No SGBD MySQL o tipo de tabela que dá suporte a transações é o InnoDB. Por default o MySQL cria tabelas do tipo MYISA, logo, caso se queira ativar o suporte a transações, será necessário realizar a conversão dos tipos da tabela, do tipo padrão para o InnoDb e/ou criá-las e especificar o tipo desejado. Aula 25-12

Tabelas InnoDB Dotam o MySQL com um mecanismo de armazenamento seguro com transações (compatível com ACID) com commit, rollback, e recuperação em caso de falhas. InnoDB é o primeiro gerenciador de armazenamento no MySQL que suportam restrições do tipo FOREIGN KEY. Foi desenvolvido para obter o máximo de performance ao processar grande volume de dados. Aula 25-13

Criação e Alteração de Tabela Innodb Criação de tabela com tipo Innodb create table teste ( teste_id int(2), teste_nome varchar(10) ) engine=innodb; Criação tabela normal(myisa - default) create table teste1 ( teste_id int, teste_nome varchar(10) ); Alteração de MYISA para Innodb alter table teste1 engine =innodb; Aula 25-14

Comandos Transacionais no MySQL Por padrão, MySQL é executado em modo autocommit. Isto significa que assim que se executa uma instrução que atualiza (modifica) uma tabela, o MySQL armazena a atualização no disco. Aula 25-15

Comandos Transacionais (1) Caso se utilize de tabelas com segurança a transação (como InnoDB\ou BDB), pode-se colocar o MySQL em modo não autocommit com o seguinte comando: 1 - SET AUTOCOMMIT=0 2 - START TRANSACTION A diferença entre (1) e (2) é que usando (2) o AUTOCOMMIT volta a estar habilitado quando se termina a transação (um comando COMMIT ou um comando ROLLBACK). Aula 25-16

Comandos Transacionais (2) Com o autocommit desabilitado, pode-se utilizar os comandos: COMMIT, para armazenar suas alterações em disco; ROLLBACK, caso se deseje ignorar as alterações que foram feitas desde o início da transação. SAVEPOINT, que cria um ponto de retorno; e ROLLBACK TO SAVEPOINT, que desfaz as operações até o ponto de retorno. Aula 25-17

Comandos Transacionais (3) Quando um SAVEPOINT é criado usando um nome já atribuído a outro SAVEPOINT, o SAVEPOINT antigo é apagado e o nome atribuído ao novo SAVEPOINT. Aula 25-18

Exemplo 1 START TRANSACTION; INSERT INTO tb1 (id,nome,email) VALUES (2,'Nome X','x@com.ber'); INSERT INTO tb2 (id,nome,email) VALUES (3,'Nome Y','y@com.ber'); COMMIT; Aula 25-19

Exemplo 2 SET AUTOCOMMIT = 0; SAVEPOINT meu_ponto1; UPDATE tb_dinheiro SET qtd = qtd 300 WHERE client_id = '10'; SAVEPOINT meu_ponto2; UPDATE tb_dinheiro SET qtd = qtd+300 WHERE client_id = '15'; SELECT qtd FROM tb_dinheiro WHERE client_id = '10'; SELECT qtd FROM tb_dinheiro WHERE client_id = '15'; ROLLBACK TO SAVEPOINT meu_ponto2; SELECT qtd FROM tb_dinheiro WHERE client_id = '15'; ROLLBACK TO SAVEPOINT meu_ponto1; SELECT qtd FROM tb_dinheiro WHERE client_id = '10'; COMMIT; Aula 25-20

Nem Tudo Pode ser Desfeito Há comandos SQL que não podem ser desfeitos com o ROLLBACK ou com o ROLLBACK TO SAVE POINT, isso porque causam um COMMIT implicitamente ao serem declarados. Deve-se tomar cuidado com o uso desses comandos dentro de suas transações. Aula 25-21

Comandos que Não Podem Ser Desfeitos ALTER FUNCTION, ALTER PROCEDURE, ALTER TABLE, CREATE DATABASE, CREATE FUNCTION, CREATE INDEX, CREATE PROCEDURE, CREATE TABLE, DROP DATABASE, DROP FUNCTION, DROP INDEX, DROP PROCEDURE, DROP TABLE, LOAD MASTER DATA, LOCK TABLES, LOAD DATA INFILE, RENAME TABLE, SET AUTOCOMMIT=1, START TRANSACTION, TRUNCATE TABLE, UNLOCK TABLES. Aula 25-22

Set Transaction (1) SET [GLOBAL SESSION] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED READ COMMITTED REPEATABLE READ SERIALIZABLE } O comportamento padrão é definir o nível de isolação para a próxima (não iniciada) transação. Caso se use a palavra-chave GLOBAL, a instrução define o nível de transação padrão globalmente para todas as novas conexões criadas a partir deste ponto (mas não existe conexão). Precisa-se do privilégio SUPER para fazer isto. Usar a palavra-chave SESSION define o nível de transação padrão para todas a transações futuras realizadas na conexão atual. Aula 25-23

Set Transaction (2) ISOLATION LEVEL define o nível de isolação da transação para global, toda a sessão ou a próxima transação. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED, para ler dados de quaisquer transações não-completadas; SET TRANSACTION ISOLATION LEVEL READ COMMITTED, para ler dados somente de transações completas, incluindo comandos internos; SET TRANSACTION ISOLATION LEVEL REPEATABLE READ, para ler dados somente de transações completas; e SET TRANSACTION ISOLATION LEVEL SERIALIZABLE, para utilizar em conjunto com SELECT LOCK IN SHARE MODE Aula 25-24

Set Transaction (3) A diferença real entre o READ COMMITED e o REPEATABLE READ acontece em transações com mais de um comando. Caso se envie, por exemplo, uma série de consultas e atualizações dentro de uma mesma transação, os dois modos lerão dados de pontos diferentes: READ COMMITED atualizará os dados de leitura a cada comando. Um update em seguida do outro utilizará os dados atualizados, respeitando a transação no qual eles se encontram; e REPEATABLE READ utilizará sempre um único conjunto de dados inicial. Se você efetuar várias atualizações, as leituras serão feitas do mesmo conjunto inicial sempre, relativo ao início da transação. Esse é o modo padrão no MySQL. Aula 25-25

Exemplo Prático (1) Aula 25-26

Exemplo Prático (2) Set @autocommit = 0; Aula 25-27

Exemplo Pratico com Savepoint Aula 25-28