Pergunta

Eu escrevi a minha própria PageStatePersister classe, com base no SessionPageStatePersister que grava os últimos 10 Viewstates para uma sessão de um disco compartilhado.Eu acho que isso vai de escala melhor do que manter o Viewstate na sessão, desde que todos os servidores web têm acesso a ele, eles não têm de lidar com a expiração, e usar menos memória.

Quando um usuário fecha o navegador, ele notifica o servidor e o servidor exclui os arquivos que não foram acessados por duas horas.Até aí tudo bem, mas eu estou querendo saber se ele vai ser mais rápido e mais eficiente para armazenar Viewstate em um banco de dados SQL server em vez disso.

  1. Cada ViewState o arquivo é 30k, em média.
  2. Atualmente, ele só lê um campo oculto para obter um Viewstate chave de acesso e o arquivo diretamente e anular a serialização.Não há necessidade de classificar ou de pesquisa.
  3. Serão cerca de 2000 usuários simultâneos a cada hora e verão passado recente, de 20 de Viewstate sessões será de cerca de 20k temp exibir arquivos por hora.
  4. Ele deve, periodicamente, iterar através de arquivos e excluir o arquivo mais antigo.

Então, o que é melhor neste caso:um flatfile do sistema ou de um banco de dados?

Foi útil?

Solução

Seria escala muito melhor para armazenar o estado de visualização no SQL Server.Se pretende, eventualmente, aumento de 10 últimos 50 mais recentes, por exemplo, seria relativamente trivial aumento na base de dados de carga.E/S de disco geralmente deve ser evitado sempre que possível, mais do que DB I/O.Operações de limpeza também funcionaria muito melhor, como a busca em um terreno baldio de abandono arquivos no disco é, provavelmente, muito mais pesado do que WHERE DateInserted > 20 minutes ago.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top