Mysql 6 & Falcon Storage Engine

É dificil conter meu entusiasmo ao falar do Mysql, sim eu sei, existem vários outros bancos de dados, bons bancos de dados, mas o mysql me cativou, pricipalmente pela simplicidade, ja que também programo em PHP, é a união perfeita, banco flexível com uma linguagem muito flexível.

E com o tempo o Mysql vem se tornando cada vez mais uma opção de banco de dados robusto e seguro para grandes projetos. uma prova é a ultima versão 5.1, Ainda nao tem todos os recursos oferecidos em grandes bancos de dados, mas supriu uma necessidade antiga de Stored procedures, Functions , Triggers e Views.

O Mysql 6 (Falcon Storage engine) foi desenvolvido especialmente para um hardware mais robusto, com muita memoria e Multi-Threads, 64-bits seria a melhor escolha, mas nao impede que você use num hardware 32-bits comum. O Falcon foi desenvolvido para trabalhar aplicações de alto trafego transacional. Alem da nova Storage Engine, o Mysql 6 ainda conta com o suporte a InnoDb e a MyIsam.

Caracteristicas:

 

  • Suporte a windows 64-bits.
  • Suporte a tablespaces.
  • Novas configrações de performance, falcon_log_windows, falcon_index_chill_threshold, and falcon_record_chill_threshold.
    • falcon_log_windows. —Configuração de memória alocada pra o falcon_serial_log no windows, em Mbs O mínimo é 1o e o máximo 32768.
    • falcon_index_chill_threshold - seta o tamanho em Mbs do indice armazenado durente uma transação grande, antes o indice jogava para o serial log. Se oindice é unico ou a transação regularmente re-le os registros desse indice,Os dados são armazanados em memória (para um acesso rápido). Em transações muito grandes, isso impede de sobrecarregar a memória.
    • falcon_record_chill_threshold - É como o falcon_index_chill_threshold, mas ao invés de armazenar o indice armazena um registro.

 

  • SELECT ... FOR UPDATE agora é suportado (mão na roda).
  • Uncommitted record scavenging has been implemented (Não dei conta de traduzir, fico devendo) .
  • Diagnostico de performance através do INFORMATION_SCHEMA.

 

 

  • Um verdadeiro Multi Version Concurrency Control (MVCC) permite registros e tabelas serem alterados sem lock por registro. A implementação do MVCC virtualmente elimina a necessidade de lock de tabela ou de registro durante um UPDATE.
  • Flexible locking, including flexible locking levels and smart deadlock detection keep data protected and transactions and operations flowing at full speed. ( Isso precisávamos mesmo, no 4.1 ou no 5 o lock era muito restrito, essa historia de deadlock detection eu quero testar )
  • Transaction-safe (fully ACID-compliant) and able to handle multiple concurrent transactions.
  • Serial Log provides high performance and recovery capabilities without sacrificing performance. ( Eu gostava do log binario do mysql 5.1, mas com certeza se pode melhorar a performance, eu agradeço.)
  • Advanced B-Tree indexes. ( Estou lendo sobre esses tipo de índice, depois escrevo a respeito dele )
  • Compressão de registros, Ele compacta os dados quando armazenado e descompacta “on the the fly”. Vou ler mais a respeito, a documentação ainda é muito pobre, mas fiquei com um pé atras, será que não vou perder desempenho?
  • Gerenciamento inteligente de disco, automaticamente gerencia arquivos e extensões. Espaço com log e arquivos de dados são automaticamente recuperados e reusados.
  • Cache de Registros e Indices, ele armazena em cache os indices e registros mais usados.
  • Savepoints implicitos, garantindo a integridade dos dados durante a transação.

Tem algumas novidades, outras ja tinhamos no InnoDB, fico devendo algumas traduções e prometo escrever sobre o Indice B-tree, Tablespaces e deadlock detection. Se você quiser testar, pode baixar a versão Alpha aqui.

