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

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Performance der Datenbank überwachen und steigern » Praktische Einführungen in die Anwendungsprofilerstellung » Praktische Einführung: Deadlocks diagnostizieren

 

Lektion 2: Einen Deadlock erstellen

Für diese praktische Einführung wird vorausgesetzt, dass Sie die Testdatenbank erstellt haben. Wenn dies nicht der Fall ist, finden Sie weitere Hinweise unter Lektion 1: Die Testdatenbank erstellen.

Tipp

Sie können die SQL-Anweisungen in dieser praktischen Einführung kopieren und in Interactive SQL einfügen.

♦  So bewirken Sie einen Deadlock
  1. Starten Sie Sybase Central und verbinden Sie sich mit der Testdatenbank app_profiling.db mit der Benutzer-ID DBA und dem Kennwort sql.

    Wenn Sie mit dem Starten von Sybase Central und dem Herstellen einer Verbindung mit einer Datenbank nicht vertraut sind, finden Sie Hinweise unter Verbindung mit einer lokalen Datenbank herstellen.

  2. Im linken Fensterausschnitt klicken Sie auf app_profiling - DBA und wählen dann Datei » Interactive SQL öffnen.

    Interactive SQL wird gestartet und stellt eine Verbindung mit der app_profiling.db-Datenbank her.

  3. In Interactive SQL führen Sie 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 beide Tabellen ein.

      INSERT INTO "deadlock1"("val") VALUES('x');
      INSERT INTO "deadlock2"("val") VALUES('x');
    3. Erstellen Sie zwei Prozeduren, die Sie später verwenden werden, um einen Deadlock zu bewirken.

      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. Beenden Sie Interactive SQL.