Se todos os clientes compartilham o mesmo banco de dados, e todos os sites usam o mesmo modelo, isso é mais como um multi-inquilino cms e, como tal, ter um único banco de dados faz sentido aqui.
Eu não consideraria o problema como uma atualização de clientes afetando todas as outras, mas sim um nível mais baixo de atualizações e consultas simplesmente lentas em geral. Supondo que o hardware e a carga não mudem, 150 bancos de dados provavelmente funcionarão de maneira semelhante à solução de banco de dados único (possivelmente mais lenta sob certas circunstâncias)
Eu assumo que sua tabela principal é a tabela "listagens" que tem aproximadamente 150 * 1000 linhas vivas (presumivelmente + registros históricos).
Esta não é uma quantidade enorme de dados por um longo tiro, e uma máquina razoavelmente determinada não deve ter nenhum problema.
Eu estaria procurando garantir que registros históricos sejam movidos para suas próprias tabelas.
Na consulta de leitura, eu adicionaria 'read uncommitted snapshot'
Nas atualizações, há algumas correções possíveis para isso
1. Use uma mesclagem em vez de várias instruções de atualização
2. Use um cursor para evitar a restrição de bloqueio
3. Adicione novos registros para as listagens atualizadas e apenas atualize um sinalizador de bit 'atual' nos antigos
Considerando que isso foi há dois anos, qual foi a solução final?