Forçando transação vitima de rollback em deadlock

Se você utiliza uma Storage Engine que suporta transações, você provavelmente já enfrentou ou ouviu falar de deadlock's.

Na Documentação do MySQL podemos ver:
“Always be prepared to re-issue a transaction if it fails due to deadlock. Deadlocks are not dangerous. Just try again.”
“Sempre esteja preparado para re-executar uma transação se ela falhar por causa de deadlock. Deadlocks não são perigosos. Apenas re-execute a transação.”

Na empresa em que trabalho, temos um importante processo que de vez em quando falha por causa de deadlock. Decidi então melhorar este processo e fazer o que a documentação diz (re-executar a transação).
Para fazer isso, Eu queria poder reproduzir o scenario do deadlock e a transação vitima do rollback teria que ser a do processo em questão.

[Leia mais]
10 coisas para não fazer no PHP 7

Com o lançamento do PHP 7, surge a oportunidade de podermos, de certa forma, melhorarmos algumas práticas que vínhamos executando.

Neste artigo estão reunidas algumas “manias” que é melhor deixarmos de lado para poder aproveitar tudo que de melhor o PHP tem a nos oferecer.

1. Não utilize funções mysql_*

Finalmente chegou o tempo em que não seremos mais apenas orientados a não utilizar as funções mysql_*. No PHP 7 essas funções foram retiradas, o que significa que você terá que mudar para as funções (muito melhores, por sinal) mysqli_*, ou então utilizar alternativas melhores ou mais flexíveis como PDO ou um ORM.

2. Evite desperdício de código

Em outras palavras: não escreva código inútil que desperdice o desempenho. Na verdade, a velocidade no PHP 7 aumentou …

[Leia mais]
Trabalhando com o INFORMATION_SCHEMA

Olá pessoal!

Hoje eu vou falar um pouco sobre o INFORMATION_SCHEMA e as informações contidas nesta base de dados.

O que é o INFORMATION_SCHEMA?

O INFORMATION_SCHEMA é um banco de dados somente leitura que fornece acesso aos METADADOS (metadata) do servidor. Os metadados são dados sobre os dados, tais como o nome de uma base ou de uma tabela, o tipo de dados de uma tabela, ou privilégios de acesso. Outros termos que às vezes são usados para estas informações são: data dictionary e system catalog. É o banco de dados de informações, informações sobre todos os outros bancos de dados que o servidor MySQL mantém. Dentro do INFORMATION_SCHEMA existem várias tabelas que são somente leitura, não são tabelas de base, não existem arquivos associados a elas. Além disso, não há nenhum diretório de banco de dados com esse nome.

Embora você possa selecionar o INFORMATION_SCHEMA como banco de …

[Leia mais]
Trabalhando com o INFORMATION_SCHEMA

Olá pessoal!

Hoje eu vou falar um pouco sobre o INFORMATION_SCHEMA e as informações contidas nesta base de dados.

O que é o INFORMATION_SCHEMA?

O INFORMATION_SCHEMA é um banco de dados somente leitura que fornece acesso aos METADADOS (metadata) do servidor. Os metadados são dados sobre os dados, tais como o nome de uma base ou de uma tabela, o tipo de dados de uma tabela, ou privilégios de acesso. Outros termos que às vezes são usados para estas informações são: data dictionary e system catalog. É o banco de dados de informações, informações sobre todos os outros bancos de dados que o servidor MySQL mantém. Dentro do INFORMATION_SCHEMA existem várias tabelas que são somente leitura, não são tabelas de base, não existem arquivos associados a elas. Além disso, não há nenhum diretório de banco de dados com esse nome.

Embora você possa selecionar o INFORMATION_SCHEMA como banco de …

[Leia mais]
MySQL + JSON da casamento SIM!

Hoje vamos falar um pouco sobre um assunto muito desejado e esperado, tanto por desenvolvedores quanto por DBAs. O MySQL suporta armazenar documentos JSON???? A resposta é um grande e sonoro SIM!!! Na versão 5.7.8 foi adicionado o data type JSON e com ele você pode armazenar e manipular documentos JSON. Isso significa que posso … Read More →

Instalação MySQL 5.7 no FreeBSD 11

O FreeBSD é o sistema operacional UNIX-like que sempre foi sinônimo de estabilidade e segurança. O MySQL 5.7 possui muitos recursos interessantes, como o suporte nativo a JSON e melhor performance e segurança. Neste tutorial veremos como instalar o MySQL 5.7 no FreeBSD 11.
Nota: usei o FreeBSD em uma Virtual Machine para testar este procedimento. Criei a VM usando o Vagrant e Virtual Box. Depois de instalar o Vagrant e Virtual Box, criei um Vagrantfile no editor de textos com o conteúdo abaixo:Vagrant.configure("2") do |config|  config.vm.guest = :freebsd  config.vm.synced_folder ".", …

[Leia mais]
Conhecendo a ferramenta Docker Compose – Parte 02

Oi, pessoal!

Seguindo nossa série de artigos sobre as ferramentas do ecossistema Docker, hoje veremos um pouco mais sobre o Docker Compose, uma ferramenta que vai agilizar no deploy de seu ambiente, utilizando uma forma simples, clara e padronizada.

O Docker Compose é uma ferramenta para a criação e execução de múltiplos containers de aplicação. Com o Compose, você usar um arquivo do tipo yaml para definir como será o ambiente de sua aplicação e usando um único comando você criará e iniciará todos os serviços definidos.

O Compose é ótimo para desenvolvimento, testes e homologação, bem como para melhorar seu fluxo de integração continua. Por exemplo:

  • Em ambiente de desenvolvimento: Você pode utilizar ele para simular todo o ambiente de produção, ou seja, precisando de serviço redis, php, mysql? Basta definir isso em um arquivo .yml e quando você executar o …
[Leia mais]
Instalação MySQL 5.7 no Slackware 14.1



O MySQL já está pronto para produção com muitos recursos interessantes, como o suporte nativo a JSON e melhor performance e segurança. O Slackware é a distro Linux mais antiga e tradicional, com muitos e muitos fãs. Neste tutorial veremos como instalar o MySQL 5.7 no Slackware 14.1.

Nota: usei o Slackware em uma Virtual Machine para testar este procedimento. Criei a VM usando o Vagrant e Virtual Box. Depois de instalados, basta executar:shell> vagrant init ricardson/slackware64-14.1-minimalshell> vagrant up --provider virtualbox

2 opções de …

[Leia mais]
Como selecionar dados em uma tabela que está em outro servidor

Muitas vezes temos a necessidade de realizar consultas ou até mesmo JOINs com tabelas que estão em outro servidor MySQL/MariaDB. E no nosso cenário não tenos um MySQL Cluster, nem um MySQL Galera Cluster, nem sequer uma replicação, seja isso por qualquer motivo(projetos diferentes, empresas diferentes, etc…). Para isso o MySQL tem(e faz muito tempo) … Read More →

DatabaseCast 64: Atualização de versão

Olá, pessoal! Neste episódio, Mauro Pichiliani (Twitter | Blog), Wagner Crivelini (@wcrivelini) e o convidado Ricardo Rezende (@ricarezende) reservam seus horários de trabalho para atualizar a versão do banco de dados.

Você vai aprender como convencer o CEO a atualizar de versão, bater o pé e esperar um novo release, planejar a migração e atualização, bater o seu recorde de horas trabalhadas no carnaval e amaldiçoar quem mudou um script de sistema do Oracle.

[Leia mais]