Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

horacio2009

mudando tabela para innoDb

Recommended Posts

boa tarde a todos!!!

pessoal, se quiser mudar a tabela de MySan para innodb no servidor, basta apenas alterar ou exige alguma outra coisa???

quanto ao arquivo de conexão... conexao é feita da mesma forma, ou muda alguma coisa????

obrigado!!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi a parte do erro de concorrência.

 

Mais, com relação ao seus arquivo de conexão, isso não tem influência alguma... innoDB é um módulo de armazenamento, é um tipo de armazenamento... o inooDB funciona mais rápido que o MyISAM, uma vez que a mudança nos dados armazenados são constantes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, deixa eu te explicar essa parte...

vamos lá:

eu tenho um sistema de gerenciamento de clientes que o operador clica em um botao e acessa a ficha de um cliente(e são muitos clientes...)acontece que algumas vezes dois operadores pegam a mesma ficha, o que em tese, não deveria acontecer , pois no acesso, a informação do operador e lançada no registro(a pesquisa impede acessos onde tem informação de operador, pra isso eu faço essa inserção de dados do operador), travando a ficha...esse erro, obviamente não grava a informação do operador, porém, permite o acesso, então, ficam 2 operadores com a mesma ficha mas a associação é de apenas um.

eu resolvi isso com ajax, ele faz a cada tantos segundos uma verificação, não havendo confirmação então, o sistema retorna o usuario para a home...beleza, estamos levando bem dessa forma, mas graças ao ajax...

fui informado que essas ocorrencias são chamadas de "erro de concorrência", por isso a pergunta...

acredito que fui claro, caso contrário, fique a vontade para perguntar que eu explico beleza?

bom, enfim...esse formato de tabela impede essas situações bem chatas?

Valeu!!!

grande abraço!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu nunca me deparei com esse problema, mais pelo innoDB ser apropriado para alterações constantes (Apenas se houver modificações constantes ele irá agir mais rápido que o MyISAM), acredito que seu problema possa ser resolvido, pois este tipo de armazenamento utiliza proteção por registros, row locking e não proteção por tabelas table locking como MyISAM. Outro ponto é que se você usa restrição de chaves estrangeiras foreign key constraints você deve realmente usar innoDB pois estes recursos apenas estão disponíveis neste modo de armazenamento, no caso se você usa este tipo de recurso e estava como MyISAM, você poderia sim ter instabilidade no sistema, que ao meu ver, é o que está ocorrendo... O negócio é você testar e ver se o problema ainda ocorre...

Compartilhar este post


Link para o post
Compartilhar em outros sites

e aí, Alaerte...

entendi vou mudar agora mesmo o formato da tabela, mas quero saber o seguinte:

 

confirmando: tenho que mudar todas as tabelas que apresentam relação com a tabela principal, 
para que a coisa funcione corretamente, certo?

 

pode, de alguma(qualquer)forma apresentar algum prejuizo com relação aos dados???

 

numa tabela com um milhão de registros o processo de mudança pode ser mais lenta, ou não? 

 

perguntas toscas, mas quero estar 100% seguro antes de fazer qualquer coisa!!! meu backup já tá pronto até!! rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Backup pronto, nada temer.

 

confirmando: tenho que mudar todas as tabelas que apresentam relação com a tabela principal,

para que a coisa funcione corretamente, certo?

 

Correto.

pode, de alguma(qualquer)forma apresentar algum prejuizo com relação aos dados???

 

Negativo, você apenas estará mudando o módulo de armazenamento, alterando um modo, nada mais.

 

numa tabela com um milhão de registros o processo de mudança pode ser mais lenta, ou não?

 

Obviamente, irá demorar, ou não, para executar a ação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alarte, mudei lá as tabelas!! suei frio com medo de dar erro, o que , graças ao bom deus não ocorreu!!!hehehe

agora falando sério e querendo entender mais dessa maravilha que é o mysql...

 

estava lendo agora pouco o seguinte:

# INNODB provê auto_recovery após um crash ou queda no servidor onde o MySQL roda;

disto, eu posso entender que: caso caia a internet, conexão ao banco,a engenharia desse modelo de banco restaura a informação original?

 

 

e também li que:

 

 

# INNODB tem multi-versionamento e bloqueio em nível de linha, ou seja, caso uma transação A esteja atualizando uma determinada linha de uma tabela, esta será bloqueada até que haja um COMMIT ou ROLLBACK. O multi-versionamento provê à transação uma visão própria do estado do banco de dados, combinado com o bloqueio em nível de linha, provê o mínimo possível de contenções;

então, voltando um pouco acima no post(onde comento 2 operadores no mesmo registro)eu posso presumir que, se essa linha está trancada após o acesso do primeiro operador, ela, para o segundo, é como se não existisse??está certa minha forma de pensar???

 

INNODB tem suporte a integridade referencial, ou seja, tem suporte a criação de FOREIGN KEY, incluindo cascateamentos em DELETE e UPDATE. As propriedades de integridade referencial suportados pelo INNODB são: { RESTRICT | CASCADE | SET NULL | NO ACTION }

eu tentei criar um novo campo nas tabelas, a fim de descobrir essa chave...mas não encontrei...como faço para cria-la e para efeito de programação(php, java, etc, etc...), isso muda muito????

 

pessoal, desculpem a pilha de perguntas, mas quero aprender tudo que puder sobre isso, pois vai me ajudar pra caramba!!!!

Mais uma vez, muito obrigado pela atenção e paciência comigo!!!!

grande abraço a todos!!!

Horácio

Compartilhar este post


Link para o post
Compartilhar em outros sites
então, voltando um pouco acima no post(onde comento 2 operadores no mesmo registro)eu posso presumir que, se essa linha está trancada após o acesso do primeiro operador, ela, para o segundo, é como se não existisse??está certa minha forma de pensar???

 

Basicamente isso.

 

eu tentei criar um novo campo nas tabelas, a fim de descobrir essa chave...mas não encontrei...como faço para cria-la e para efeito de programação(php, java, etc, etc...), isso muda muito????

 

Uma chave estrangeira (FK) é uma coluna ou combinação de colunas que é usada para estabelecer e impor um link entre os dados em duas tabelas.

 

Supondo que:

 

tabela usuários:

 

id | nome    | nivel
1    horácio     1

 

tabela níveis:

 

id | nivel
1    Administrador

 

A chave que vai "ligar" com a tabela usuários, para fornecer o nível do usuário sera o campo ID da tabela niveis, agora vejamos na consulta MySQL, cujo seu módulo de armazenamento é innoDB:

 

mysql> SELECT * FROM usuarios INNER JOIN niveis ON nivel.usuarios = id.nivel;

 

Retorno:

horácio Administrador

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom, começando pelas caneladas..rsrs

sei lá pq diabos quando li "FOREIGN KEY" eu erroneamente traduzi "chave esquecida" é mole??? achei que fosse um outtro tipo de chave!!

ok, podem rir...rsrsrs

 

então, agora voltando ao foco...

essa chave estrangeira eu uso, já...apesar da besteira que eu presumi..rsrs mas essa query que você me informou, difere exatamente de que forma no INNO???? pq ate onde eu li, pelo menos a logica é igual...select tabela 1 onde fulando ='meu codigo' , onde meu codigo e minha id na tabela de usuários...ok...o processo de bloqueio via ajax que eu uso, funciona assim...select negociacao onde capture=meucodigo...

qual a diferença prática disso???(não to questionando, mas sim, curioso mesmo...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Diferença prática como assim ?...

 

Desse jeito, as tabelas estão automaticamente ligadas, sem precisar do PHP pra isso, o próprio SGBD está ligando elas, no momento da consulta.

Compartilhar este post


Link para o post
Compartilhar em outros sites

então, a query que você me mostrou não tem tanta diferença(a primeira visto, quero dizer)para uma tabela Mysam...eu não entendi ...

quando você diz que as tabelas estão automaticamente ligadas pela query, isso envolve o tal do efeito cascata? (onde deletar/alterar o registro principal e tudo que tiver relacionado a ele ????)

ainda estou um pouco perdido com esse formato de tabela...me desculpe!! :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.