feat(studio): add columns and update labels for query performance (#38744)

* feat: change calls label to count

This changes the column title for calls to count for clarity

* feat: add cache hit rate col and number formatting

Adds a cache hit rate column for each query as well as tidies up some number formatting.

* feat: add styling for 0 numbers

This makes anything marked as 0 feint in the table for easier parsing.

* chore: remove debug console log

* fix: silly next-env again

* nit: remove avg rows col

* nit: add toFixed to cache hit rate

* feat: add  tooltip for role column
This commit is contained in:
kemal.earth
2025-09-16 13:43:43 +01:00
committed by GitHub
parent 83122eb4c6
commit bc2dac6d68
3 changed files with 166 additions and 15 deletions

View File

@@ -16,10 +16,51 @@ export const QUERY_PERFORMANCE_COLUMNS = [
{ id: 'query', name: 'Query', description: undefined, minWidth: 500 },
{ id: 'prop_total_time', name: 'Time consumed', description: undefined, minWidth: 130 },
{ id: 'total_time', name: 'Total time', description: 'latency', minWidth: 150 },
{ id: 'calls', name: 'Calls', description: undefined, minWidth: 100 },
{ id: 'calls', name: 'Count', description: undefined, minWidth: 100 },
{ id: 'max_time', name: 'Max time', description: undefined, minWidth: 100 },
{ id: 'mean_time', name: 'Mean time', description: undefined, minWidth: 100 },
{ id: 'min_time', name: 'Min time', description: undefined, minWidth: 100 },
{ id: 'avg_rows', name: 'Avg. Rows', description: undefined, minWidth: 100 },
{ id: 'rolname', name: 'Role', description: undefined, minWidth: 120 },
{ id: 'rows_read', name: 'Rows read', description: undefined, minWidth: 100 },
{ id: 'cache_hit_rate', name: 'Cache hit rate', description: undefined, minWidth: 130 },
{ id: 'rolname', name: 'Role', description: undefined, minWidth: 160 },
] as const
export const QUERY_PERFORMANCE_ROLE_DESCRIPTION = [
{ name: 'postgres', description: 'The default Postgres role. This has admin privileges.' },
{
name: 'anon',
description:
'For unauthenticated, public access. This is the role which the API (PostgREST) will use when a user is not logged in.',
},
{
name: 'authenticator',
description:
'A special role for the API (PostgREST). It has very limited access, and is used to validate a JWT and then "change into" another role determined by the JWT verification.',
},
{
name: 'authenticated',
description:
'For "authenticated access." This is the role which the API (PostgREST) will use when a user is logged in.',
},
{
name: 'service_role',
description:
'For elevated access. This role is used by the API (PostgREST) to bypass Row Level Security.',
},
{
name: 'supabase_auth_admin',
description:
'Used by the Auth middleware to connect to the database and run migration. Access is scoped to the auth schema.',
},
{
name: 'supabase_storage_admin',
description:
'Used by the Auth middleware to connect to the database and run migration. Access is scoped to the storage schema.',
},
{ name: 'dashboard_user', description: 'For running commands via the Supabase UI.' },
{
name: 'supabase_admin',
description:
'An internal role Supabase uses for administrative tasks, such as running upgrades and automations.',
},
] as const