
Maintenant, analysons ces commandes une par une :
show variable transaction_type
Recherchez le type de transaction actuel.
Commande d’entrée
mysql> show variable transaction_type;
Sortir
+------------------+
| TRANSACTION_TYPE |
+------------------+
| LOCAL |
+------------------+
set variable transaction_type
Modifiez le type de transaction actuel (LOCAL, XA ou BASE ; insensible à la casse).
Commande d’entrée
mysql> set variable transaction_type=XA;
Sortir
une. En cas de succès, affichez « Requête OK, 0 lignes affectées »;
b. Exécuter show variable transaction_type
à nouveau et le type est XA maintenant.
show variable cached_connection
Interrogez le nombre de connexions physiques mises en cache par la base de données.
Commande d’entrée
mysql> show variable cached_connections;
Sortir
+--------------------+
| CACHED_CONNECTIONS |
+--------------------+
| 0 |
+--------------------+
Prévisualisez le SQL réel. Ici, nous donnons un exemple de scénario de division en lecture-écriture. ShardingSphere prend en charge la prévisualisation de toutes les commandes SQL.
Commande d’entrée
mysql> preview select * from t_order;
Sortir
+-----------------+----------------------------------------------+
| datasource_name | sql |
+-----------------+----------------------------------------------+
| read_ds_0 | select * from t_order ORDER BY order_id ASC |
| read_ds_1 | select * from t_order ORDER BY order_id ASC |
+-----------------+----------------------------------------------+
Remarque : Il s’agit d’un exemple d’indice dans un scénario de fractionnement en lecture-écriture. Nous configurons deux règles : le fractionnement en lecture-écriture et le sharding. La config est la suivante :
rules:
- !READWRITE_SPLITTING
dataSources:
ds_0:
writeDataSourceName: write_ds_0
readDataSourceNames:
- read_ds_0
ds_1:
writeDataSourceName: write_ds_1
readDataSourceNames:
- read_ds_1
- !SHARDING
tables:
t_order:
actualDataNodes: ds_${0..1}.t_order
defaultDatabaseStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: database_inline
defaultTableStrategy:
none:
shardingAlgorithms:
database_inline:
type: INLINE
props:
algorithm-expression: ds_${user_id % 2}
show readwrite_splitting hint status
Pour la connexion actuelle uniquement. État de l’indicateur de requête de readwrite_splitting.
Commande d’entrée
mysql> show readwrite_splitting hint status;
Sortir
+--------+
| source |
+--------+
| auto |
+--------+
set readwrite_splitting hint source
Pour la connexion actuelle uniquement. Définir la stratégie de conseil de fractionnement en lecture-écriture (AUTO ou WRITE). Les types de sources pris en charge incluent:AUTO et WRITE(insensibles à la casse). — AUTO: conseil de fractionnement en lecture-écriture automatisé — WRITE: conseil obligatoire dans la bibliothèque principale
Commande d’entrée
mysql> set readwrite_splitting hint source=write;
Sortir
une. En cas de succès,afficher « Requête OK, 0 lignes affectées »;
b. Réexécuter show readwrite_splitting hint status
; montrer que l’ource est changé en Write;
c. Exécuter preview select * from t_order
et voir que le SQL interrogé ira à la base de données principale.
mysql> preview select * from t_order;
+-----------------+----------------------------------------------+
| datasource_name | sql |
+-----------------+----------------------------------------------+
| write_ds_0 | select * from t_order ORDER BY order_id ASC |
| write_ds_1 | select * from t_order ORDER BY order_id ASC |
+-----------------+----------------------------------------------+
clear readwrite_splitting hint
Pour la connexion actuelle uniquement. Effacez le paramètre d’indice de fractionnement en lecture-écriture.
Commande d’entrée
mysql> clear readwrite_splitting hint;
Sortir
une. En cas de succès, affichez « Requête OK, 0 lignes affectées » ;
b. Récupérer l’indice readwrite_splitting par défaut ; utilisation show readwrite_splitting hint status
commande pour voir le résultat.
Remarque:Voici un autre exemple de partitionnement pour Hint. L’algorithme d’indice est utilisé à la fois pour le partitionnement de base de données et le partitionnement de table. Les règles de configuration de partitionnement sont indiquées ci-dessous :
rules:
- !SHARDING
tables:
t_order_item:
actualDataNodes: ds_${0..1}.t_order_item_${0..1}
databaseStrategy:
hint:
shardingAlgorithmName: database_inline
tableStrategy:
hint:
shardingAlgorithmName: table_inline
shardingAlgorithms:
database_inline:
type: HINT_INLINE
props:
algorithm-expression: ds_${Integer.valueOf(value) % 2}
table_inline:
type: HINT_INLINE
props:
algorithm-expression: t_order_item_${Integer.valueOf(value) % 2}
show sharding hint status
Pour la connexion actuelle uniquement. État de l’indice de partitionnement de la requête.
Commande d’entrée
mysql> show sharding hint status;
Sortir
La sortie d’état initial est :
Vérifiez l’astuce et saisissez la commande :
preview select * from t_order_item;
Sortie Aucune valeur d’indice maintenant. La requête dépend entièrement de l’indice.
-set sharding hint database_value;
Pour la connexion actuelle uniquement. Définissez l’indice comme pour le partitionnement de base de données uniquement et ajoutez la valeur de base de données=1.
Commande d’entrée
mysql> set sharding hint database_value = 1;
Sortir
une. En cas de succès, affichez « Requête OK, 0 lignes affectées »;
b. Exécuter show sharding hint status
; spectacle t_order_item
‘s database_sharding_values
comme 1. Mettre à jour sharding_type value
comme databases_only
.
c. Exécuter preview select * from t_order_item
; SQL tout fait allusion à ds_1:
*Remarque : selon les règles de partitionnement de la configuration YAML, lorsque la valeur de la base de données est un nombre impair, faites allusion à ds1 ; lorsque databasevalue est un nombre pair, faites allusion à ds0.
-add sharding hint database_value;
Pour la connexion actuelle uniquement. Ajouter
t_order_item
la valeur de partitionnement de la base de données.
Commande d’entrée
mysql> add sharding hint database_value t_order_item = 5;
Sortir
une. En cas de succès,afficher « Requête OK, 0 lignes affectées »;
b. Exécuter show sharding hint status
; Spectacle t_order_item
‘s database_sharding_values
comme 5 ; mettre à jour sharding_type value
comme databases_tables
??
c. Exécuter preview select * from t_order_item
; Les commandes SQL sont toutes suggérées à ds_1:
Entrez à nouveau la commande add pour ajouter une valeur paire.
mysql> add sharding hint database_value t_order_item = 10;
Sortir:
une. En cas de succès,afficher « Requête OK, 0 lignes affectées »;
b. Exécuter show sharding hint status
; spectacle t_order_item
‘s database_sharding_values
= ‘5,10’:
c. Exécuter preview select * from t_order_item
; L’indice SQL contient ds0 et ds1:( Parce que les valeurs d’indice incluent à la fois un nombre pair et impair, il contient donc toutes les sources de données cibles)
-add sharding hint table_value;
Pour la connexion actuelle uniquement. Ajouter une valeur de partitionnement de base de données pour
t_order_item
.
Commande d’entrée
mysql> add sharding hint table_value t_order_item = 0;
Sortir
une. En cas de succès,afficher « Requête OK, 0 lignes affectées »;
b. Exécuter show sharding hint status
; spectacle t_order_item
‘s database_sharding_values
comme ‘5,10’ tandis que table_sharding_values
est ‘0’:
c. Exécuter preview select * from t_order_item
; la condition Hint est illustrée dans la figure ci-dessous ; Chaque base de données interroge uniquement t_order_item_0
:
Remarque : Selon les règles de partitionnement de la configuration YAML, lorsque table_value
est un nombre impair, indice t_order_item_1
; lorsque database_value
est un nombre pair, indice t_order_item_0
. C’est assez similaire à add sharding hint database_value
; vous pouvez définir plus d’une valeur d’indice dans add sharding hint database_value
, pour couvrir plus de fragments.
clear sharding hint
Pour la connexion actuelle uniquement. Effacer le paramètre d’indice de partitionnement.
Commande d’entrée
mysql> clear sharding hint;
Sortir
une. En cas de succès, affichez « Requête OK, 0 lignes affectées » ;
b. Effacer l’indice de partitionnement et récupérer la valeur par défaut ; utilisation show sharding hint status
; pour voir le résultat. Le statut initial est :
clear hint
C’est une commande spéciale car elle contient les fonctionnalités de
clear readwrite_splitting hint
etclear sharding hint
. Il peut effacer toutes les valeurs d’indice de fractionnement et de partitionnement en lecture-écriture. Utilisez la commande et vous obtiendrez le statut initial.
Définissez la valeur de l’indice, puis exécutez la commande ;
mysql> clear hint;
Sortir
une. En cas de succès, affichez « Requête OK, 0 lignes affectées » ;
b. Obtenez readwrite_splitting conseil par défaut et conseil de partitionnement par défaut ; utilisation show readwrite_splitting hint status ;
ou show sharding hint status;
commande pour voir le résultat.
Remarque : N’oubliez pas : si vous devez utiliser DistSQL Hint, vous devez activer la configurationproxy-hint-enabled
de ShardingSphere-Proxy. Pour plus d’informations, veuillez lire : https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/props/
Commandes RAL utiles supplémentaires
RAL contient non seulement toutes les fonctions SCTL, mais fournit également d’autres fonctionnalités d’administration utiles, notamment la mise à l’échelle élastique, le disjoncteur d’instance, la désactivation de la base de données en lecture pour le fractionnement en lecture-écriture, etc.
Pour plus de détails sur RAL, veuillez consulter la documentation pertinente : https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/distsql/syntax/ral/
Conclusion
C’est tout les gens. Si vous avez des questions ou des suggestions, n’hésitez pas à commenter nos sections Problèmes ou Discussions sur GitHub. Vous pouvez également soumettre votre pull request et commencer à contribuer à la communauté open source. Nous avons également mis en place une chaîne Slack, où vous pouvez vous connecter avec d’autres membres de notre communauté et discuter de technologie avec nous.
Liens de projet Open Source
ShardingSphere Github : https://github.com/apache/shardingsphere
Twitter de ShardingSphere : https://twitter.com/ShardingSphere
Chaîne Slack ShardingSphere : https://join.slack.com/t/apacheshardingsphere/shared_invite/zt-sbdde7ie-SjDqo9~I4rYcR18bq0SYTg
Problèmes GitHub : https://github.com/apache/shardingsphere/issues
Guide du contributeur : https://shardingsphere.apache.org/community/cn/contribute/