Topic: innodb transakcijos ir ju perleidimas

Sveiki,

gal kas esate susidurę su lock wait timeout innodb transakcijoje?
Kątik susiradau, kad nuo 5.0.13 mysql pasibaigųs laikui gražinama ne visa transakcija, o tik paskutinė užklausa. Tai yra tam, kad būtų greičiau apdorojami duomenys. Gal kas turi geros, nesunkiai suprantamos informacijos kaip teisingai perleisti iš naujo transakciją? O gal net turite realių pavyzdžių?

Jei teisingai suprantu, tai įvykus lock wait timeout, transakcija programiniame kode turėtų pasileisti iš naujo nuo tos vietos, kurioje nusmigo?

Re: innodb transakcijos ir ju perleidimas

READ COMMITTED bandei?

Kiek maigyklių sudėvėjai ?

Re: innodb transakcijos ir ju perleidimas

Dėkui md5 už nukreipimą į tikrai naudingą informaciją. Man kaip tik buvo įdomu kam tas shared lock reikalingas :)
Straipsnis, kuriame gražiai paaiškinti visi isolation level yra ne apie mysql, o apie SQL server. štai tas straipsnis jei kam būtų įdomu: http://gavindraper.com/2012/02/18/sql-s … y-example/

Bet man dar įdomu kai kas. Pacituosiu:
A transaction deadlock causes InnoDB to roll back the entire transaction. Retry the whole transaction when this happens.

A lock wait timeout causes InnoDB to roll back only the single statement that was waiting for the lock and encountered the timeout. (Until MySQL 5.0.13 InnoDB rolled back the entire transaction if a lock wait timeout happened. You can restore this behavior by starting the server with the --innodb_rollback_on_timeout option, available as of MySQL 5.0.32.) You should normally retry the statement if using the current behavior or the entire transaction if using the old behavior.

Kaip visgi būtų tai galima atlikti? Kaip man sužinoti, kurioje transakcijos vietoje mysql atsisakė įvykdyti? Gal turite realių pavyzdžių kaip tai įgyvendinti?