Skip to content

perf: replace DELETE loop with TRUNCATE CASCADE in test cleanup#3421

Closed
idoshamun wants to merge 1 commit intomainfrom
testing-performance
Closed

perf: replace DELETE loop with TRUNCATE CASCADE in test cleanup#3421
idoshamun wants to merge 1 commit intomainfrom
testing-performance

Conversation

@idoshamun
Copy link
Copy Markdown
Member

Summary

  • Replace individual DELETE statements (~131 tables × 2 queries each) with a single TRUNCATE TABLE ... RESTART IDENTITY CASCADE query in test cleanup
  • TRUNCATE is faster than DELETE (no row-by-row WAL logging)
  • CASCADE handles foreign key constraints automatically
  • RESTART IDENTITY resets sequences in the same statement

Expected impact: 60-70% reduction in per-test cleanup time

Test plan

  • CI tests pass
  • Compare test runtime before/after in CircleCI Insights

Closes ENG-280

Replace individual DELETE statements (~131 tables × 2 queries each) with
a single TRUNCATE TABLE ... RESTART IDENTITY CASCADE query.

- TRUNCATE is faster than DELETE (no row-by-row WAL logging)
- CASCADE handles foreign key constraints automatically
- RESTART IDENTITY resets sequences in the same statement

Expected: 60-70% reduction in per-test cleanup time

Closes ENG-280
@pulumi
Copy link
Copy Markdown

pulumi Bot commented Jan 9, 2026

🍹 The Update (preview) for dailydotdev/api/prod (at 6c04ee0) was successful.

Resource Changes

    Name                                                   Type                                  Operation
-   vpc-native-api-db-migration-ef0f2afe                   kubernetes:batch/v1:Job               delete
~   vpc-native-sync-subscription-with-cio-cron             kubernetes:batch/v1:CronJob           update
~   vpc-native-post-analytics-history-day-clickhouse-cron  kubernetes:batch/v1:CronJob           update
+   vpc-native-api-db-migration-b8acd5b6                   kubernetes:batch/v1:Job               create
~   vpc-native-update-highlighted-views-cron               kubernetes:batch/v1:CronJob           update
~   vpc-native-check-analytics-report-cron                 kubernetes:batch/v1:CronJob           update
+-  api-sub-api.candidate-review-opportunity-slack         gcp:pubsub/subscription:Subscription  create-replacement
~   vpc-native-personalized-digest-cron                    kubernetes:batch/v1:CronJob           update
~   vpc-native-clean-zombie-images-cron                    kubernetes:batch/v1:CronJob           update
~   vpc-native-clean-gifted-plus-cron                      kubernetes:batch/v1:CronJob           update
+   api-sub-api.candidate-accepted-opportunity-slack       gcp:pubsub/subscription:Subscription  create
~   vpc-native-generate-search-invites-cron                kubernetes:batch/v1:CronJob           update
~   vpc-native-ws-deployment                               kubernetes:apps/v1:Deployment         update
~   vpc-native-update-tags-str-cron                        kubernetes:batch/v1:CronJob           update
~   vpc-native-calculate-top-readers-cron                  kubernetes:batch/v1:CronJob           update
~   vpc-native-update-current-streak-cron                  kubernetes:batch/v1:CronJob           update
~   vpc-native-update-source-tag-view-cron                 kubernetes:batch/v1:CronJob           update
~   vpc-native-validate-active-users-cron                  kubernetes:batch/v1:CronJob           update
~   vpc-native-post-analytics-clickhouse-cron              kubernetes:batch/v1:CronJob           update
~   vpc-native-update-tag-recommendations-cron             kubernetes:batch/v1:CronJob           update
~   vpc-native-private-deployment                          kubernetes:apps/v1:Deployment         update
~   vpc-native-clean-zombie-opportunities-cron             kubernetes:batch/v1:CronJob           update
~   vpc-native-update-source-public-threshold-cron         kubernetes:batch/v1:CronJob           update
+   vpc-native-api-clickhouse-migration-b8acd5b6           kubernetes:batch/v1:Job               create
~   vpc-native-generic-referral-reminder-cron              kubernetes:batch/v1:CronJob           update
~   vpc-native-deployment                                  kubernetes:apps/v1:Deployment         update
~   vpc-native-clean-zombie-users-cron                     kubernetes:batch/v1:CronJob           update
~   vpc-native-clean-stale-user-transactions-cron          kubernetes:batch/v1:CronJob           update
~   vpc-native-clean-zombie-user-companies-cron            kubernetes:batch/v1:CronJob           update
~   vpc-native-personalized-digest-deployment              kubernetes:apps/v1:Deployment         update
~   vpc-native-update-views-cron                           kubernetes:batch/v1:CronJob           update
~   vpc-native-daily-digest-cron                           kubernetes:batch/v1:CronJob           update
~   vpc-native-bg-deployment                               kubernetes:apps/v1:Deployment         update
~   vpc-native-temporal-deployment                         kubernetes:apps/v1:Deployment         update
~   vpc-native-hourly-notification-cron                    kubernetes:batch/v1:CronJob           update
~   vpc-native-update-trending-cron                        kubernetes:batch/v1:CronJob           update
~   vpc-native-user-profile-updated-sync-cron              kubernetes:batch/v1:CronJob           update
-   vpc-native-api-clickhouse-migration-ef0f2afe           kubernetes:batch/v1:Job               delete

@idoshamun idoshamun closed this Jan 9, 2026
@idoshamun idoshamun deleted the testing-performance branch January 9, 2026 20:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant