none
这样使用resource governor有什么问题呢,怎么不work? RRS feed

  • 问题

  • 环境:SQL Server 2008 R2

    create resource pool wisontest with 
    (min_cpu_percent=15,max_cpu_percent=30,min_memory_Percent=15,max_memory_percent=30)

    create workload group grouptest
    with (group_max_requests=3)
    using wisontest
    go

    create function rgclassifier_v1() returns sysname
    with schemabinding
    as
    begin
    declare @grp_name as sysname
    if (SUSER_NAME()='wison')
    set @grp_name='grouptest'
    return @grp_name
    end
    go

    alter resource governor with (classifier_function=dbo.rgclassifier_v1)

    alter resource governor reconfigure

    我这里设置了group_max_requests=3,应该是意味着通过这个group连接进来的最大连接数是3.

    我使用wison这个账号新建了超过三个窗口也不报错,请问是什么原因呢? 还是说我理解错误了


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2015年8月7日 2:16

答案

  • How fast can you beat computer on that? You feel you opened more than 3 sessions at same time but cpu told otherwise.
    • 已标记为答案 Wison-Ho 2015年8月8日 0:48
    2015年8月7日 3:34
  • 我测试了没问题的, group_max_requests 是最大的并发请求(不是连接),连接和请求是两个不同的概念

    你这样测试,新建3个查询,执行: waitfor delay '00:05:00'

    这样就有3个执行需要5分钟的请求了,然后你试试再开一个查询窗口(或者是 sqlcmd 连接),你会发现打不开的,这两种方式,连接的时候都会自动发出设置语句(也就是有请求的),所以会被阻塞

    • 已标记为答案 Wison-Ho 2015年8月8日 0:48
    2015年8月7日 5:32

全部回复

  • From BOL:

    When the maximum concurrent requests are reached, a user in that group can log in, but is placed in a wait state until concurrent requests are dropped below the value specified.

    2015年8月7日 2:52
  • From BOL:

    When the maximum concurrent requests are reached, a user in that group can log in, but is placed in a wait state until concurrent requests are dropped below the value specified.

     但是我在那几个窗口中执行了脚本,都是可以返回结果的。

    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2015年8月7日 2:57
  • From BOL:

    When the maximum concurrent requests are reached, a user in that group can log in, but is placed in a wait state until concurrent requests are dropped below the value specified.

    而且这样定义也没什么好处吧。至少他的进程是创建了的,这样也会消耗资源啊。干嘛不直接禁止,不允许创建连接呢


    If you haven't all the things you want,be grateful for the things you don't have that you didn't want.

    2015年8月7日 3:02
  • How fast can you beat computer on that? You feel you opened more than 3 sessions at same time but cpu told otherwise.
    • 已标记为答案 Wison-Ho 2015年8月8日 0:48
    2015年8月7日 3:34
  • 我测试了没问题的, group_max_requests 是最大的并发请求(不是连接),连接和请求是两个不同的概念

    你这样测试,新建3个查询,执行: waitfor delay '00:05:00'

    这样就有3个执行需要5分钟的请求了,然后你试试再开一个查询窗口(或者是 sqlcmd 连接),你会发现打不开的,这两种方式,连接的时候都会自动发出设置语句(也就是有请求的),所以会被阻塞

    • 已标记为答案 Wison-Ho 2015年8月8日 0:48
    2015年8月7日 5:32