fix(planner): add index on sessions.last_activity for the expire job
The hourly `expireSessions()` cron runs `DELETE FROM planner.sessions WHERE last_activity < cutoff`. Without an index on `last_activity`, that's a full table scan growing linearly with the total sessions ever created (planner sessions are never user-deleted; expiry is the only churn path). `drizzle-kit push` picks this up on next deploy.
This commit is contained in:
parent
d07207464e
commit
d2b28a1164
1 changed files with 7 additions and 2 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import { pgSchema, text, timestamp, boolean, customType } from "drizzle-orm/pg-core";
|
||||
import { pgSchema, text, timestamp, boolean, customType, index } from "drizzle-orm/pg-core";
|
||||
|
||||
const bytea = customType<{ data: Buffer }>({
|
||||
dataType() {
|
||||
|
|
@ -16,4 +16,9 @@ export const sessions = plannerSchema.table("sessions", {
|
|||
createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
|
||||
lastActivity: timestamp("last_activity", { withTimezone: true }).notNull().defaultNow(),
|
||||
closed: boolean("closed").notNull().default(false),
|
||||
});
|
||||
}, (t) => ({
|
||||
// Hourly `expireSessions()` job runs `DELETE WHERE last_activity < cutoff`.
|
||||
// Without this index it's a full table scan that grows linearly with
|
||||
// total sessions ever created.
|
||||
lastActivityIdx: index("sessions_last_activity_idx").on(t.lastActivity),
|
||||
}));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue