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 Anywhere 中的线程

 

控制线程行为

控制线程行为的主要因素有五个,每个因素都由一个服务器选项来控制。并非每个平台都支持所有这些选项。

  • 进程并发水平(-gn 服务器选项)   -gn 选项控制服务器的进程并发水平。此值决定可以同时处于活动状态的最大任务数量。每个数据库请求至少会使用一项任务,如果涉及查询内并行机制,则可能会使用更多项任务。此外,服务器有时会安排任务去执行内部整理活动。服务器中的任务数量超过进程并发水平时,待处理的任务必须等待,直到当前运行的任务或活动任务完成。缺省情况下,网络数据库服务器和个人数据库服务器最多可以并发执行 20 项任务。请参见-gn 服务器选项设置数据库服务器的进程并发水平

  • 每个内部执行线程的堆栈大小(-gss 服务器选项)   可以使用 -gss 选项设置服务器中每个内部执行线程的堆栈大小。使用 -gss 选项可以降低数据库服务器的内存使用量,在内存有限的环境中该选项可能会有帮助。Windows Mobile 是唯一支持此选项的 Windows 操作系统。请参见-gss 服务器选项

  • 处理器数量(-gt 服务器选项)   如果有多个处理器,则可以通过指定 -gt 选项来控制线程利用的处理器数量。请参见-gt 服务器选项

  • 处理器并发数(-gtc 服务器选项)   可以指定最多能够在 CPU 上并发运行的线程数量。缺省情况下,数据库服务器会在每个授权的物理处理器的所有超线程和内核上运行。请参见-gtc 服务器选项

线程技巧
  • 增大 -gn 可以降低发生线程死锁的几率。请参见-gn 服务器选项

  • 将 -gt 设置为 1 有助于以变通方式解决并发性问题。请参见-gt 服务器选项

  • 调查性能监控器中 [请求: 活动] 和 [请求: 未调度] 的读数有助于确定适合于 Windows 的 -gn 值。如果活动请求的数量始终小于 -gn,则可以降低 -gn。如果请求总数(活动请求数与未调度请求数之和)经常大于 -gn,则可能需要增加 -gn 的值。请参见性能监控器统计-gn 服务器选项

处理器使用和线程示例

以下示例说明数据库服务器如何根据 -gt 和 -gtc 的设置来选择 CPU 数量。为便于说明以下示例,假定系统安装有 4 个处理器,每个处理器有 2 个内核。物理处理器以字母进行标识,内核以数字进行标识,于是此系统具有处理单元 A0、A1、B0、B1、C0、C1、D0 和 D1。

方案 网络数据库服务器设置
单 CPU 许可或将 -gt 指定为 1
  • -gt 1
  • -gtc 2
  • -gn 20

线程可以在 A0 和 A1 上执行。

无 CPU 许可数量限制,并将 -gtc 指定为 5
  • -gt 4
  • -gtc 5
  • -gn 20

线程可以在 A0、A1、B0、C0 和 D0 上执行。

具有 3 CPU 许可并指定了 -gtc 5 的数据库服务器
  • -gt 3
  • -gtc 5
  • -gn 20

线程可以在 A0、A1、B0、B1 和 C0 上执行。

无 CPU 许可数量限制,并将 -gtc 指定为 1
  • -gt 4
  • -gtc 1
  • -gn 20

线程只能在 A0 上执行。