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

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - SQL 的用法 » 监控和提高数据库性能 » 应用程序分析教程 » 教程:诊断死锁

 

第 3 课:捕获死锁数据

[数据库跟踪向导] 可用于创建诊断跟踪会话。该跟踪会话将捕获死锁数据。

♦  捕获死锁数据
  1. 在 Sybase Central 中,选择 [模式] » [应用程序分析]。

    如果出现 [应用程序分析向导],则单击 [取消]。

  2. 启动 [数据库跟踪向导]。

    1. 在左窗格中,单击 app_profiling - DBA,然后选择 [文件] » [跟踪]。

    2. 在 [欢迎] 页面上,单击 [下一步]。

    3. 在 [跟踪详细信息级别] 页面上,选择 [高详细信息(建议短期、集中监控使用)],然后单击 [下一步]。

    4. 在 [编辑跟踪级别] 页面上,单击 [下一步]。

    5. 在 [创建外部数据库] 页面上,选择 [不创建新数据库。我将使用现有跟踪数据库],然后单击 [下一步]。

    6. 在 [启动跟踪] 页面上,选择 [在此数据库中保存跟踪数据]。

    7. 若不想对存储的跟踪数据量设置任何限制,请选择 [无限制],然后单击 [完成]。

    8. 单击 [完成]。

  3. 形成死锁。

    1. 在 Sybase Central 的左窗格中,选择 app_profiling - DBA 数据库,然后选择 [文件] » [打开 Interactive SQL]。

      Interactive SQL 启动并连接到 app_profiling - DBA 数据库。

    2. 重复前面的步骤,打开另一个 Interactive SQL 窗口。

    3. 在一个 Interactive SQL 窗口中,运行以下 SQL 语句:

      CALL "DBA"."proc_deadlock1"();
    4. 在 20 秒内于第二个 Interactive SQL 窗口中运行以下 SQL 语句:

      CALL "DBA"."proc_deadlock2"();

      片刻之后,将出现 [ISQL 错误] 窗口,表明已检测到死锁。这是因为 proc_deadlock1 需要访问 deadlock2 表,而 deadlock2 表被 proc_deadlock2 锁定。同时 proc_deadlock2 需要访问 deadlock1 表,但 deadlock1 表被 proc_deadlock1 锁定。

    5. 单击 [确定]。

  4. 关闭这两个 Interactive SQL 窗口。

  5. 要停止跟踪会话,在 Sybase Central 中选择 app_profiling - DBA 数据库,然后选择 [文件] » [跟踪] » [停止跟踪并保存]。