Eu tenho dois servidores.
Um lixo recolhido, colado com fita adesiva e chiclete. É uma mistura de peças Dell R620 e Gen 8 HPE com 40 núcleos/1,5 TB de RAM. Executando o Ubuntu 22.04 e o SQL Server 2022 Dev Version. Raid 10 SSDs de 3,7 TB. O MDOP está definido como 16.
O outro é uma VM hospedada em um cluster de cabeça tripla Xenon Gold com SSD Nas em todos os 9 metros. Servidor 2019, padrão sql server 2022. 128 gigas/16 núcleos alocados. O MDOP também está definido como 16. O banco de dados foi um backup/restauração do servidor de teste.
A tabela principal abriga dados transmitidos ao vivo com uma média de 100 a 200 mil novos registros por dia, atualmente se aproximando de 30 bilhões de linhas com 4 colunas. Ele é configurado com um índice de armazenamento de coluna e os dados são classificados e preenchidos por meio de um campo de carimbo de data/hora.
Fazer uma consulta simples leva de segundos a minutos no servidor de teste, mas de minutos a quase uma hora no servidor que será de produção em breve.
O servidor de teste mostra todos os 16 núcleos sendo utilizados. No servidor de produção utilizará apenas dois núcleos. Se eu executar várias instâncias da mesma consulta, o servidor de produção consumirá um conjunto adicional de dois núcleos por consulta executada. Isso pode ser feito até que a CPU esteja com 100% de utilização.
A consulta que estou testando é select top 100 * from mlinkdatacsunixtime order by serialtime desc
No servidor de teste, ela é executada em 1 minuto a 1,5 min. Na produção são 11 minutos.
Eu verifiquei: soquete VM vs contagem de núcleos. 2 soquetes/8 núcleos cada. O servidor SQL verificado mostra todos os 16 como online e visíveis. Combinei todas as opções entre as duas instâncias sql. Configurações duplicadas do servidor e do banco de dados MDOP. Consulta executada diversas vezes para tentar carregar a tabela na memória. A tabela tem cerca de 50 GB, o servidor Prod mostra apenas 63 GB dos 128 utilizados após testar várias consultas. O servidor de teste gira em torno de 250 GB, mas tem muito mais recursos para outros projetos.
Realmente espero que alguém possa me dizer que perdi algo estúpido.
Meu próximo teste é reconstruir o servidor com a versão sql Dev para ver se é algo com padrão sql. Minha última gota é tentar convencer o administrador e o gerenciamento do sistema a me deixar executar um servidor Linux em produção.
Um palpite seria que a Microsoft odeia você por usar a Standard Edition e suas consultas em modo lote estão limitadas a um DOP de 2.
Quão útil é a indexação de armazenamento de colunas no SQL Server Standard Edition?