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 (中文) » SQL Anywhere 服务器 - SQL 用法 » 性能提高、诊断和监控 » 应用程序分析教程 » 教程:诊断死锁

 

第 2 课:生成死锁并捕获数据

使用 [数据库跟踪向导] 生成死锁并捕获相关信息,用以创建诊断跟踪会话。

前提条件

本课假定您拥有在本教程开头的特权部分中列出的角色和特权: 教程:诊断死锁

本课假定您已完成前面的所有课程。请参见第 1 课:建立数据库

上下文和注释

在应用程序分析教程中,跟踪信息就存储在测试数据库 (app_profiling.db) 中,也就是正在运行本教程的数据库。但如果所要分析的数据库承受的负载很重,则应考虑将跟踪数据存储到另一个单独数据库中,以避免影响生产数据库的性能。

 任务
  1. 启动 Sybase Central。单击 [开始] » [程序] » [SQL Anywhere 16] » [管理工具] » [Sybase Central]。

  2. 在 Sybase Central 中,按以下操作连接到 app_profiling.db

    1. 单击 [连接] » [使用 SQL Anywhere 16 连接]。

    2. 在 [连接] 窗口中,完成以下字段以连接到测试数据库 app_profiling.db

      1. 在 [验证] 字段中,键入 [数据库]。

      2. 在 [用户 ID] 字段中键入 DBA

      3. 在 [口令] 字段中键入 sql

      4. 在 [操作] 下拉列表中,选择 [启动并连接到此计算机上的数据库]。

      5. 在 [数据库文件] 字段中,键入 C:\AppProfilingTutorial\app_profiling.db

      6. 在 [启动行] 字段中键入 dbeng16 -x tcpip

    3. 单击 [连接]。

  3. 在 Sybase Central 中,单击 [模式] » [应用程序分析]。

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

  4. 按以下步骤启动 [数据库跟踪向导]:

    1. 单击 [文件] » [跟踪]。

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

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

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

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

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

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

  5. 按以下步骤创建死锁:

    1. 在左窗格中,确保选中 app_profiling - DBA,然后单击 [文件] » [打开 Interactive SQL]。

      Interactive SQL 启动并连接到 app_profiling.db 数据库。

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

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

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

      CALL "DBA"."proc_deadlock2"();

      片刻之后,将出现 [ISQL 错误] 窗口,表明已检测到死锁。

      发生死锁是因为 proc_deadlock1 需要访问 deadlock2 表,而 deadlock2 表被 proc_deadlock2 锁定。同时,proc_deadlock2 需要访问 deadlock1 表,但 deadlock1 表被 proc_deadlock1 锁定。

    5. 单击 [确定]。

  6. SQL Anywhere 已停止死锁操作,因此可以关闭 Interactive SQL 窗口。

  7. 在 Sybase Central 中,选中左窗格中的 app_profiling - DBA,然后单击 [文件] » [跟踪] » [停止跟踪并保存] 停止跟踪会话。

结果

已生成死锁并已收集其相关信息。

 另请参见