Meilleur moyen : récupérer, chiffrer et mettre à jour des millions d'enregistrements dans MySQL à l'aide de Java 8
P粉211600174
P粉211600174 2023-08-27 00:17:18
0
1
578
<p>Nous devons lire environ 10 millions d'enregistrements d'une base de données MySQL, chiffrer ces enregistrements et mettre à jour les valeurs chiffrées dans les champs. Comment répondre à cette exigence de la manière la plus efficace possible. </p>

Cette option est donc exclue. </p> <p><strong>2</strong> : la fonction Executor en Java a déjà été utilisée dans l'une de nos applications pour implémenter l'insertion par lots. Mais le nombre de dossiers ne dépasse pas 50 000. On nous demande d’utiliser une approche similaire. Par conséquent, l’utilisation de Spring Batch est exclue. </p> <p>Je recherche des fonctionnalités possibles à prendre en compte dans les bases de données Java 8/MySQL. </p> <p>Java 8 : utilisez Executor pour le multithreading, CompletableFuture pour le traitement asynchrone et le streaming. </p> <p>MySQL : Créer un index...</p>

P粉211600174
P粉211600174

répondre à tous(1)
P粉903052556
  • Toute opération sur 10 millions de lignes de données prendra beaucoup de temps et peut entraîner des délais d'attente.
  • Vous ne pouvez utiliser VARBINARYBLOB que si vous stockez dans MySQL.
  • Assurez-vous que le type de données déclaré est au moins légèrement plus grand que les données sources. (SELECT MAX(LENGTH(col)) FROM tbl) peut donner la longueur maximale.
  • Envisagez de créer un nouveau tableau et, lors de la copie des données, convertissez-les dans d'autres colonnes du nouveau tableau. Alors testez-le.
  • Envisagez de traiter 1000 lignes de données par itération, utilisez PRIMARY KEY来跟踪“上次停下来的位置”,如果可行的话。(不要使用OFFSET). Plus d'informations sur le chunking : http://mysql.rjweb.org/doc.php/deletebig#deleting_in_chunks
  • Oui, utilisez une sorte d’insert en vrac. Mais limitez la taille totale du lot à environ 1 Mo. (16 Mo sont difficiles à dépasser). Cela peut ramener la taille de vos données en dessous de 1 Ko mentionné ci-dessus.
  • Le temps nécessaire pour opérer sur l'ensemble de la table ne fera pas une énorme différence par rapport à une opération ponctuelle, traitant 1 000 lignes à la fois.
  • Lors du cryptage de vos données, cela vaut peut-être également la peine d'essayer de les compresser. Cela peut entraîner une empreinte disque 3 fois plus petite.
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!