Estou investigando os benefícios da atualização do MS SQL 2012 para 2014. Um dos grandes pontos de venda do SQL 2014 são as tabelas com otimização de memória, que aparentemente tornam as consultas super-rápidas.
Descobri que existem algumas limitações nas tabelas com otimização de memória, como:
(max)
Campos sem tamanho- ~ 1 KB máximo por linha
- Sem
timestamp
campos - Nenhuma coluna computada
- Sem
UNIQUE
restrições
Tudo isso se qualifica como incômodo, mas se eu realmente quiser contorná-los para obter os benefícios de desempenho, posso fazer um plano.
O verdadeiro kicker é o fato de que você não pode executar uma ALTER TABLE
declaração e precisa passar por esse rigmarole toda vez que adicionar um campo à INCLUDE
lista de um índice. Além disso, parece que você precisa desligar os usuários do sistema para fazer alterações no esquema das tabelas MO no banco de dados ativo.
Eu acho isso totalmente ultrajante, na medida em que eu realmente não posso acreditar que a Microsoft possa ter investido tanto capital de desenvolvimento nesse recurso, e a manutenção de tão impraticável. Isso me leva à conclusão de que devo ter chegado ao fim errado do bastão; Devo ter entendido mal algo sobre tabelas com otimização de memória que me levou a acreditar que é muito mais difícil mantê-las do que realmente é.
Então, o que eu entendi errado? Você já usou tabelas MO? Existe algum tipo de mudança ou processo secreto que os torna práticos de usar e manter?
fonte
Você não pode clicar com o botão direito do mouse em uma tabela com otimização de memória, para criar um designer e adicionar novas colunas como desejar, no Sql Server Management Studio. Você também não pode clicar no nome da tabela como forma de renomear a tabela. (SQL 2014 na minha redação deste.)
Em vez disso, você pode clicar com o botão direito do mouse na tabela e criar um script de comando para uma nova janela de consulta. Este comando de criação pode ser alterado adicionando novas colunas.
Portanto, para modificar a tabela, você pode armazenar os dados em uma nova tabela, tabela temporária ou variável de tabela. Em seguida, você pode soltar e recriar a tabela com o novo esquema e, finalmente, copiar novamente os dados reais . Este jogo de 3 contêineres é apenas um pouco menos conveniente para a maioria dos casos de uso.
Porém, você não teria motivos para se preocupar com as tabelas com otimização de memória se não houver um problema de desempenho que você esteja tentando resolver.
Em seguida, você terá que ponderar se as limitações e soluções alternativas valem a pena para o seu caso de uso. Você tem algum problema de desempenho? Você já tentou de tudo? Isso melhorará seu desempenho em 10 a 100x? Usá-lo ou não usá-lo provavelmente acabará sendo um pouco sem cérebro de qualquer maneira.
fonte
você pode usar o OLTP na memória em servidores operacionais sem nenhum problema grave. usamos essa tecnologia em uma empresa de bancos e pagamentos,
Em geral, podemos usar tabelas com otimização de memória quando a carga de trabalho é muito alta. usando o OLTP na memória, você pode obter um melhor desempenho para 30X! A Microsoft corrige a maioria dessas limitações no SQL Server 2016 e 2017. As tabelas com otimização de memória têm uma arquitetura completamente diferente em comparação com as tabelas baseadas em disco.
tabelas com otimização de memória são dois tipos. tabelas duráveis e tabelas não duráveis. Tabelas duráveis e não duráveis mantêm os dados da tabela residentes na memória. Mais tabelas duráveis persistem dados em Discos para recuperação de dados e esquema. Na maior parte do cenário operacional, devemos usar tabelas duráveis, porque os dados perdidos são críticos aqui. em algum cenário, por exemplo, carregamento de ETL e cache, podemos usar tabelas não duráveis.
você pode usar estes e-books e aprender como usar esta tecnologia:
Kalen Delaney: https://www.red-gate.com/library/sql-server-internals-in-memory-oltp
Dmitri Korotkevitch: https://www.apress.com/gp/book/9781484227718
fonte