none
SQL 2005記憶體設定 RRS feed

解答

  • 請問我在SQL 2005記憶體設定看到最大伺服器記憶體(以MB為單位)
    下面顯示2147483647,是不是代表2GB
    但我的系統有4GB記憶體,windows2003 Standard server r2,SQL 2005標準版
    微軟網站http://www.microsoft.com/taiwan/sql/prodinfo/features/compare-features.mspx
    顯示是以作業系統的最大值
    http://www.microsoft.com/taiwan/windowsserver2003/evaluation/features/compareeditions.mspx
    但最大伺服器記憶體為何只有2GB

    這是預設值
    開發團隊希望SQL SERVER可以無上限使用記憶體,並非該SQL SERVER所持有記憶體

    這也是為什麼有人會建議更改此設定值,因為總要留給OS 500MB執行基本服務,不然總有一天會因為SQL SERVER耗盡記憶體導致os crash

    想要知道SQL SERVER所可用記憶體和實體記憶體

    With VASummary(Size,Reserved,Free) AS
    (SELECT
      Size = VaDump.Size,
      Reserved = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 0 ELSE 1 END),
      Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 1 ELSE 0 END)
    FROM
    (
      SELECT CONVERT(VARBINARY, SUM(region_size_in_bytes))
        AS Size,
        region_allocation_base_address AS Base
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address <> 0x0
      GROUP BY region_allocation_base_address
      UNION
      SELECT CONVERT(VARBINARY, region_size_in_bytes),
        region_allocation_base_address
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address = 0x0
    )
    AS VaDump
    GROUP BY Size)
    SELECT SUM(Size*Free)/1024/1024 AS [Total avail mem, MB] ,CAST(MAX(Size) AS INT)/1024/1024
        AS [Max free size, MB]
    FROM VASummary
    WHERE Free <> 0

    or

    select * from sys.dm_os_sys_info


    bpool_commit_target
    bpool_committed 資料行,以分別傳回保留為記憶體目標的頁數和緩衝快取目前認可的頁數



    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月27日 上午 06:24
    版主

