In addition to the other comments you may want to look at the InactiveDestroy DBI attribute. You can set it so that a handle created in the parent doesn't get destroyed when the child exits.
Thanks for all of the advise. I tried setting the InactiveDestroy attribute for both the parent and child db handles, and the problem seems to have cleared up. I will definitely look into the Parallel::ForkManage module as well. Just briefly looking at it on cpan, it looks like a pretty cool module.