Questions:
1. How many rows are in the Staging table "Server_Metric_Staging"?
2. How many rows did you just Stage from eHealth? (use your PID or TransactionID) to count rows in Server_Metric_Staging.
3. What does your most recent PURGE report look like?
4. Does Purge report show number of ROWS deleted from Server_Metric_Staging? If yes, then it is not truncating.
5. Did you know that if there are failed Staging jobs that your purge job cannot truncate staging tables, but must always perform row deletes?
Staging tables will get very large and very fragmented if the purge job cannot "truncate" the staging tables.
Delete rows from a staging table are very slow ... often can require hours to complete.
Truncate staging table is completed in a few seconds.
A freshly truncated staging table will allow the migrations to run more quickly.
Another slowdown can happen because of null values in the staging table.
If there are lots of rows loaded with NULL values in the Staging table, then pre-Migration DM will delete all the NULL rows from each staging table. This is incredibly slow (hours) on a fragmented table.
I hope some of this helps to solve your problem,
David D.