Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Performanceverbesserungen, Diagnosen und Monitoring » Praktische Einführungen in die Anwendungsprofilerstellung » Praktische Einführung: Deadlocks diagnostizieren

 

Lektion 1: Datenbank einrichten

Richten Sie die Testdatenbank für die Anwendungsprofilerstellung app_profiling.db ein, um einen Deadlock zu erstellen, indem Sie zwei Tabellen und zwei Prozeduren erstellen.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie die Rollen und Privilegien haben, die im Abschnitt "Privilegien" am Anfang dieser praktischen Einführung aufgeführt sind: Praktische Einführung: Deadlocks diagnostizieren.

In dieser praktischen Einführung wird vorausgesetzt, dass Sie die Testdatenbank app_profiling.db erstellt haben. Siehe Praktische Einführung: Testdatenbank für die praktischen Einführungen in die Anwendungsprofilerstellung erstellen.

Kontext und Bemerkungen

Deadlocks treten auf, wenn zwei oder mehr Transaktionen einander blockieren. Transaktion A erfordert beispielsweise Zugriff auf Tabelle B, aber Tabelle B ist von Transaktion B gesperrt. Transaktion B erfordert Zugriff auf Tabelle A, aber Tabelle A ist von Transaktion A gesperrt. Es entsteht ein zyklischer Blockierungskonflikt.

Ein Anzeichen für Deadlocks ist die Rückgabe von SQLCODE -306 und -307. Um einen Deadlock aufzulösen, setzt SQL Anywhere automatisch die letzte Anweisung zurück, die den Deadlock bewirkt hat. Es entstehen Performanceprobleme, wenn Anweisungen fortwährend zurückgesetzt werden.

 Aufgabe
  1. Starten Sie Interactive SQL. Klicken Sie auf Start » Programme » SQL Anywhere 16 » Administrationstools » Sybase Central.

  2. Stellen Sie in Interactive SQL folgendermaßen eine Verbindung mit app_profiling.db her:

    1. Füllen Sie im Fenster Verbinden die folgenden Felder aus, um eine Verbindung mit der Testdatenbank app_profiling.db herzustellen:

      1. Geben Sie im Feld Authentifizierung auf Datenbank ein.

      2. Im Feld Benutzer-ID geben Sie DBA ein.

      3. Im Feld Kennwort geben Sie sql ein.

      4. Wählen Sie in der Dropdown-Liste Aktion die Option Eine Datenbank auf diesem Computer starten und eine Verbindung herstellen aus.

      5. Geben Sie im Feld Datenbankdatei Folgendes ein: C:\AppProfilingTutorial\app_profiling.db.

      6. Geben Sie im Feld Startzeile Folgendes ein: dbeng16 -x tcpip.

    2. Klicken Sie auf Verbinden.

  3. Führen Sie in Interactive SQL die folgenden SQL-Anweisungen aus:

    1. Erstellen Sie zwei Tabellen:

      CREATE TABLE "DBA"."deadlock1" (
         "id" UNSIGNED BIGINT NOT NULL DEFAULT AUTOINCREMENT, 
         "val" CHAR(1) ); 
      CREATE TABLE "DBA"."deadlock2" ( 
         "id" UNSIGNED BIGINT NOT NULL DEFAULT AUTOINCREMENT, 
         "val" CHAR(1) );
    2. Fügen Sie Werte in jede Tabelle ein.

      INSERT INTO "deadlock1"("val") VALUES('x');
      INSERT INTO "deadlock2"("val") VALUES('x');
    3. Erstellen Sie zwei Prozeduren:



      CREATE PROCEDURE "DBA"."proc_deadlock1"(  ) 
         BEGIN 
            LOCK TABLE "DBA"."deadlock1" IN EXCLUSIVE MODE; 
            WAITFOR DELAY '00:00:20:000'; 
            UPDATE deadlock2 SET val='y'; 
         END; 
      CREATE PROCEDURE "DBA"."proc_deadlock2"(  ) 
         BEGIN 
            LOCK TABLE "DBA"."deadlock2" IN EXCLUSIVE MODE; 
            WAITFOR DELAY '00:00:20:000'; 
            UPDATE deadlock1 SET val='y'; 
         END;
    4. Schreiben Sie die Änderungen fest, die Sie an der Datenbank durchgeführt haben:

      COMMIT;
  4. Schließen Sie Interactive SQL.

Ergebnisse

Sie haben zwei Tabellen und zwei Prozeduren erstellt, mit denen Sie einen Deadlock erstellen.

Nächste Schritte

Gehen Sie weiter zu Lektion 2: Deadlock erstellen und Daten erfassen.

 Siehe auch