Skip to content

Commit 3f72e0c

Browse files
author
Carlos Castro
authored
NEWRELIC-3918 optimize buffer pool query (#99)
1 parent 07818e9 commit 3f72e0c

2 files changed

Lines changed: 7 additions & 8 deletions

File tree

src/metrics/database_metric_definitions.go

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,13 +53,12 @@ var databaseDefinitions = []*QueryDefinition{
5353
// databaseBufferDefinitions definitions for Database Queries
5454
var databaseBufferDefinitions = []*QueryDefinition{
5555
{
56-
query: `SELECT
57-
DB_NAME(database_id) AS db_name,
58-
COUNT_BIG(*) * (8*1024) AS buffer_pool_size
59-
FROM sys.dm_os_buffer_descriptors WITH (NOLOCK)
60-
WHERE database_id <> 32767 -- ResourceDB
61-
AND DB_NAME(database_id) NOT IN ('master', 'tempdb', 'msdb', 'model', 'rdsadmin', 'distribution', 'model_msdb', 'model_replicatedmaster')
62-
GROUP BY database_id`,
56+
query: `SELECT DB_NAME(database_id) AS db_name, buffer_pool_size * (8*1024) AS buffer_pool_size
57+
FROM ( SELECT database_id, COUNT_BIG(*) AS buffer_pool_size FROM sys.dm_os_buffer_descriptors a WITH (NOLOCK)
58+
INNER JOIN sys.sysdatabases b WITH (NOLOCK) ON b.dbid=a.database_id
59+
WHERE b.dbid in (SELECT dbid FROM sys.sysdatabases WITH (NOLOCK)
60+
WHERE name NOT IN ('master', 'tempdb', 'msdb', 'model', 'rdsadmin', 'distribution', 'model_msdb', 'model_replicatedmaster')
61+
UNION ALL SELECT 32767) GROUP BY database_id) a`,
6362
dataModels: &[]struct {
6463
database.DataModel
6564
IOStalls int `db:"buffer_pool_size" metric_name:"bufferpool.sizePerDatabaseInBytes" source_type:"gauge"`

src/metrics/metrics_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func Test_populateDatabaseMetrics(t *testing.T) {
7575
mock.ExpectQuery(`select\s+RTRIM\(t1\.instance_name\).*`).
7676
WillReturnRows(logGrowthRows)
7777

78-
mock.ExpectQuery(`SELECT DB_NAME\(database_id\) AS db_name, COUNT_BIG\(\*\) \* \(8\*1024\) AS buffer_pool_size .*`).WillReturnRows(bufferMetricsRows)
78+
mock.ExpectQuery(`SELECT DB_NAME\(database_id\) AS db_name, buffer_pool_size \* \(8\*1024\) AS buffer_pool_size .*`).WillReturnRows(bufferMetricsRows)
7979

8080
mock.ExpectClose()
8181

0 commit comments

Comments
 (0)