É só escrever no final da query "for update" On Sep 24, 2013 9:37 AM, "Marcio - Google" <[email protected]> wrote:
> Tô usando InnoDB mesmo ... tenho pk e fk ... :| > > Não entendo muito de mysql, mas sempre usei e me atende bem. Qual o > problema com transações nele? > > Como faço o "select ... for update" no DBI ? > > [...]'s > > Marcio > > ======================================== > ########### Campanha Ajude o Marcio! ########### > http://sosmarcio.blogspot.com.br/ > http://www.vakinha.com.br/VaquinhaP.aspx?e=195793 > ======================================== > Em 24/09/2013 06:36, "Andre Carneiro" <[email protected]> > escreveu: > >> Posso estar errado, mas isso funciona apenas com InnoDB. >> >> >> 2013/9/24 Andre Carneiro <[email protected]> >> >>> Humm.. transações + MySQL .... medo! >>> >>> >>> BEGIN não rola no MySQL. Subistitua por START TRANSACTION >>> >>> Ah é! E no momento da conexão com o banco de dados, sete a variável >>> AutoCommit do DBI para 0. >>> >>> my $dbh = DBI->connect(blabla,$usuario,$senha,{AutoCommit=>0}) or die >>> $DBI::errstr; >>> >>> >>> >>> >>> >>> >>> Proost! >>> >>> >>> >>> >>> >>> >>> >>> >>> 2013/9/23 Marcio - Google <[email protected]> >>> >>>> Tiago, eu tava pensando em algo mais simples ... tipo a ideia que o >>>> Renato acabou de postar. >>>> >>>> >>>> [...]'s >>>> >>>> Marcio >>>> >>>> ======================================== >>>> ########### Campanha Ajude o Marcio! ########### >>>> http://sosmarcio.blogspot.com.br/ >>>> http://www.vakinha.com.br/VaquinhaP.aspx?e=195793 >>>> ======================================== >>>> >>>> >>>> Em 23 de setembro de 2013 19:05, Marcio - Google >>>> <[email protected]>escreveu: >>>> >>>> R >>>>> enato++++ >>>>> >>>>> Era mais ou menos isso que tava pensando mesmo. >>>>> Mas como faço isso usando o DBI. Não consegui. >>>>> >>>>> >>>>> >>>>> [...]'s >>>>> >>>>> Marcio >>>>> >>>>> ======================================== >>>>> ########### Campanha Ajude o Marcio! ########### >>>>> http://sosmarcio.blogspot.com.br/ >>>>> http://www.vakinha.com.br/VaquinhaP.aspx?e=195793 >>>>> ======================================== >>>>> >>>>> >>>>> Em 23 de setembro de 2013 17:33, Renato Santos >>>>> <[email protected]>escreveu: >>>>> >>>>> explicando melhor, >>>>>> >>>>>> já que você não parece ter ninguem pra controlar de verdade quantos >>>>>> registros tem para ser processados, >>>>>> voce pode fazer um >>>>>> >>>>>> BEGIN; >>>>>> SELECT xxx FROM table WHERE not_processed LIMIT 1 FOR UPDATE ; >>>>>> <processa> >>>>>> UPDATE >>>>>> >>>>>> COMMIT; >>>>>> >>>>>> como só tem um 'limit 1' você teria q rodar isso várias vezes. >>>>>> >>>>>> vocẽ tambem pode aumentar o número, só que ai se você colocar 100, e >>>>>> só tiver 40 registros, o segundo e os demais processos não vão pegar >>>>>> ninguem. >>>>>> >>>>>> >>>>>> >>>>>> 2013/9/23 Renato Santos <[email protected]> >>>>>> >>>>>>> Como é mysql, só posso dizer: >>>>>>> >>>>>>> http://dev.mysql.com/doc/refman/5.0/en/innodb-locking-reads.html >>>>>>> boa sorte! >>>>>>> >>>>>>> >>>>>>> >>>>>>> 2013/9/23 Marcio - Google <[email protected]> >>>>>>> >>>>>>>> Salve Mongers! >>>>>>>> >>>>>>>> Tenho uma tabela em MySql com algumas centenas de registros. >>>>>>>> >>>>>>>> Em alguns momentos tenho que "processar" esses registros da forma >>>>>>>> mais rápida possível. >>>>>>>> >>>>>>>> O tempo de processamento de cada registro é de aproximadamente 4-5 >>>>>>>> segundos, tempo esse alheio ao meu controle ou a minha vontade. >>>>>>>> >>>>>>>> Para agilizar, rodo várias vezes o mesmo app, e cada vez que ele >>>>>>>> sobe pega um lote de registros. Para impedir que a próxima cópia do >>>>>>>> app a >>>>>>>> subir pegue os mesmos registros, criei uma coluna a mais, e quando o >>>>>>>> app >>>>>>>> sobe ele verifica se a coluna tá vazia, se tiver ele grava o PID dele. >>>>>>>> >>>>>>>> Está funcionando mais ou menos, exceto pelo fato que não gostei da >>>>>>>> forma que ficou e de um efeito colateral. As vezes uma das cópias do >>>>>>>> app dá >>>>>>>> algum erro e cai, só que os registros do lote dele ficam lá com o PID >>>>>>>> gravado na coluna, então as outras cópias não mexem mais com esses >>>>>>>> registros e eles ficam indefinidamente pendentes. >>>>>>>> >>>>>>>> Alguma dica de como fazer algo "mais elegante" e "seguro"? >>>>>>>> >>>>>>>> Para adiantar: >>>>>>>> 1. Tem que ser MySql. Posso mexer na tabela a vontade. >>>>>>>> 2. O processamento não tem como ser mexido. >>>>>>>> >>>>>>>> >>>>>>>> [...]'s >>>>>>>> >>>>>>>> Marcio >>>>>>>> >>>>>>>> ======================================== >>>>>>>> ########### Campanha Ajude o Marcio! ########### >>>>>>>> http://sosmarcio.blogspot.com.br/ >>>>>>>> http://www.vakinha.com.br/VaquinhaP.aspx?e=195793 >>>>>>>> ======================================== >>>>>>>> >>>>>>>> =begin disclaimer >>>>>>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>>>>>>> SaoPaulo-pm mailing list: [email protected] >>>>>>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>>>>>>> =end disclaimer >>>>>>>> >>>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Saravá, >>>>>>> Renato CRON >>>>>>> http://www.renatocron.com/blog/ >>>>>>> @renato_cron <http://twitter.com/#!/renato_cron> >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Saravá, >>>>>> Renato CRON >>>>>> http://www.renatocron.com/blog/ >>>>>> @renato_cron <http://twitter.com/#!/renato_cron> >>>>>> >>>>>> =begin disclaimer >>>>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>>>>> SaoPaulo-pm mailing list: [email protected] >>>>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>>>>> =end disclaimer >>>>>> >>>>>> >>>>> >>>> >>>> =begin disclaimer >>>> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >>>> SaoPaulo-pm mailing list: [email protected] >>>> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >>>> =end disclaimer >>>> >>>> >>> >>> >>> -- >>> André Garcia Carneiro >>> Software Engineer >>> (11)982907780 >>> >> >> >> >> -- >> André Garcia Carneiro >> Software Engineer >> (11)982907780 >> >> =begin disclaimer >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >> SaoPaulo-pm mailing list: [email protected] >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> >> > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: [email protected] > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > >
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: [email protected] L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer
