Kann ISOLATION LEVEL nicht setzen?
Kann ISOLATION LEVEL nicht setzen?
am 01.02.2007 09:42:07 von Phil
Ich arbeite mit Windows XP SP2 und MySQL 5.0.
Zu Testzwecken will ich den ISOLATION LEVEL zur Laufzeit verändern und
versuche das wie folgt:
SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
Das scheint aber nicht zu greifen! Wenn ich den level abfrage (SELECT
@@global.tx_isolation) so ist die Antwort immer ein
'SERIALIZABLE' (was meiner Einstellung im ini-File entspricht).
Warum das - an was kann das liegen?
Gruß Phil
Re: Kann ISOLATION LEVEL nicht setzen?
am 01.02.2007 11:21:06 von Axel Schwenke
"Phil" wrote:
>
> Zu Testzwecken will ich den ISOLATION LEVEL zur Laufzeit verändern und
> versuche das wie folgt:
>
> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
>
> Das scheint aber nicht zu greifen! Wenn ich den level abfrage (SELECT
> @@global.tx_isolation) so ist die Antwort immer ein
> 'SERIALIZABLE' (was meiner Einstellung im ini-File entspricht).
>
> Warum das - an was kann das liegen?
http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-is olation.html
"If you use the GLOBAL keyword, the statement sets the default
transaction level globally for all new connections created from
that point on (but not for existing connections)."
XL
Re: Kann ISOLATION LEVEL nicht setzen?
am 01.02.2007 14:14:53 von Phil Meier
>> Zu Testzwecken will ich den ISOLATION LEVEL zur Laufzeit verändern und
>> versuche das wie folgt:
>>
>> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
>>
>> Das scheint aber nicht zu greifen! Wenn ich den level abfrage (SELECT
>> @@global.tx_isolation) so ist die Antwort immer ein
>> 'SERIALIZABLE' (was meiner Einstellung im ini-File entspricht).
>>
>> Warum das - an was kann das liegen?
>
> http://dev.mysql.com/doc/refman/5.0/en/innodb-transaction-is olation.html
>
> "If you use the GLOBAL keyword, the statement sets the default
> transaction level globally for all new connections created from
> that point on (but not for existing connections)."
Das hört sich gut an - aber leider zeigt @@tx_isolation (mit oder ohne
global davor) auch in einer neuen Session noch immer "SERIALIZABLE" an.
Ausprobiert habe ich das sowohl im "MySQL Query Browser" (Version 1.2.9
rc) wie auch mit dem mysql command line tool.
Also - ich gehe wie folgt vor:
1) cmd-prompt> mysql -u... -p... test2
2) mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
3) mysql> exit
4) cmd-prompt> mysql -u... -p... test2
5) mysql> SELECT @@global.tx_isolation;
+-----------------------+
| @@global.tx_isolation |
+-----------------------+
| SERIALIZABLE |
+-----------------------+
1 row in set (0.00 sec)
6) mysql> SELECT @@tx_isolation;
+----------------+
| @@tx_isolation |
+----------------+
| SERIALIZABLE |
+----------------+
1 row in set (0.00 sec)
Versteht das eine(r)?
Re: Kann ISOLATION LEVEL nicht setzen?
am 01.02.2007 18:29:02 von Axel Schwenke
Phil Meier wrote:
>>> Zu Testzwecken will ich den ISOLATION LEVEL zur Laufzeit verändern und
>>> versuche das wie folgt:
>>>
>>> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
>>>
>>> Das scheint aber nicht zu greifen! Wenn ich den level abfrage (SELECT
>>> @@global.tx_isolation) so ist die Antwort immer ein
>>> 'SERIALIZABLE' (was meiner Einstellung im ini-File entspricht).
>>>
>>> Warum das - an was kann das liegen?
>> "If you use the GLOBAL keyword, the statement sets the default
>> transaction level globally for all new connections created from
>> that point on (but not for existing connections)."
>
> Das hört sich gut an - aber leider zeigt @@tx_isolation (mit oder ohne
> global davor) auch in einer neuen Session noch immer "SERIALIZABLE" an.
> Ausprobiert habe ich das sowohl im "MySQL Query Browser" (Version 1.2.9
> rc) wie auch mit dem mysql command line tool.
Wenn überhaupt, würde ich das nur im command line client machen. Das
Problem mit irgendwelchen GUI Tools ist immer, daß man nicht weiß, was
die noch so verschlimmbessern.
> Also - ich gehe wie folgt vor:
> 1) cmd-prompt> mysql -u... -p... test2
> 2) mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
> 3) mysql> exit
> 4) cmd-prompt> mysql -u... -p... test2
> 5) mysql> SELECT @@global.tx_isolation;
> +-----------------------+
> | @@global.tx_isolation |
> +-----------------------+
> | SERIALIZABLE |
> +-----------------------+
Also hier geht das. Welche Version? Und hast du auch ausreichende
Rechte dafür? Vermutlich brauchst du dafür das SUPER Privileg.
Siehst du die Änderung in der ersten Session?
XL
Re: Kann ISOLATION LEVEL nicht setzen?
am 05.02.2007 09:07:22 von Phil
On Feb 1, 6:29 pm, Axel Schwenke wrote:
> Phil Meier wrote:
> >>> Zu Testzwecken will ich den ISOLATION LEVEL zur Laufzeit verändern =
und
> >>> versuche das wie folgt:
>
> >>> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
>
> >>> Das scheint aber nicht zu greifen! Wenn ich den level abfrage (SELECT
> >>> @@global.tx_isolation) so ist die Antwort immer ein
> >>> 'SERIALIZABLE' (was meiner Einstellung im ini-File entspricht).
>
> >>> Warum das - an was kann das liegen?
> >> "If you use the GLOBAL keyword, the statement sets the default
> >> transaction level globally for all new connections created from
> >> that point on (but not for existing connections)."
>
> > Das hört sich gut an - aber leider zeigt @@tx_isolation (mit oder ohne
> > global davor) auch in einer neuen Session noch immer "SERIALIZABLE" an.
> > Ausprobiert habe ich das sowohl im "MySQL Query Browser" (Version 1.2.9
> > rc) wie auch mit dem mysql command line tool.
>
> Wenn überhaupt, würde ich das nur im command line client machen. Das
> Problem mit irgendwelchen GUI Tools ist immer, daß man nicht weiß, was
> die noch so verschlimmbessern.
Ist das eine allgemeine Erkenntnis. Können das andere Teilnehmer
dieser Gruppe auch so bestätigen? Es wäre doch durchaus sinnvoll, wenn
man den "MySQL Query Browser" wirklich einsetzen könnte. D.h. notfalls
Bugs erfassen damit das Tool besser werden kann.
>
> > Also - ich gehe wie folgt vor:
> > 1) cmd-prompt> mysql -u... -p... test2
> > 2) mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ;
> > 3) mysql> exit
> > 4) cmd-prompt> mysql -u... -p... test2
> > 5) mysql> SELECT @@global.tx_isolation;
> > +-----------------------+
> > | @@global.tx_isolation |
> > +-----------------------+
> > | SERIALIZABLE |
> > +-----------------------+
>
> Also hier geht das. Welche Version? Und hast du auch ausreichende
> Rechte dafür? Vermutlich brauchst du dafür das SUPER Privileg.
> Siehst du die Änderung in der ersten Session?
>
Hätte ich das SUPER Privileg nicht so käme folgende Fehlermeldung:
ERROR 1227 (42000): Access denied; you need the SUPER privilege for
this operation
Aber das mit der Version war wohl das Problem. Hab mir nun die
aktuellste Version installiert (5.0.27) - und das ursprünglich
beschriebene Problem (s.o.) tritt nicht mehr auf.
Danke für alle Hilfe!
Phil
Re: Kann ISOLATION LEVEL nicht setzen?
am 05.02.2007 13:12:53 von Andreas Scherbaum
Phil wrote:
> On Feb 1, 6:29 pm, Axel Schwenke wrote:
>>
>> Wenn überhaupt, würde ich das nur im command line client machen. Das
>> Problem mit irgendwelchen GUI Tools ist immer, daß man nicht weiß, was
>> die noch so verschlimmbessern.
>
> Ist das eine allgemeine Erkenntnis. Können das andere Teilnehmer
> dieser Gruppe auch so bestätigen? Es wäre doch durchaus sinnvoll, wenn
> man den "MySQL Query Browser" wirklich einsetzen könnte. D.h. notfalls
> Bugs erfassen damit das Tool besser werden kann.
Ich stimme zwar mit Axel nicht oft überein, aber in dem Fall hat er
Recht ;-)
Du weisst nie, was das GUI alles so vorher/hinterher ausführt, was sich
mit dem, was du erreichen möchtest, schneidet.
Bye
--
Andreas 'ads' Scherbaum
Failure is not an option. It comes bundled with your Microsoft product.
(Ferenc Mantfeld)