Melihat ketersediaan RAM Anda untuk server khusus ini dan Anda menjalankan beberapa basis data mulai dari 30GB hingga 5 GB , Anda pasti membutuhkan lebih banyak RAM di server ini.
Anda belum menyebutkan bahwa ini adalah contoh yang berdiri sendiri atau server ini memiliki lebih dari satu contoh menjalankan sql server.
Pengaturan MAX Memory Anda tampaknya OK untuk server yang memiliki RAM 8GB. Lihat pengaturan praktik terbaik yang disarankan ini dari Glenn Berry .
Saya akan sangat menyarankan Anda untuk melakukan baseline lingkungan Anda menggunakan penghitung PERFMON di bawah ini untuk mendapatkan nilai yang baik dari konfigurasi memori Anda:
- SQL Server: Buffer Manager \ Page Life Expectancy
- SQL Server: Buffer Manager \ Page membaca / detik
- Disk Fisik \ Disk Dibaca / dtk
- Memori \ Mbytes yang Tersedia
- SQL Server: Memory Manager - Total Server Memory
- SQL Server: Memory Manager - Memory Server Target
Total Server Memory: Jumlah memori yang saat ini dialokasikan untuk Buffer Pool dan bukan jumlah total memori ke SQL Server
Memori Server Target: Ukuran ideal kumpulan buffer yang terkait dengan memori maks untuk instance.
Catatan: Jika Total Server Memory> Target Server memory, maka itu menunjukkan tekanan memori.
Skrip di bawah ini akan membantu Anda menemukan pemberitahuan RENDAH atau TINGGI Memori sys.dm_os_ring_buffers
- sesi kesehatan sistem:
SELECT CONVERT (varchar(30), GETDATE(), 121) as [RunTime],
dateadd (ms, (rbf.[timestamp] - tme.ms_ticks), GETDATE()) as [Notification_Time],
cast(record as xml).value('(//Record/ResourceMonitor/Notification)[1]', 'varchar(30)') AS [Notification_type],
cast(record as xml).value('(//Record/MemoryRecord/MemoryUtilization)[1]', 'bigint') AS [MemoryUtilization %],
cast(record as xml).value('(//Record/MemoryNode/@id)[1]', 'bigint') AS [Node Id],
cast(record as xml).value('(//Record/ResourceMonitor/IndicatorsProcess)[1]', 'int') AS [Process_Indicator],
cast(record as xml).value('(//Record/ResourceMonitor/IndicatorsSystem)[1]', 'int') AS [System_Indicator],
cast(record as xml).value('(//Record/MemoryNode/ReservedMemory)[1]', 'bigint') AS [SQL_ReservedMemory_KB],
cast(record as xml).value('(//Record/MemoryNode/CommittedMemory)[1]', 'bigint') AS [SQL_CommittedMemory_KB],
cast(record as xml).value('(//Record/MemoryNode/AWEMemory)[1]', 'bigint') AS [SQL_AWEMemory],
cast(record as xml).value('(//Record/MemoryNode/SinglePagesMemory)[1]', 'bigint') AS [SinglePagesMemory],
cast(record as xml).value('(//Record/MemoryNode/MultiplePagesMemory)[1]', 'bigint') AS [MultiplePagesMemory],
cast(record as xml).value('(//Record/MemoryRecord/TotalPhysicalMemory)[1]', 'bigint') AS [TotalPhysicalMemory_KB],
cast(record as xml).value('(//Record/MemoryRecord/AvailablePhysicalMemory)[1]', 'bigint') AS [AvailablePhysicalMemory_KB],
cast(record as xml).value('(//Record/MemoryRecord/TotalPageFile)[1]', 'bigint') AS [TotalPageFile_KB],
cast(record as xml).value('(//Record/MemoryRecord/AvailablePageFile)[1]', 'bigint') AS [AvailablePageFile_KB],
cast(record as xml).value('(//Record/MemoryRecord/TotalVirtualAddressSpace)[1]', 'bigint') AS [TotalVirtualAddressSpace_KB],
cast(record as xml).value('(//Record/MemoryRecord/AvailableVirtualAddressSpace)[1]', 'bigint') AS [AvailableVirtualAddressSpace_KB],
cast(record as xml).value('(//Record/@id)[1]', 'bigint') AS [Record Id],
cast(record as xml).value('(//Record/@type)[1]', 'varchar(30)') AS [Type],
cast(record as xml).value('(//Record/@time)[1]', 'bigint') AS [Record Time],
tme.ms_ticks as [Current Time]
FROM sys.dm_os_ring_buffers rbf
cross join sys.dm_os_sys_info tme
where rbf.ring_buffer_type = 'RING_BUFFER_RESOURCE_MONITOR'
--and cast(record as xml).value('(//Record/ResourceMonitor/Notification)[1]', 'varchar(30)') = 'RESOURCE_MEMPHYSICAL_LOW'
ORDER BY rbf.timestamp ASC
Beberapa referensi bagus: