Mysql
 sql >> Base de données >  >> RDS >> Mysql

Partitionnement MySQL :pourquoi il ne prend pas la partition appropriée

Le schéma de partitionnement HASH signifie que MySQL traduit votre valeur numérique arbitraire en sa propre valeur de hachage. Vous avez défini 366 partitions. Selon vous, que se passerait-il si votre requête était :

EXPLAIN PARTITIONS SELECT * FROM temp where PartitionID =400 ?

Votre PartitionID ne peut pas signifier dans ce cas l'ID/le nom de la vraie partition, puisqu'il n'y a pas de partition 400.

Maintenant, juste entre nous deux, vous pourriez être intéressé d'apprendre que la fonction HASHing de MySQL est un module simple. Ainsi, 0 correspond à la partition p0, 1 correspond à la partition p1 et 400 correspond à la partition 34 (==400-366).

D'une manière générale, vous ne devriez pas être trop intéressé par l'identité de la partition particulière utilisée. Vous devriez être plus intéressé de savoir qu'il y a un bon équilibre des partitions.

Si l'équilibre ne vous semble pas correct, vous pouvez envisager d'utiliser le schéma de partitionnement KEY, où l'algorithme de hachage est basé sur une fonction de somme de contrôle, ce qui signifie que les valeurs sont réparties de manière plus "aléatoire" par rapport au schéma de partitionnement du module HASH.