Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como o MySQL Cluster determina quais nós de dados devem ser pesquisados ​​por uma consulta SELECT?


Ai.. não é assim que o MySQL Cluster funciona.

Por padrão, o MySQL Cluster particiona os dados na PRIMARY KEY. No entanto, é possível usar particionamento e partição definidos pelo usuário em parte da PRIMARY KEY. Isso é extremamente útil para agrupar dados relacionados e garantir a localidade dos dados em uma partição. Como os dados relacionados são mantidos em uma partição, é possível dimensionar de 2 a 48 nós de dados sem sacrificar o desempenho - será constante. Veja mais detalhes em http://dev.mysql.com/doc/refman/5.5/en/partitioning-key.html

Por padrão, a API calculará um hash (usando o algoritmo LH3*, que usa md5) na CHAVE PRIMÁRIA (ou na parte definida usada da chave primária) para determinar qual partição enviar uma consulta. O hash calculado é de 128 bits, e 64 bits determinam a partição e 64 bits determinam a localização em um índice de hash na partição. Como usuário, você não sabe exatamente qual nó possui os dados (ou quem armazenará os dados), mas na prática isso não importa.

Em relação à pergunta original sobre a distribuição de um cluster MySQL em 2 nuvens e particionamento de dados. Os nós de dados precisam de acesso confiável de baixa latência uns aos outros, portanto, você não deseja espalhar os nós, a menos que estejam a menos de 50-100 milhas um do outro.