SQL Server Express para bancos de dados de produção?

14

Estamos prestes a lançar um aplicativo transacional web / interno duplo, em que cada cliente possui seu próprio banco de dados. Cada banco de dados é muito pequeno - com menos de 50 MB cada, então estávamos pensando se faria sentido usar o SQL Express 2008 em vez do SQL Server completo.

Isso parece ter as vantagens de distribuir E / S de disco entre servidores e economizar $$$ maciços (uma vez que pequenas unidades de 15 K e servidores de núcleo duplo usados ​​são baratos). Se em algum momento precisarmos de muitos servidores, podemos atualizar para o SQL Server ... mas com dezenas de usuários internos isso parece muito caro no momento (principalmente porque precisamos de uma caixa de failover).

1 GB de memória e uso de 4 núcleos em um único processador não parece muito restritivo, considerando nossos pequenos tamanhos de banco de dados. Nunca teremos mais de 200 usuários simultâneos e a maioria das operações será mais transacional (o que parece favorecer muitos discos de alta velocidade em vez de RAM / CPU pesada, certo?)

Estou perdendo alguma vantagem do SQL Server Standard que possa justificar inicialmente o investimento extra de US $ 5 a 20 mil?

Bip Bip
fonte

Respostas:

17

As outras edições do SQL server oferecem coisas como o SQL Agent, para que você possa agendar a manutenção do banco de dados e outros trabalhos.

Contanto que seu banco de dados possa caber dentro dos limites da edição Express, você ficará bem.

O servidor SQL gosta de muita RAM. Quanto mais melhor. Como o SQL Server não pode carregar dados no cache, isso sobrecarregará os discos. Você deve consultar a edição Web Edition ou Workstation do SQL Server. Essas edições têm limites mais altos que a edição Express, mas custam menos que a Standard Edition.

Se você começar com a edição Express, poderá sempre atualizar para a Standard Edition depois de comprar a licença.

mrdenny
fonte
+1 não pode adicionar qualquer outra coisa para que a resposta
Nick Kavadias
Não acho que a licença de grupo de trabalho e edição da web possa ser usada para aplicativos de negócios hospedados externos.
Akash Kava
1
As licenças de CPU estão disponíveis para todas as edições (exceto o Express, que não precisa de uma licença de CPU), o que significa que você pode usá-lo para um site público. Aqui está o link para a licença da CPU do grupo de trabalho bit.ly/KDLDR . Não consegui encontrar a Web Edition facilmente, mas qualquer VAR deve ser capaz de fornecê-la sem muito olhar ao redor.
mrdenny
Sugiro também começar com algo acima do Express, e mudar do Express para qualquer outra edição pode ser difícil às vezes.
DanBig
3
O SQL Express é exatamente o mesmo mecanismo que as outras edições, apenas com limites de tamanho. Mover do Express para outra edição é simplesmente uma questão de desanexar o banco de dados da edição Express e anexá-lo a outra instância que esteja executando outra edição.
mrdenny
15

Alguns problemas de produção e soluções alternativas que tive com a edição Express:

Backups agendados

SSIS

  • O SQL Express 2008 possui o Assistente para Importação / Exportação de Dados, mas o tempo de execução dtsexec da edição Express não executa todos os pacotes SSIS
  • Solução alternativa: você pode desenvolver pacotes SSIS com a edição Developer. Se você tiver uma edição Standard na rede, poderá agendar e executar pacotes SSIS a partir dela. Você pode até executar pacotes SSIS a partir da edição para desenvolvedores, desde que não seja contra a licença
  • Consulte também:
    Posso executar pacotes SSIS com o SQL Server 2008 Express / Web ou SSIS do grupo de trabalho
    com o Sql Server 2005 express

Criação de perfil

  • Nenhum criador de perfil SQL
  • Solução alternativa: tente SqlProfiler For Express Edition
  • Advertência: Eu não achei sempre útil para solucionar emergências de produção, como quando o sqlexpress ocupa 100% da capacidade do processador do servidor. Não consegui que o criador de perfil produzisse nenhum rastro em um desses casos.
  • Consulte também: Qual criador de perfil usar com o sql express?
mika
fonte
2
  1. Se você ler a Licença do SQL Server, não precisará comprar uma licença adicional para o servidor passivo, se ela for usada apenas para failover e ela não atender a consultas até o primeiro servidor falhar.

  2. Usamos o SQL Server Express por muito tempo, e é bom e muito melhor que o MSDE anterior, temos mais de 200 conexões simultâneas, mas só temos um banco de dados de tamanho 2GB e tudo é tranquilo. Nunca tivemos problemas, desde que evitássemos junções caras e fizemos uma boa indexação. Agora estamos usando o SQL Standard, mas até que o tamanho do seu banco de dados seja superior a 4 GB e o número de usuários seja inferior a 200-500, você certamente poderá viver com o SQL Express.

  3. O SQL Server Express usa pouco menos espaço ocupado na memória ~ 200 MB, onde mais a edição Standard usa ~ 1.5 GB, provavelmente porque a edição padrão fará muito cache. Suas consultas serão mais lentas no Express em alguns milissegundos em comparação à edição padrão. Infelizmente, a edição Express não usa cpus de múltiplos núcleos (recurso limitado), portanto, não será de grande ajuda se você tem 2 ou 4 núcleos.

Akash Kava
fonte
Eu pensei que o SSE 2008 usava vários núcleos (até 4)?
Beep beep
O @LuckyLindy Standard utilizará até 4 soquetes, com muitos núcleos por soquete.
mrdenny
"mas até o tamanho do banco de dados ser superior a 4 GB" 4 GB é a restrição por instância. Não me lembro de que haja restrição no número de instâncias usadas
Gennady Vanin Геннадий Ванин
2

