Operações de leitura/gravação de divisão de balanceamento de carga do SQL Server

Operações de leitura/gravação de divisão de balanceamento de carga do SQL Server

Olá, temos 3 nós do SQL Server 2014 Standard Edition, um deles como primário e outro como Replicação do Primário usando banco de dados de Replicação Transacional

Queremos usar os outros 2 nós para ler operações e reduzir a carga do nó primário.

Como poderíamos configurar em um balanceador de carga como o HA Proxy para dividir a operação de leitura das gravações e enviar para os nós 2 e 3 apenas as operações de leitura? ou devemos usar outro balanceador de carga que permita isso?

Responder1

Como poderíamos configurar em um balanceador de carga como o HA Proxy para dividir a operação de leitura das gravações e enviar para os nós 2 e 3 apenas as operações de leitura?

De jeito nenhum. Não há como um balanceador de carga saber o que acontece em uma conexão do SQL Server e entender logicamente o que pode e o que não pode ser considerado somente leitura ou somente gravação ou misto (que é uma gravação), especialmente não como a carga O balanceador não pode esperar no tempo. Posso me conectar ao SQL Server, iniciar uma transação, fazer uma operação de leitura E ENTÃO INICIAR UMA ESCRITA - como você saberia que pretendo escrever ao decidir sobre o balanceamento de carga? Não há maneira lógica de lidar com isso sem olhar para frente no tempo.

A maneira como isso normalmente é feito é ter conexões diferentes no nível do aplicativo e fazer com que o aplicativo decida qual delas usar. Afinal, seria de se supor que os programadores são inteligentes o suficiente para saber se pretendem uma conexão apenas para leitura ou se realmente escrevem na mesma conexão/transação em um estágio posterior.

informação relacionada