diff --git a/util/Migrator/DbScripts/2025-11-14_00_PopulateMaxStorageGbIncreased.sql b/util/Migrator/DbScripts/2025-11-14_00_PopulateMaxStorageGbIncreased.sql index 7d8484cc1a..2a2501e72b 100644 --- a/util/Migrator/DbScripts/2025-11-14_00_PopulateMaxStorageGbIncreased.sql +++ b/util/Migrator/DbScripts/2025-11-14_00_PopulateMaxStorageGbIncreased.sql @@ -1,13 +1,53 @@ --- Populate MaxStorageGbIncreased for Users +-- Populate MaxStorageGbIncreased for Users in batches -- Set MaxStorageGbIncreased = MaxStorageGb + 4 for all users with storage quota -UPDATE [dbo].[User] -SET [MaxStorageGbIncreased] = [MaxStorageGb] + 4 -WHERE [MaxStorageGb] IS NOT NULL; +-- Using batched updates to reduce lock contention and transaction log impact +DECLARE @BatchSize INT = 5000; +DECLARE @RowsAffected INT = 1; +DECLARE @TotalUpdated INT = 0; + +PRINT 'Starting User table update...'; + +WHILE @RowsAffected > 0 +BEGIN + UPDATE TOP (@BatchSize) [dbo].[User] + SET [MaxStorageGbIncreased] = [MaxStorageGb] + 4 + WHERE [MaxStorageGb] IS NOT NULL + AND [MaxStorageGbIncreased] IS NULL; -- Only update rows not yet processed + + SET @RowsAffected = @@ROWCOUNT; + SET @TotalUpdated = @TotalUpdated + @RowsAffected; + + PRINT 'Users updated: ' + CAST(@TotalUpdated AS VARCHAR(10)); + + WAITFOR DELAY '00:00:00.100'; -- 100ms delay to reduce contention +END + +PRINT 'User table update complete. Total rows updated: ' + CAST(@TotalUpdated AS VARCHAR(10)); GO --- Populate MaxStorageGbIncreased for Organizations +-- Populate MaxStorageGbIncreased for Organizations in batches -- Set MaxStorageGbIncreased = MaxStorageGb + 4 for all organizations with storage quota -UPDATE [dbo].[Organization] -SET [MaxStorageGbIncreased] = [MaxStorageGb] + 4 -WHERE [MaxStorageGb] IS NOT NULL; +-- Using batched updates to reduce lock contention and transaction log impact +DECLARE @BatchSize INT = 5000; +DECLARE @RowsAffected INT = 1; +DECLARE @TotalUpdated INT = 0; + +PRINT 'Starting Organization table update...'; + +WHILE @RowsAffected > 0 +BEGIN + UPDATE TOP (@BatchSize) [dbo].[Organization] + SET [MaxStorageGbIncreased] = [MaxStorageGb] + 4 + WHERE [MaxStorageGb] IS NOT NULL + AND [MaxStorageGbIncreased] IS NULL; -- Only update rows not yet processed + + SET @RowsAffected = @@ROWCOUNT; + SET @TotalUpdated = @TotalUpdated + @RowsAffected; + + PRINT 'Organizations updated: ' + CAST(@TotalUpdated AS VARCHAR(10)); + + WAITFOR DELAY '00:00:00.100'; -- 100ms delay to reduce contention +END + +PRINT 'Organization table update complete. Total rows updated: ' + CAST(@TotalUpdated AS VARCHAR(10)); GO