My LND channel.db is ~8GB, which takes 6 minutes to compact. I assume you route a lot more and have 5x the channels, but 3 hours still seems excessive?
Discussion
It's probably not a bad idea to overestimate down time. Under promise, over deliver
btcd/lnd devs database stuff is some of the worst ever written in #golang
you should see how long IBD takes ... and i tried to get a PR merged that lets you configure runtime parameters that more than double the performance... another brick in the wall for me with trying to work with these assclowns