LuckyLindy - Eu encorajo você a parar por um segundo e verificar se você não precisa do SQL Agent. Você escreveu:

Estamos prestes a lançar um aplicativo transacional web / interno duplo, em que cada cliente possui seu próprio banco de dados. Cada banco de dados é muito pequeno - com menos de 50 MB cada, então estávamos pensando se faria sentido usar o SQL Express 2008 em vez do SQL Server completo.

Qual é o seu plano para backups? Você não precisa usar o SQL Agent, mas com certeza facilita a vida de um DBA. Você pode escrever scripts T-SQL / SMO / PowerShell / qualquer que faça seus backups e depois executar via sqlcmd ou PowerShell usando uma tarefa agendada.

Qual é o seu plano para manutenção de banco de dados? Com o tempo, esses bancos de dados precisarão ser desfragmentados e verificados quanto à consistência. A Standard Edition possui todos os tipos de brindes para facilitar isso, enquanto que no Express você precisa trabalhar (novamente com as tarefas de script e agendadas).

Como você será notificado sobre problemas no servidor? O agente ajuda aqui com alertas para notificá-lo quando um registro estiver ficando cheio, um disco estiver sendo preenchido etc.


Essas são tarefas críticas do tipo DBA do SQL Server. Uma coisa é executar o Express para um aplicativo interno, mas quando você começa a nos dizer que os hospeda para clientes, fico preocupado :)


A parte 2 disso está perguntando a quantos clientes você planeja dar suporte a isso - tanto no lançamento quanto após um ano? Se você disser "100 clientes", 100 bancos de dados de 50 MB não serão suficientes no Express - você simplesmente não tem memória suficiente. Heck - dependendo de quanto delta você tem, você pode atingir no máximo 15 DBs, eu não sei.

Nunca teremos mais de 200 usuários simultâneos e a maioria das operações será mais transacional (o que parece favorecer muitos discos de alta velocidade em vez de RAM / CPU pesada, certo?)

Operações transacionais, como INSERTs, ainda são gravadas na memória; portanto, não espere que você precise de menos suporte de memória. De fato, dependendo de quantos INSERTs você faz, você pode ter necessidades de memória maiores do que a maioria com esse número de usuários. Se você estiver carregando muitos dados que as pessoas realmente não usarão, eles ainda ocuparão memória. Você pode ter problemas de disputa entre "dados que os usuários consultam com frequência" e "dados que os usuários estão carregando e que ninguém consultará por um tempo". O SQL nos protege preservando os dados que as pessoas estão consultando com mais frequência na memória por mais tempo, mas você ainda terá contenção.

Neste ponto, eu estou divagando lol. E 200 usuários simultâneos também não gostam de mim pelo Express. Digamos que 64k seja um requisito médio de memória de conexão, quantas conexões seus aplicativos farão? Você usará o pool de conexões?

No geral, meu pressentimento ao ler sua descrição diz: "No - Express Edition simplesmente não é poderoso o suficiente". E eu odeio a Workgroup Edition - acho que é um mau negócio -, então o Standard parece certo para mim.

Scott Whigham
fonte
2
Scott - Ótima resposta. Para o seu ponto ... Na verdade, o SQL Server Express não tem limite de tamanho de armazenamento nos bancos de dados, você simplesmente não pode ter um único banco de dados com mais de 4 GB de dados. Como teste, criei 10.000 bancos de dados de 100 MB (1 TB) em um único servidor, e o SQL Server Express funcionou bem. Além disso, a memória relacionada a cada conexão não é contada no total de 1 GB. Concordo que gerenciar todos esses bancos de dados pode ser um pouco trabalhoso ... mas, como na verdade teremos milhares de bancos de dados, provavelmente precisaríamos de scripts de qualquer maneira (não há como eu querer tocar manualmente em um banco de dados, a menos que ele se torne corrompido).
Beep beep
+1, eu concordo que foi a resposta do gr8, mas também a votei com um voto positivo
Gennady Vanin Геннадий Ванин
1

Você já pensou em usar um dos DBMS gratuitos (MySQL, PostreSQL ...)? Isso aliviaria suas preocupações com o licenciamento?

Se isso não for uma opção, o SQL Server Express parece ser uma boa solução.

sleske
fonte
2
Na verdade, executamos testes de desempenho em todos os principais bancos de dados do ano passado - MySQL, PostgreSQL, Firebird, DB2, Oracle, SQL Server, SQL Server Express e SQL Desktop. Descobrimos que o DB2, Oracle e SQL Server (e Express, mas não o Desktop) eliminaram o MySQL e o PostgreSQL no Windows para nossas operações transacionais - por um fator de 2 1/2 do desempenho significa o dobro do número de servidores. Quando hospedado no Linux, o MySQL e o PostgreSQL se saíram um pouco melhor, mas ainda não estão no mesmo nível.
Beep beep
1

Certamente pode ser usado para aplicações de produção significativas. Nós o usamos em mais de 1500 clínicas de assistência médica, todas com instâncias separadas do SQL Server Express instaladas para processar milhões de transações por dia. Você pode facilmente contornar a desvantagem do SQL Server Agent usando um dos seguintes:

  1. Produto de terceiros, como SQLAutomate
  2. Agendador de tarefas do Windows
  3. Um Standard ou Enterprise Edition do SQL Server com o recurso de servidor mestre instalado 1 e 2 tem um custo muito baixo ou gratuito. 3 é caro, a menos que você já o tenha disponível em seu ambiente.

Veja a excelente apresentação de Michael Otey (google it) em "Usando o SQL Server Express na produção".

pacificwinter
fonte
Foi um 7 anos de idade pós na verdade :)
BaronSamedi1958