Skip to content

Commit

Permalink
satellite/db: add index to trial_expiration on users table
Browse files Browse the repository at this point in the history
This change adds an index to the trial_expiration column on the user's
table to prevent full table scans when querying expired users.

Issue: #6885

Change-Id: Ic9c8343321d25b00ec0ce1c80464634b2cbc654b
  • Loading branch information
wilfred-asomanii authored and Storj Robot committed Apr 9, 2024
1 parent 6073ca7 commit 95d8a25
Show file tree
Hide file tree
Showing 7 changed files with 834 additions and 1 deletion.
2 changes: 2 additions & 0 deletions satellite/satellitedb/dbx/satellitedb.dbx.go
Expand Up @@ -917,6 +917,7 @@ CREATE INDEX storagenode_storage_tallies_node_id_index ON storagenode_storage_ta
CREATE INDEX storjscan_payments_chain_id_block_number_log_index_index ON storjscan_payments ( chain_id, block_number, log_index ) ;
CREATE INDEX storjscan_wallets_wallet_address_index ON storjscan_wallets ( wallet_address ) ;
CREATE INDEX users_email_status_index ON users ( normalized_email, status ) ;
CREATE INDEX trial_expiration_index ON users ( trial_expiration ) ;
CREATE INDEX webapp_sessions_user_id_index ON webapp_sessions ( user_id ) ;
CREATE INDEX project_invitations_project_id_index ON project_invitations ( project_id ) ;
CREATE INDEX project_invitations_email_index ON project_invitations ( email ) ;
Expand Down Expand Up @@ -1624,6 +1625,7 @@ CREATE INDEX storagenode_storage_tallies_node_id_index ON storagenode_storage_ta
CREATE INDEX storjscan_payments_chain_id_block_number_log_index_index ON storjscan_payments ( chain_id, block_number, log_index ) ;
CREATE INDEX storjscan_wallets_wallet_address_index ON storjscan_wallets ( wallet_address ) ;
CREATE INDEX users_email_status_index ON users ( normalized_email, status ) ;
CREATE INDEX trial_expiration_index ON users ( trial_expiration ) ;
CREATE INDEX webapp_sessions_user_id_index ON webapp_sessions ( user_id ) ;
CREATE INDEX project_invitations_project_id_index ON project_invitations ( project_id ) ;
CREATE INDEX project_invitations_email_index ON project_invitations ( email ) ;
Expand Down
1 change: 1 addition & 0 deletions satellite/satellitedb/dbx/satellitedb.dbx.pgx.sql
Expand Up @@ -604,6 +604,7 @@ CREATE INDEX storagenode_storage_tallies_node_id_index ON storagenode_storage_ta
CREATE INDEX storjscan_payments_chain_id_block_number_log_index_index ON storjscan_payments ( chain_id, block_number, log_index ) ;
CREATE INDEX storjscan_wallets_wallet_address_index ON storjscan_wallets ( wallet_address ) ;
CREATE INDEX users_email_status_index ON users ( normalized_email, status ) ;
CREATE INDEX trial_expiration_index ON users ( trial_expiration ) ;
CREATE INDEX webapp_sessions_user_id_index ON webapp_sessions ( user_id ) ;
CREATE INDEX project_invitations_project_id_index ON project_invitations ( project_id ) ;
CREATE INDEX project_invitations_email_index ON project_invitations ( email ) ;
Expand Down
1 change: 1 addition & 0 deletions satellite/satellitedb/dbx/satellitedb.dbx.pgxcockroach.sql
Expand Up @@ -604,6 +604,7 @@ CREATE INDEX storagenode_storage_tallies_node_id_index ON storagenode_storage_ta
CREATE INDEX storjscan_payments_chain_id_block_number_log_index_index ON storjscan_payments ( chain_id, block_number, log_index ) ;
CREATE INDEX storjscan_wallets_wallet_address_index ON storjscan_wallets ( wallet_address ) ;
CREATE INDEX users_email_status_index ON users ( normalized_email, status ) ;
CREATE INDEX trial_expiration_index ON users ( trial_expiration ) ;
CREATE INDEX webapp_sessions_user_id_index ON webapp_sessions ( user_id ) ;
CREATE INDEX project_invitations_project_id_index ON project_invitations ( project_id ) ;
CREATE INDEX project_invitations_email_index ON project_invitations ( email ) ;
Expand Down
5 changes: 5 additions & 0 deletions satellite/satellitedb/dbx/user.dbx
Expand Up @@ -9,6 +9,11 @@ model user (
fields normalized_email status
)

index (
name trial_expiration_index
fields trial_expiration
)

// id is an uuid for the user.
field id blob
// email is the user specified email.
Expand Down
8 changes: 8 additions & 0 deletions satellite/satellitedb/migrate.go
Expand Up @@ -2694,6 +2694,14 @@ func (db *satelliteDB) ProductionMigration() *migrate.Migration {
`ALTER TABLE projects ADD COLUMN prompted_for_versioning_beta boolean NOT NULL DEFAULT false;`,
},
},
{
DB: &db.migrationDB,
Description: "add index on trial_expiration column in users table",
Version: 267,
Action: migrate.SQL{
`CREATE INDEX IF NOT EXISTS trial_expiration_index ON users (trial_expiration);`,
},
},
// NB: after updating testdata in `testdata`, run
// `go generate` to update `migratez.go`.
},
Expand Down
3 changes: 2 additions & 1 deletion satellite/satellitedb/migratez.go
Expand Up @@ -13,7 +13,7 @@ func (db *satelliteDB) testMigration() *migrate.Migration {
{
DB: &db.migrationDB,
Description: "Testing setup",
Version: 266,
Version: 267,
Action: migrate.SQL{`-- AUTOGENERATED BY storj.io/dbx
-- DO NOT EDIT
CREATE TABLE account_freeze_events (
Expand Down Expand Up @@ -620,6 +620,7 @@ CREATE INDEX storagenode_storage_tallies_node_id_index ON storagenode_storage_ta
CREATE INDEX storjscan_payments_chain_id_block_number_log_index_index ON storjscan_payments ( chain_id, block_number, log_index ) ;
CREATE INDEX storjscan_wallets_wallet_address_index ON storjscan_wallets ( wallet_address ) ;
CREATE INDEX users_email_status_index ON users ( normalized_email, status ) ;
CREATE INDEX trial_expiration_index ON users ( trial_expiration ) ;
CREATE INDEX webapp_sessions_user_id_index ON webapp_sessions ( user_id ) ;
CREATE INDEX project_invitations_project_id_index ON project_invitations ( project_id ) ;
CREATE INDEX project_invitations_email_index ON project_invitations ( email ) ;
Expand Down

0 comments on commit 95d8a25

Please sign in to comment.