16 Responses

  1. Olá,

    Avaliamos o MySql, Postgre e Firebird, quando iniciamos nossa empresa de desenvolvimento de sistemas.

    Os 3 bancos apresentam características peculiares e muito boas, mas entre eles, escolhemos o Firebird.

    A maioria dos recursos que estão sendo esperados para o MySql, o Firebird já têm. Além disso, costumamos exemplificar o Firebird como sendo uma geladeira: plugou na tomada, funciona.

    A instalação é muito simples: Next, Next, Finish. Banco rodando.

    É robusto. Temos clientes com 1GB de banco (e crescendo).

    Rico em features que facilitam muito o desenvolvimento.

    Open Source

    etc, etc.

    Não deixo de reconhecer as excelentes qualidades do MySql, e também do PostGre, mas pelo conjunto dos fatores, uso e recomendo o Firebird.

    Abraço,

    Paulo

  2. Eu também gosto do Firebird acompanhei as primeiras versões quando ainda era uma alternativa Open source ao Interbase.

    Felizmente hoje os bancos de dados estão muito próximos, temos alternativas de baixo custo, tão bons quanto ou até superiores aos bancos pagos.

    Obrigado pelo comentário.

  3. Caros Amigos,

    Sou usuário do MySQL há bastante tempo e utilizo vez por outra outros bancos, como Oracle, Firebird e PostgreSQL.

    O que o Paulo diz acima, de recomendar o Firebird, é apenas uma opinião dele, sendo que o Firebird se “adequou” mais as suas necessidades.

    O MySQL 6 (para quem o utiliza há muito tempo – 3, 4 e 5) está implementando muitas coisas que deixavam a desejar, o que é uma boa para empresa que não querem “REESCREVER” seus sistemas contendo outro banco de dados e tendo que “APRENDER” as funcionalidades de outro banco de dados.

    Para essas empresas, isso será realmente fantástico, pois a curva de aprendizado (atualização) de seus profissionais será pequena, já quando ter que aprender outro banco, se torna mais longa.

    Interessante saber que o MySQL está dando importância a features realmente úteis para o desenvolvimento de sistemas.

    Por isso desejo muito sucesso a esse pessoal e para todos que o utilizam!

  4. Particularmente eu tenho medo de pessoas que acham que em qualquer banco de dados você pode plugar e sair usando. Isso costuma ser um pecado mortal. Tudo bem que em bases pequenas (menos de 1GB é pequeno para os padrões atuais) não são todos que tem dinheiro para contratar um DBA em tempo integral. Mas no mínimo uma consultoria com uma manutenção periódica é recomendado, não? Acho que o post do nosso colega Taliba demonstrou isso muito bem.

    O MySQL está amadurecendo na parte transacional. Particularmente eu gostaria de ver mais investimento no MyIsam. Eu gosto do MySQL onde eu não preciso de transações. E acho que ele é uma excelente ferramenta neste cenário. Receio que se o investimento continuar no sentido atual, o MySQL se tornará mais lento que o PostgreSQL e perderá o seu foco inicial que é simplicidade e eficiência em ambiente não transacional.

    Além disso, a maioria das funcionalidades que o MySQL está implementando com o Falcon, já são velhos conhecidos no PostgreSQL, e são funcionalidades que demoram um certo tempo para amadurecerem. Pode ser uma surpresa agradável para os usuários do MySQL, mas são coisas bem estabilizadas no PostgreSQL.

    Outro investimento importante seria melhorar a conformidade com o SQL2003. Há muito o que ser feito nesta área. Você sabe como estão estas coisas para a versão 6 do MySQL???

    Mas gostei do artigo, é bom ter informações atualizadas sobre isso. Um grande abraço!

  5. [...] Uma ótima notícia sobre o MySQL reportada no Br-Linux e detalhada no blog do Taliba. [...]

  6. “Uncommitted record scavenging has been implemented”

    ==

    “Recuperação de registros não confirmados (não comitados) foi implementada”

    Ou seja, provavlemente você consegue ver as transações que não completaram.

    :)

  7. Olá,

    Sempre fui um entusiasta do MySql e o utilizo em larga escala hoje, mas infelizmente em bancos de dados médios ( 3GB ) com alto volume de inserts o mysql versão 5 tem se mostrado instavel e caindo o tempo todo, espero que a versão 6 melhore, pois infelizmente estamos migrando para mssql.
    Até, Allan

  8. Allan,

    o MySQL pode lidar com esse tipo de dado grande sim. As tabelas do Wikipédia são bem maiores que isso e são em MySQL.

    Agora, se quer um banco mais avançado, e de graça, usa o Firebird, pois ele tem “tudo” que o MSSQL e Oracle tem e ainda sim não é pago. Suporta bem tabelas grandes também.

  9. Eu trabalho com mysql 5, e comigo não cai o tempo todo. Separamos bem aqui, utilizamos todos os tipos de engine, store procedures, transactions e foreign keys. O mysql tem estado excelente, boa performance e estável.

    Dizemos que o grande segredo nosso é sempre começar por uma ótima modelagem de dados e utilizar o tipo de engine correto para cada caso.

    Estamos agora partindo para o cluster, esse ainda não tenho nada a dizer, mas nos outros casos em que usamos o mysql, só temos sucesso

  10. vo meter o pitaco aqui…. hehehe

    seguinte: o mysql nao esta pronto ainda para grandes projetos.. essa á realidade…. infelizmente, ou felizmente… quem sabe essa nova versão mude um pouco…

    mas penso q não será tao bom.. o mysql “crescer” …
    pois ele comecara a querer disputar mercado com a microsoft e com a oracle…. (sem chances) … nem a ibm tem conseguido competir de igual pra igual…

    o maior desafio na minha opiniao do mysql, é crescer, mas nao tanto….

    mudar o seu foco…(aplicacoes pequeno/medio porte).. acho um erro…
    enfim, incrementar tecnologias é sempre bom mas tomara q nao pirem…
    a respeito de firebird acima.. nem vou comentar…. 1GB? quale ne… 1GB nao da pra comparar nada… quero ver 1TB hehe :)

  11. olha pessoal nunca tive problemas de mysql ficar caindo!! 1gb ahhaha tenho 40 gb !! em um database !! tem outros o unico problema que venho tendo com mysql e pq tenho tabelas mysam misturadas com inodb o sistema de backup para este tamanho fica um pouco dificil de ser realizado!!

  12. seguinte: o mysql nao esta pronto ainda para grandes projetos.. essa á realidade…. infelizmente, ou felizmente… quem sabe essa nova versão mude um pouco…

    Quem disse isso esta por fora heimm. Somente a goolge, nasa, ibm e apple que adotaram esse banco. Em se falando de google e nasa já nos vem a cabeça o google maps. Isso mesmo.

    Não quero desmerecer nenhum banco de dados, todos os citados aqui são ótimas soluções. O fato é saber escolher a melhor solução para determinado problema.

    vcs terem ideia as apis do google maps

  13. seguinte: o mysql nao esta pronto ainda para grandes projetos.. essa á realidade…. infelizmente, ou felizmente… quem sabe essa nova versão mude um pouco…

    Quem disse isso esta por fora heimm. Somente a goolge, nasa, ibm e apple que adotaram esse banco. Em se falando de google e nasa já nos vem a cabeça o google maps. Isso mesmo.

    Não quero desmerecer nenhum banco de dados, todos os citados aqui são ótimas soluções. O fato é saber escolher a melhor solução para determinado problema.

  14. Trabalho numa empresa de grande porte (+de 1000 funcionários) e nós usamos SQLSERVER 2005, a base de dados tem mais de 400GB e cai pelo menos 3 vezes por dia.
    Sou Analista de Sistemas e meu foco é Programação Web, mas ao ver a criticidade do tratamento da massa de dados desta empresa, resolvi estudar mais a respeito de db engines.
    Cheguei à conclusão de que mesmo se fosse o access na parada (tô brincando : ) daria conta do recado caso toda a estrutura lógica tivesse sido bem planejada (existem N conceitos e ferramentas para isso) , o banco tava tratando os dados como um punhado de zeros e uns. Tem muito dba com 4, 5 anos de mercado que mal sabe qual o sistema de caracteres (alguns respondem que é em “asc 2″, kkkk! ) o bd usa!! Cara, dependendo do que é feito, vc pode estar gravando 4 onde poderia gravar 1! imagina isso numa base de dados com 8 Teras ? podia ser só 2. Tem query que demora 1 minuto pra ser executada de tanta procedure encadeada, cursor mal empregado e inner joins com mais de 4 tabelas, qnd depois da análise começou a trazer os mesmos dados em 5 segundos !!! Isso é culpa do mercado, quer solução pra ontem e não dá tempo nem de respirar.

  15. Ah, meu bd peferido é o mySQL 5 com mysql Query Browser na quebrada mano!

  16. Ótimo comentario Adriano , Obrigado!!!

Leave a Reply