MySQL log

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Jeśli widzę w logu SQLa (query log) coś takiego:

Kopiuj
		 1418 Query	SET autocommit=0
		 1418 Query	insert into brand (name) values ('Refee')
		 1418 Query	insert into brand (name) values ('wWww')
		 1418 Query	commit
		 1418 Query	SET autocommit=1

to znaczy, że powyższe zostało wykonane w obrębie jednej transakcji? Dlaczego nie ma begin transaction itp?

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
0

To znaczy, że najpierw został wyłączony autocommit, zrobione zostały 2 inserty i zatwierdzone commitem, następnie został włączony autocommit. autocommit jest ustawiany na sesję. więcej tu: https://dev.mysql.com/doc/refman/5.7/en/commit.html

JU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0
Panczo napisał(a):

To znaczy, że najpierw został wyłączony autocommit, zrobione zostały 2 inserty i zatwierdzone commitem, następnie został włączony autocommit. autocommit jest ustawiany na sesję. więcej tu: https://dev.mysql.com/doc/refman/5.7/en/commit.html

Czyli z angielskiego na nasze jesli autocommit==0 to wszystko co przed commit jest transakcja?

Jak rozumiem selecty tez moga byc w transakcjach?

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
0

autocommit jest niezależne od Begin transaction, ale nie jestem specem od mysql i to wszystko zależy od tego jaka jest tabela brand bo jeżeli MyISAM to tu jest prosto, nie mowy o żadnej transakcji.

Dla InnoDB jeżeli ustawisz autocommit=0 to sesja będzie miała otwartą transakcję dopóki nie zrobisz commita, jeżeli podczas sesji nie będzie commita i zostanie ona zakończona to będzie robiony rollback. Czyli wszystko przed commit jest transakcją.

Jeżeli autocommit=1 to w ramach sesji możesz zrobić wiele transakcji poprzez START TRANSACTION lub BEGIN.

Selecty też mogą być w transakcji.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.