psqlstatsshow
Version:
Web Monitoring PostgreSQL- Tracking execution statistics of all SQL statements executed by a server.
90 lines (80 loc) • 1.5 kB
JavaScript
const pg = require('pg').native
class Database {
constructor(options) {
console.log(options.database)
const pool = new pg.Pool({
database: options.database
})
this.pool = pool
}
async get(query, parameters) {
const client = await this.pool.connect()
const data = await client.query(query, parameters).catch(error => {
console.error(error)
return {
rows: {
error
}
}
})
client.release()
return data.rows
}
async mostUsed() {
return this.get(`
SELECT calls AS qt, query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 10;
`, [])
}
async mostRows() {
return this.get(`
SELECT rows AS qt, query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 10;
`, [])
}
async maxTime() {
return this.get(`
SELECT max_time AS qt, query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 10;
`, [])
}
async minTime() {
return this.get(`
SELECT min_time AS qt, query
FROM pg_stat_statements
ORDER BY 1 ASC
LIMIT 10;
`, [])
}
async meanTime() {
return this.get(`
SELECT mean_time AS qt, query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 10;
`, [])
}
async localRead() {
return this.get(`
SELECT local_blks_read AS qt, query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 10;
`, [])
}
async localWrite() {
return this.get(`
SELECT local_blks_written AS qt, query
FROM pg_stat_statements
ORDER BY 1 DESC
LIMIT 10;
`, [])
}
}
module.exports = Database