所有回覆

  • 214783647的單位應該是MB吧 ?
    2GB才2048MB

    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    • 已標示為解答 Alex ChuoModerator 2009年10月31日 上午 11:24
    • 已取消標示為解答 jasonlius 2009年11月2日 上午 02:22
    2009年10月27日 上午 05:38
  • 但不可能最大顯示214783647MB,是不是介面寫錯,而是bytes?

    2009年10月27日 上午 05:43
  • TechNet 中文版的說明
    http://technet.microsoft.com/zh-tw/library/ms181453%28SQL.90%29.aspx

    最大伺服器記憶體 (以 MB 為單位)

    指定 SQL Server 啟動和執行時可以配置的最大記憶體數量。如果您知道會有多個應用程式與 SQL Server 同時執行,且您要確保有足夠的記憶體來執行這些應用程式,就可以將此組態選項設定為特定的值。如果這些其他應用程式 (例如 Web 或電子郵件伺服器) 只視需要要求記憶體,那麼就不要設定此選項,因為 SQL Server 會在它們需要記憶體時釋放出來。不過,應用程式通常是在啟動時使用可以取得的任何記憶體,而且不會在需要時再要求更多記憶體。如果以這種方式運作的應用程 式與 SQL Server 同時在同一部電腦上執行的話,請設定此選項的值,以保證 SQL Server 不會配置應用程式所需的記憶體。



    英文版的說明
    http://technet.microsoft.com/en-us/library/ms181453%28SQL.90%29.aspx

    Maximum server memory (in MB)

    Specifies the maximum amount of memory SQL Server can allocate when it starts and while it runs. This configuration option can be set to a specific value if you know there are multiple applications running at the same time as SQL Server and you want to guarantee that these applications have sufficient memory to run. If these other applications, such as Web or e-mail servers, request memory only as needed, then do not set the option, because SQL Server will release memory to them as needed. However, applications often use whatever memory is available when they start and do not request more if needed. If an application that behaves in this manner runs on the same computer at the same time as SQL Server, set the option to a value that guarantees that the memory required by the application is not allocated by SQL Server.



    都指出它的單位為MB.

    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年10月27日 上午 05:47
  • 你如果想要自己實證看看, 可以參考這個TechNet的說明
    [監視記憶體使用狀況 ]

    然後寫個程式把SQL Sever撐到爆

    學而不思則罔, 思而不學則殆.
    如果你一直都看不懂、不想學習看懂、抗拒看懂MSDN Library的話,那你最好放棄想要寫好程式這件事
    如果你自私地不肯回饋與分享,那別人為何要花時間回答你的問題?
    2009年10月27日 上午 06:09
  • 請問我在SQL 2005記憶體設定看到最大伺服器記憶體(以MB為單位)
    下面顯示2147483647,是不是代表2GB
    但我的系統有4GB記憶體,windows2003 Standard server r2,SQL 2005標準版
    微軟網站http://www.microsoft.com/taiwan/sql/prodinfo/features/compare-features.mspx
    顯示是以作業系統的最大值
    http://www.microsoft.com/taiwan/windowsserver2003/evaluation/features/compareeditions.mspx
    但最大伺服器記憶體為何只有2GB

    這是預設值
    開發團隊希望SQL SERVER可以無上限使用記憶體,並非該SQL SERVER所持有記憶體

    這也是為什麼有人會建議更改此設定值,因為總要留給OS 500MB執行基本服務,不然總有一天會因為SQL SERVER耗盡記憶體導致os crash

    想要知道SQL SERVER所可用記憶體和實體記憶體

    With VASummary(Size,Reserved,Free) AS
    (SELECT
      Size = VaDump.Size,
      Reserved = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 0 ELSE 1 END),
      Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 1 ELSE 0 END)
    FROM
    (
      SELECT CONVERT(VARBINARY, SUM(region_size_in_bytes))
        AS Size,
        region_allocation_base_address AS Base
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address <> 0x0
      GROUP BY region_allocation_base_address
      UNION
      SELECT CONVERT(VARBINARY, region_size_in_bytes),
        region_allocation_base_address
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address = 0x0
    )
    AS VaDump
    GROUP BY Size)
    SELECT SUM(Size*Free)/1024/1024 AS [Total avail mem, MB] ,CAST(MAX(Size) AS INT)/1024/1024
        AS [Max free size, MB]
    FROM VASummary
    WHERE Free <> 0

    or

    select * from sys.dm_os_sys_info


    bpool_commit_target
    bpool_committed 資料行,以分別傳回保留為記憶體目標的頁數和緩衝快取目前認可的頁數



    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月27日 上午 06:24
    版主
  • 伺服器: 訊息 156,層級 15,狀態 1,行 1
    關鍵字 'With' 附近的語法不正確。

    伺服器: 訊息 208,層級 16,狀態 1,行 1
    無效的物件名稱 'sys.dm_os_sys_info'。
    2009年10月28日 上午 01:38
  • 查看master的system view是否真的沒有相關物件
    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月28日 下午 02:13
    版主
  • 伺服器: 訊息 156,層級 15,狀態 1,行 1
    關鍵字 'With' 附近的語法不正確。

    伺服器: 訊息 208,層級 16,狀態 1,行 1
    無效的物件名稱 'sys.dm_os_sys_info'。
    use master
    go

    ;With VASummary(Size,Reserved,Free) AS
    (SELECT
      Size = VaDump.Size,
      Reserved = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 0 ELSE 1 END),
      Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 1 ELSE 0 END)
    FROM
    (
      SELECT CONVERT(VARBINARY, SUM(region_size_in_bytes))
        AS Size,
        region_allocation_base_address AS Base
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address <> 0x0
      GROUP BY region_allocation_base_address
      UNION
      SELECT CONVERT(VARBINARY, region_size_in_bytes),
        region_allocation_base_address
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address = 0x0
    )
    AS VaDump
    GROUP BY Size)
    SELECT SUM(Size*Free)/1024/1024 AS [Total avail mem, MB] ,CAST(MAX(Size) AS INT)/1024/1024
        AS [Max free size, MB]
    FROM VASummary
    WHERE Free <> 0
    2009年10月28日 下午 08:20
  • 伺服器: 訊息 170,層級 15,狀態 1,行 2
    行 2: ';' 附近的語法不正確。
    2009年10月29日 上午 01:35
  • use master
    go

    With VASummary(Size,Reserved,Free) AS
    (SELECT
      Size = VaDump.Size,
      Reserved = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 0 ELSE 1 END),
      Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 1 ELSE 0 END)
    FROM
    (
      SELECT CONVERT(VARBINARY, SUM(region_size_in_bytes))
        AS Size,
        region_allocation_base_address AS Base
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address <> 0x0
      GROUP BY region_allocation_base_address
      UNION
      SELECT CONVERT(VARBINARY, region_size_in_bytes),
        region_allocation_base_address
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address = 0x0
    )
    AS VaDump
    GROUP BY Size)
    SELECT SUM(Size*Free)/1024/1024 AS [Total avail mem, MB] ,CAST(MAX(Size) AS INT)/1024/1024
        AS [Max free size, MB]
    FROM VASummary
    WHERE Free <> 0



    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月29日 上午 02:37
    版主
  • 伺服器: 訊息 156,層級 15,狀態 1,行 2
    關鍵字 'With' 附近的語法不正確。
    2009年10月29日 上午 05:18
  • use master;
    With VASummary(Size,Reserved,Free) AS
    (SELECT
      Size = VaDump.Size,
      Reserved = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 0 ELSE 1 END),
      Free = SUM(CASE(CONVERT(INT, VaDump.Base)^0)
      WHEN 0 THEN 1 ELSE 0 END)
    FROM
    (
      SELECT CONVERT(VARBINARY, SUM(region_size_in_bytes))
        AS Size,
        region_allocation_base_address AS Base
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address <> 0x0
      GROUP BY region_allocation_base_address
      UNION
      SELECT CONVERT(VARBINARY, region_size_in_bytes),
        region_allocation_base_address
      FROM sys.dm_os_virtual_address_dump
      WHERE region_allocation_base_address = 0x0
    )
    AS VaDump
    GROUP BY Size)
    SELECT SUM(Size*Free)/1024/1024 AS [Total avail mem, MB] ,CAST(MAX(Size) AS INT)/1024/1024
        AS [Max free size, MB]
    FROM VASummary
    WHERE Free <> 0

    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月29日 上午 06:50
    版主
  • 伺服器: 訊息 156,層級 15,狀態 1,行 2
    關鍵字 'With' 附近的語法不正確。
    2009年10月30日 上午 01:45
  • 你直接看SQLServer:Memory Manager Target ServerMemory(KB)

    SQL Server 的 Memory Manager 物件
    http://technet.microsoft.com/zh-tw/library/ms190924.aspx

    開始>執行>perfmon.msc


    http://www.dotblogs.com.tw/ricochen/Default.aspx
    2009年10月30日 上午 02:32
    版主