Имя: Пароль:
IT
Админ
MSSQL не потребляет оперативку
0 Alexandrovich
 
05.12.17
19:52
Коллеги, может кто то сталкивался, Microsoft SQL 2016 не хавает оперативку, обычно заберает по максимум, а это 30Мб, пользователей в 1С работает около 10, конфигурация ERP.
1 Alexandrovich
 
05.12.17
19:54
Сорри, 300Мб.
2 Klesk
 
05.12.17
19:54
этож щастье
3 Петрович 2018
 
05.12.17
19:55
(1) Действительно мало :-/
4 Alexandrovich
 
05.12.17
19:55
(2) Та не, это беда
5 Klesk
 
05.12.17
19:56
а с другой стороны чо, тормозит база?
6 Alexandrovich
 
05.12.17
19:57
(5) Да, наблюдается
7 H A D G E H O G s
 
05.12.17
19:59
Вот этот парень тебе все расскажет

DECLARE @Perf TABLE (object_name nvarchar(20), counter_name nvarchar(128), instance_name nvarchar(128), cntr_value BIGINT, formatted_value NUMERIC(20, 2), ShortName NVARCHAR(20))
INSERT INTO @Perf(object_name, counter_name, instance_name, cntr_value, formatted_value, ShortName)
SELECT
  CASE
    WHEN PATINDEX('%:Memory Manager%', object_name)> 0 THEN 'Memory Manager'
    WHEN PATINDEX('%:Buffer Manager%', object_name)> 0 THEN 'Buffer Manager'
    WHEN PATINDEX('%:Plan Cache%', object_name)> 0 THEN 'Plan Cache'
    WHEN PATINDEX('%:Buffer Node%', object_name)> 0 THEN 'Buffer Node' -- 2008
    WHEN PATINDEX('%:Memory Node%', object_name)> 0 THEN 'Memory Node' -- 2012
    ELSE NULL
  END AS object_name,
  CAST(RTRIM(counter_name) AS NVARCHAR(100)) AS counter_name,
  RTRIM(instance_name) AS instance_name,
  cntr_value,
  CAST(NULL AS DECIMAL(20,2)) AS formatted_value,
  SUBSTRING(counter_name,  1, PATINDEX('% %', counter_name)) ShortName
FROM sys.dm_os_performance_counters
WHERE (object_name LIKE '%:Buffer Node%' OR object_name LIKE '%:Buffer Manager%' OR object_name LIKE '%:Memory Node%' OR object_name LIKE '%:Plan Cache%')
  AND (counter_name LIKE '%pages %' OR counter_name = 'Page life expectancy' OR counter_name LIKE '%Node Memory (KB)%')
  OR  (object_name LIKE '%:Memory Manager%'
        AND RTRIM(counter_name) IN ('Granted Workspace Memory (KB)', 'Maximum Workspace Memory (KB)',
                                    'Memory Grants Outstanding',     'Memory Grants Pending',
                                    'Target Server Memory (KB)',     'Total Server Memory (KB)',
                                    -- for 2012
                                    'Free Memory (KB)',              'Reserved Server Memory (KB)',
                                    'Database Cache Memory (KB)',    'Stolen Server Memory (KB)')
      )

-- Convert values from pages and KB to MB and rename counters accordingly
UPDATE @Perf
SET
  counter_name = REPLACE(REPLACE(counter_name, 'pages', '(MB)'), '(KB)', '(MB)'),
  formatted_value =
  CASE
    WHEN counter_name LIKE '%pages' THEN cntr_value/128.
    WHEN counter_name LIKE '%(KB)' THEN cntr_value/1024.
    ELSE cntr_value
  END

-- Update counter/object names so they look like in 2012
UPDATE PC
SET
  object_name = REPLACE(object_name, 'Buffer', 'Memory'),
  counter_name = ISNULL(M.NewName, counter_name)  
FROM @Perf PC
  LEFT JOIN
  (
    SELECT 'Free (MB)' AS OldName, 'Free Memory (MB)' AS NewName UNION ALL
    SELECT 'Database (MB)', 'Database Cache Memory (MB)' UNION ALL
    SELECT 'Stolen (MB)', 'Stolen Server Memory (MB)' UNION ALL
    SELECT 'Reserved (MB)', 'Reserved Server Memory (MB)' UNION ALL
    SELECT 'Foreign (MB)', 'Foreign Node Memory (KB)'
  ) M ON M.OldName = PC.counter_name
  AND NewName NOT IN (SELECT counter_name FROM @Perf WHERE object_name = 'Memory Manager')
WHERE object_name IN ('Buffer Manager', 'Buffer Node')


-- Build Memory Tree
DECLARE @MemTree TABLE (Id int, ParentId int, counter_name nvarchar(128), formatted_value NUMERIC(20, 2), ShortName NVARCHAR(20))

