Executando muitos bancos de dados em uma instância

Executando muitos bancos de dados em uma instância

É melhor ter uma única instância com vários bancos de dados ou distribuir os bancos de dados por algumas instâncias?

Responder1

Eu sugeriria uma instância em vez de várias instâncias na mesma caixa, a menos que você esteja tentando resolver um problema muito especializado. Facilita a administração do servidor e usa menos recursos para sobrecarga.

Uma regra muito boa para administração de sistemas é a mesma regra que funciona bem para programação, ou que funcionava quando eu ainda fazia isso: tornar as coisas tão complexas quanto necessárias para resolver o problema adequadamente, nem mais nem menos . Várias instâncias geralmente tornarão as coisas mais complexas do que uma instância com vários bancos de dados.

Se você precisar separar coisas para protegê-las, sugiro instalações de vários servidores (você pode virtualizar em uma caixa física aqui), porque não tenho certeza se consideraria diferentes instâncias em uma caixa como um limite de segurança.

Responder2

Assumindo SQL Server, porque é isso que eu sei...

Eu recomendo mantê-los em uma única instância.

Isso permite maior desempenho no acesso a dados entre bancos de dados (ou seja, no banco de dados A você precisa recuperar algo do banco de dados B). Se forem instâncias separadas, a comunicação precisaria ser feita através de servidores vinculados, usando pipes nomeados ou algo assim. Dentro de uma única instância, você pode acessar todos os bancos de dados diretamente (sujeito a restrições de segurança).

Colocá-los todos juntos oferece alguma exposição potencial a um único ponto de falha, mas acho que o próprio SQL Server é bastante robusto. A máquina inteira pode falhar (destruindo todas as instâncias), mas não vi falhas do tipo que tornariam preferível um arranjo de instância única dessa maneira.

Como você pode gerenciar o armazenamento até o nível do arquivo, a separação em várias instâncias não ajuda em nada.

Você pode pensar nas implicações de segurança, se de alguma forma for atingido por um ataque de injeção de SQL (para o qual não há desculpa, já que é muito fácil de prevenir!). Mas se você tiver servidores vinculados entre as instâncias, não terá mais proteção.

Responder3

Independentemente do servidor SQL de que estamos falando, como princípio geral eu executaria todos os bancos de dados em uma instância sempre que possível, por todos os motivos já mencionados por outros. Além disso, se você chegar ao ponto em que uma instância não está lidando muito bem com a carga, é hora de adicionar outra máquina, não outra instância. As únicas exceções que consigo pensar são os aplicativos que só serão executados com sua própria instância. É claro que é melhor evitar esse tipo de software ou colocá-lo em uma máquina diferente, se possível.

Responder4

Do ponto de vista da memória (novamente, assumindo o MS SQL Server), vários bancos de dados em uma única instância geralmente resultarão em um uso mais eficiente.

Executamos várias instâncias quando solicitado por um aplicativo pronto para uso. Para as coisas que desenvolvemos, colocamos tudo em uma única instância.

informação relacionada