Savepoint - mysql

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Savepoint - mysql

    hi, ich hab nach savepoint und nach rollback gesucht aber leider nix gefunden?

    wie genau funktioniert das? ich nehm mal an ich muss zu beginn der funktion nen savepoint setzen und dann meine mysql queries absetzen, wenn was schiefgeht mach ich nen rollback. geht das auch wenn die datenbank nen fehler auslöst zb? und was passiert wenn zwei benutzer parallel in die selbe funktion kommen? in der hilfe steht, dass ein savepoint überschrieben wird, wenn ein anderer mit dem selben namen schon exisitiert? wie schütze ich mich am besten davor, dass zwei savepoints denselben namen haben?
    verantwortlich für Elygor - Das kostenlose Browserspiel

  • #2
    Sowas funktioniert eigentlich nur wenn Du 'nen Tabellen-Handler verwendest der Transaktionen unterstützt ... z.B. InnoDB ... !
    carpe noctem

    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

    Kommentar


    • #3
      und sonst kann man queries nicht rückgängig machen, wenn zb beim dritten plötzlich nen fehler auftritt?
      verantwortlich für Elygor - Das kostenlose Browserspiel

      Kommentar


      • #4
        Jo! Mit den myisam-Tabellen geht das meines Wissens nach nicht. InnoDB ist das wesentlich schöner.

        Genaueres findest Du hier:
        http://dev.mysql.com/doc/mysql/en/Tr..._Commands.html
        Zuletzt geändert von cst; 09.07.2004, 09:07.
        Ich denke, also bin ich.
        Manche sind trotzdem!

        Kommentar


        • #5
          aber in der nutzung der tabellen merke ich keinen unterschied? befehlsmässig oder performance mässig?
          verantwortlich für Elygor - Das kostenlose Browserspiel

          Kommentar


          • #6
            Durchaus ... InnoDB ist z.B. beim Einfügen, Ändern oder Löschen etwas langsamer, weil dort der Overhead durch die Berücksichtigung von Fremdschlüsseln etwas höher ist ... im allgemeinen hat man aber Performance Vorteile wenn auf Tabellen viele Concurrent-Selects ausgeführt werden ... InnoDB beherrscht nämlich im Gegensatz zu MyISAM das Record-Locking ... !
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              meinst du mit concurrent select abfragen auf dieselben daten?

              ich überlege nämlich immer noch was passiert, wenn ich in einer funktion nen savepoint setze und zwei benutzer gleichzeitig in die funktion gelangen und sich dadurch die savepoints überschreiben

              ausserdem kann man doch nur spalten sperren, aber nicht zeilen, oder?
              verantwortlich für Elygor - Das kostenlose Browserspiel

              Kommentar


              • #8
                Ja ... konkurrierende Abfragen eben ... Da MyISAM immer ganze Tabellen während eines Vorgangs sperrt, während InnoDB nur den verwendeten Datensatz gibt's u.U. Performance Vorteile ... BerkeleyDB kann auch noch ein Page-Locking ... aber wofür ... ?!

                In solch einem Falle gelten genau die gleichen Race-Konditions wie in jedem Falle, wer zuletzt kommt malt zuletzt ... ... in solch einem Falle arbeitet man im Normalfalle mit 'nem Locking ... (entweder LOCK TABLES ... oder SELECT ... FOR UPDATE) ... steht einiges im Manual dazu ...

                Nein ... Spalten Sperren kann man eigentlich gar nicht ... bestenfalls kann man Zugriffsrechte darauf vergeben ... aber das hat gar nichts damit zu tun ... !
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar


                • #9
                  Die Frage ist allerdings, ob du einen Miet-Web-Account nutzen willst oder einen eigenen Server hast. Die meisten Provider unterstützen keine InnoDBs. Und dann musste eben doch myisam nehmen.
                  Ich denke, also bin ich.
                  Manche sind trotzdem!

                  Kommentar

                  Lädt...
                  X