-- Level 5
INSERT @MemTree(Id, ParentId, counter_name, formatted_value, ShortName)
SELECT
  Id = 1223,
  ParentId = 1222,
  instance_name + ' (MB)' as counter_name,
  formatted_value,
  ShortName
FROM @Perf
WHERE object_name = 'Plan Cache'
  AND counter_name IN ('Cache (MB)')
  AND instance_name <> '_Total'

-- Level 4
INSERT @MemTree(Id, ParentId, counter_name, formatted_value, ShortName)
SELECT
  Id = 1222,
  ParentId = 1220,
  'Plan ' + counter_name as counter_name,
  formatted_value,
  ShortName
FROM @Perf
WHERE object_name = 'Plan Cache'
  AND counter_name IN ('Cache (MB)')
  AND instance_name = '_Total'
UNION ALL

SELECT
  Id = 1112,
  ParentId = 1110,
  counter_name,
  formatted_value,
  ShortName
FROM @Perf
WHERE object_name = 'Memory Manager'
  AND counter_name IN ('Reserved Server Memory (MB)')
UNION ALL
SELECT
  Id = P.ParentID + 1,
  ParentID = P.ParentID,
  'Used Workspace Memory (MB)' AS counter_name,
  SUM(used_memory_kb)/1024. as formatted_value,
  NULL AS ShortName
FROM sys.dm_exec_query_resource_semaphores
  CROSS JOIN (SELECT 1220 AS ParentID UNION ALL SELECT 1110) P
GROUP BY P.ParentID

-- Level 3
INSERT @MemTree(Id, ParentId, counter_name, formatted_value, ShortName)
SELECT
  Id = CASE counter_name
           WHEN 'Granted Workspace Memory (MB)' THEN 1110
           WHEN 'Stolen Server Memory (MB)' THEN 1220
           ELSE 1210
         END,
  ParentId = CASE counter_name
               WHEN 'Granted Workspace Memory (MB)' THEN 1100
               ELSE 1200
             END,
  counter_name,
  formatted_value,
  ShortName
FROM @Perf
WHERE object_name = 'Memory Manager'
  AND counter_name IN ('Stolen Server Memory (MB)', 'Database Cache Memory (MB)', 'Free Memory (MB)', 'Granted Workspace Memory (MB)')

-- Level 2
INSERT @MemTree(Id, ParentId, counter_name, formatted_value, ShortName)
SELECT
  Id = CASE WHEN counter_name = 'Maximum Workspace Memory (MB)' THEN 1100 ELSE 1200 END,
  ParentId = 1000,
  counter_name,
  formatted_value,
  ShortName
FROM @Perf
WHERE object_name = 'Memory Manager' AND
  counter_name IN ('Total Server Memory (MB)', 'Maximum Workspace Memory (MB)')

-- Level 1
INSERT @MemTree(Id, ParentId, counter_name, formatted_value, ShortName)
SELECT
  Id = 1000,
  ParentId = NULL,
  counter_name,
  formatted_value,
  ShortName
FROM @Perf
WHERE object_name = 'Memory Manager' AND
  counter_name IN ('Target Server Memory (MB)')

-- Results:

-- PLE and Memory Grants
SELECT counter_name AS [Counter Name], cntr_value as Value
FROM @Perf
WHERE
  object_name = 'Memory Manager'
  AND counter_name IN ('Memory Grants Outstanding', 'Memory Grants Pending', 'Page life expectancy')

-- Memory tree
;WITH CTE
AS
(
SELECT 0 as lvl, counter_name, formatted_value,  CAST(NULL AS DECIMAL(20,2)) As Perc, Id, NULL AS ParentId, ShortName
FROM @MemTree
WHERE ParentId IS NULL
UNION ALL
SELECT CTE.lvl+1,
  CAST(REPLICATE(' ', 6*(CTE.lvl)) + NCHAR(124) + REPLICATE(NCHAR(183), 3) + MT.counter_name AS NVARCHAR(128)),
  MT.formatted_value, CAST(ISNULL(1.0*MT.formatted_value/NULLIF(CTE.formatted_value, 0),0) AS DECIMAL(20,2)) AS Perc, MT.Id, MT.ParentId, MT.ShortName
FROM @MemTree MT
  INNER JOIN CTE ON MT.ParentId = CTE.Id
)
SELECT
  counter_name AS [Counter Name], formatted_value AS Value, Perc AS [%]
FROM CTE
ORDER BY ISNULL(Id, 10000), formatted_value DESC
8 Cyberhawk
 
05.12.17
20:10
Послал так послал )))
9 ИТ директор
 
05.12.17
22:01
(0) Перезапусти сервер 1С
10 tesseract
 
05.12.17
22:35
MS SQL забирает, сколько ему указано в настройках. Может кто-то там чего понажимал?

Если нет обращения к файлам - sql их просто маппит, не загружая в оперативку ожидая pagefault.