sql >> Database teknologi >  >> RDS >> Mysql

Hvordan bestemmer MySQL Cluster, hvilke dataknuder der skal søges efter en SELECT-forespørgsel?

Ouch.. det er ikke sådan MySQL Cluster fungerer.

Som standard partitionerer MySQL Cluster data på den PRIMÆR NØGLE. Det er dog muligt at bruge brugerdefineret partitionering og partition på en del af PRIMARY KEY. Dette er yderst nyttigt til at gruppere relaterede data sammen og for at sikre lokalitet af data inden for én partition. Da relaterede data derefter opbevares i én partition, er det så muligt at skalere fra 2 til 48 dataknuder uden at ofre ydeevnen - det vil være konstant. Se flere detaljer på http://dev.mysql.com/doc/refman/5.5/en/partitioning-key.html

Som standard vil API'et beregne en hash (ved hjælp af LH3*-algoritmen, som bruger md5) på PRIMÆR NØGLEN (eller den anvendte definerede del af primærnøglen) for at bestemme, hvilken partition der skal sendes en forespørgsel. Den beregnede hash er 128 bit, og 64 bit bestemmer partitionen og 64 bit bestemmer placeringen i et hash-indeks på partitionen. Som bruger har du ikke indsigten præcis, hvilken node der har dataene (eller hvem der skal gemme dataene), men praktisk talt betyder det ikke rigtig noget.

Med hensyn til det oprindelige spørgsmål om distribution af én MySQL-klynge på tværs af 2 skyer og partitionering af data. Dataknudepunkter har brug for pålidelig adgang med lav latens til hinanden, så du ønsker ikke at sprede noderne ud, medmindre de er under 50-100 miles fra hinanden.



  1. Sådan importeres en database ved hjælp af kommandolinjen

  2. få adgang til et kolonnealias i where-sætningen i postgresql

  3. SSRS - Group_Concat ækvivalent ved hjælp af et udtryk?

  4. Laravel-migreringer - Problemer under oprettelse af tidsstempler