Visite também: Br-Linux ·  VivaOLinux ·  LinuxSecurity ·  Dicas-L ·  NoticiasLinux ·  SoftwareLivre.org ·  [mais]
Voltar   Under-Linux.org Fóruns > UnderLinux Wiki
Wiki Classificados Galeria Reviews Jogos Comunidades RSS Feeds FAQ Termos de Uso Sobre
Cadastre-se FotosBlogs Lista de Membros Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Ferramentas pessoais
Publicidade

From UnderLinux Wiki

Instalando o MySQL no Slackware

Tabela de conteúdo

Introdução

Transações, são seqüências de operações que são executadas após um delimitador e finalizadas após outro delimitador. No caso do Mysql, nosso delimitador de inicio é o comando start transaction, e o delimitador de fim de transação pode ser commit ou rollback.

No mysql o tipo de tabela que dá suporte a transações é o InnoDB. Por default o mysql cria tablelas do tipo MYISA, logo, se você quiser 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 otipo desejado.

O tipo MYISAM utiliza três arquivos para cada tabela:

  • Arquivo *.frm
  • Arquivo *.MYD
  • Arquivo *.MYD


Já o tipo InnoDB utiliza apenas um arquivo:

Arquivo *.frm

Logo, após aconversão, existirá apenas um arquiovo *.frm para cada tabela.

Criação das tabelas

Primeiramente, vamos realizar a criação de uma tabela InnoDB:

mysql> create table teste (teste_id int(2), teste_nome varchar(10)) type=innodb;
Query OK, 0 rows affected (1.15 sec)

Observe que adicionamos a nossa estrutura de criação o parâmetro type=innodb. Vamos realizar agora a conversão de uma tabela:

mysql> create table teste1 (teste_id int(2), teste_nome varchar(10));
Query OK, 0 rows affected (0.13 sec)

Criamos a tabela teste1 com o tipo MYISA (default), mysql> alter table teste1 type=innodb;

Query OK, 0 rowsaffected (0.38 sec) Records: 0 Duplicates: 0 Warnings: 0 </pre>

Através do comando alter, trocamos o tipo da tabela para InnoDB.

Pronto, agora nossas tabelas já possuem suporte a transações.

Iniciando uma transação

Vamos agora inicar uma transação.

O mysql por default,trabalha no modo de autocommit, isso significa que sempre que você executa um comando, ele é imediatamente executado/gravado no banco. Seja ele certo ou errado. Para iniciarmos uma transação, temos que desabilitar o autocommit, pelo menos para aquela instância da transação.

mysql> set autocommit=0;
Query OK, 0 rows affected (0.02 sec)

Vamos inicar nossa trasação:

mysql> start transaction;
Query OK, 0 rows affected (0.02 sec)

--> Comandos SQL
--> Comandos SQL
--> Comandos SQL
--> Comandos SQL

Ao terminar, se estiver satisfeito com os comandos acima, basta entrar com o comando commit que os resultados dos sql acima serão gravados no banco e disponibilizado para todos.

mysql> commit;

Caso o resultado acima tenha apresentado erro, ou não seja satisfatório, basta executar um rollback e todos os comandos digitados após o start transaction serão desconsiderados.

mysql> rollback;

Conforme o explicado acima, conseguimos implementar as transações, da mesma forma que outros Banco de Dados comerciais utilizam. Com isso trazemos maior segurança e escalabilidade para nossas aplicações, utilizando um banco de dados open source.

Observações

  • Nas versões anteriores a 4.0.11, ao invés de utilizar o comando start transaction, use o comando begin
  • Antes da conversão das tabelas de produção, faça um backup
  • Para desativar o modo autocommit do mysql, adicione no arquivo my.cnf ou my.ini a linha autocommit=0
  • Para alterar o tipo padrão de criação de tabelas para InnoDB, basta acrescentar a linha na sessão [mysqld] do arquivo 'my.cnf' ou my.ini


Agradecimentos

Agradeço ao amigo Wolbert Kenossy pela ajuda na redação deste material.



Frederico Madeira
Horários baseados na GMT -3. Agora são 4:00.


Powered by vBulletin®
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.