Tipo de tabelas MySQL

ThinkBrunus

Power Member
Viva!
Estou a desenvolver um portal para uso interno no meu trabalho, e ando a estudar algumas matérias antes de começar a desenvolver alguma coisa.

Gostaria de saber a vossa opinião relativamente ao tipo de tabela a utilizar, visto que com o acumular do tempo o volume de informação deve ser grande e certamente haverão situações em que vários utilizadores executaram o mesmo procedimentos em simultâneo (não sei se esta situação implica alguma precaução em especial).
 
O MySQL faz a gestão de controle de concorrência, pelo que em princípio não deverás ter de te preocupar com vários utilizadores a executarem os mesmos procedimentos em simultâneo. Em relação ao tipo de tabela, e assumindo que te referes ao storage engine, depende da versão que estás a utilizar, e dos requisitos da tua aplicação. No entanto, eu diria que InnoDB cumpre a grande maioria dos requisitos de uma aplicação do tipo que referiste.
 
Última edição:
Em teoria, o MySQL suporta diversos storage engines; na prática, apenas o MyISAM e o InnoDB podem de facto ser considerados para utilização em ambiente de produção (na minha opinião). De uma forma muito simplificada, e tal como já deves ter certamente observado pelas diversas opiniões existentes na web, a grande diferença reside no facto de o InnoDB suportar transacções, e o MyISAM não. Isto faz também com que o InnoDB suporte outras features relacionados (e úteis), como por exemplo, diferentes níveis de isolamento, locks ao nível do registo (o que possibilita mais transacções por minuto) versus ao nível da tabela, como no MyISAM.

Outro dos "mitos" à volta destes dois tipos, é o de que o MyISAM é mais rápido que o InnoDB. Em tempos, talvez já tenho sido, mas neste momento, tal não me parece ser verdade. Aliás, a Wikipedia utiliza (ou utilizava) InnoDB, o que diz muito sobre a escalabilidade do mesmo.

Resumindo, neste momento, para a grande maioria das aplicações, o InnoDB deverá ser a weapon of choice. O MyISAM, devido à sua simplicidade, deve ser considerado para servidores com recursos muito limitados, ou para tarefas muito específicas como full text search, que não são suportadas pelo InnoDB.
 
Estou convencido, obrigado pela opinião!
Estou a criar a base de dados com o tipo de tabelas InnoDB e o charset=utf8_general_ci.

Já agora aproveito para uma situação que está a acontecer, faço o export da base dados e quando vou importar os campos são preenchidos até ao 1º caracter acentuado...para já não me faz diferença, mas no futuro quem sabe? Estou a fazer o export/import no phpMyAdmin, já vos aconteceu algo do genero?
 
Já tive para colocar exactamente esta questão aqui no forum...
Já agora Em blogs e foruns o melhor será MyIsam para permitir full text search?
 
Quanto ao export que referi no post anterior, indicaram-me as seguintes aplicações: mysql administrador e do query browser.
Desconhecia estas aplicações, já as testei e achei-as bastante eficazes e simples. Para quem tenha ou venha a ter o problema referido, fica esta possível e viável uma solução.

Obrigado!
 
Sim, as MySQL GUI Tools dão bastante jeito.

Em relação ao full text search para blogs e fóruns, recordo que é possível utilizar diferentes storage engines em diferentes tabelas, pelo que podes utilizar MyISAM na tabela onde pretendes fazer as pesquisas, e InnoDB nas restantes.

No entanto, na minha opinião, utilizar o google custom search (tal como já existe aqui no fórum) será certamente uma boa opção para ambos os casos, até porque já tenho lido relatos de problemas relacionados com o full text search do MySQL. Caso seja necessário efectuar pesquisas mais refinadas, e sobre um conjunto de dados muito mais vasto, então o ideal talvez seja utilizar algo semelhante ao Apache Lucene para fazer a indexação e pesquisa; a Wikipedia utiliza.

Espero que ajude.
 
No seguimento deste tópico andei a fazer alguns testes no backup à base de dados, e deparei-me com o seguinte, acedendo ao phpMyAdmin selecciono a base dados e surge a listagem das tabelas

Tabela | Acções | Registos | Tipo
------------------------------------
teste | ......... | 0 | InnoDB
teste1 | ......... | 0 | InnoDB
2 tabela(s) | Soma | 0 | MyISAM

Como exemplo na tabela acima, na coluna tipo os tipos de tabelas estão certos, apenas no fim aparece MyISAM. Esta situação implica alguma coisa no funcionamento da base dados?
Já tentei criar uma tabela e tal como nas tabelas colocar a linha TYPE = InnoDB, mas não está a resultar....
 
Back
Topo