1
votes

Ce qui est plus rapide pour insérer et récupérer une base de données MySQL ou un simple fichier csv

Un CRM arrive sur mon serveur via des web hooks au moins 1 000 fois et je ne peux pas traiter toutes les demandes en même temps. Je pense donc à l'enregistrer (dans un fichier Mysql ou csv) puis à traiter 1 enregistrement à la fois.

quelle méthode est la plus rapide s'il y a environ 100 000 enregistrements et que je dois traiter un enregistrement à la fois.


1 commentaires

Utilisez mysql c'est meilleur et sûr.


3 Réponses :


0
votes

Comme vous le savez certainement, CSV ne vous permettra pas de créer des index pour une recherche rapide. La définition d'index dans les colonnes de votre table accélère la recherche dans une très grande mesure, et vous ne pouvez pas ignorer ce fait.

Si vous avez besoin de toutes vos données à partir d'une table unique (par exemple, la configuration de l'application), CSV est plus rapide, sinon pas. Par conséquent, pour les recherches simples d'insertion et de balayage de table (non basées sur un index), CSV est plus rapide. Considérez également que la mise à jour ou la suppression d'un CSV n'est pas triviale. Si vous utilisez CSV, vous devez faire très attention à gérer correctement plusieurs threads / processus, sinon vous obtiendrez de mauvaises données ou endommagerez votre fichier.

Mysql offre beaucoup de capacités telles que les requêtes SQL, les transactions, la manipulation de données ou l'accès simultané ici, mais CSV n'est certainement pas pour ces choses. Mysql, comme mentionné par Simone Rossaini, est également sûr . Vous ne pouvez pas non plus oublier ce fait.

Si vous optez pour des recherches insertion simple et table-scan (non-indexées) , CSV est certainement plus rapide. Pourtant, il présente de nombreuses lacunes lorsque vous le comparez aux innombrables capacités de MySql.


0 commentaires

0
votes

Différentes méthodes sont disponibles pour effectuer une telle opération:

  1. Vous pouvez stocker des données dans MySQL et écrire un script PHP qui récupérera la requête de la base de données MySQL et la traitera une par une. Ce script peut être exécuté automatiquement à l'aide de crontab ou du planificateur après un intervalle spécifique.

  2. Vous pouvez implémenter la fonctionnalité de files d'attente personnalisées en utilisant PHP + MySQL


0 commentaires

0
votes

Il semble que vous ayez besoin des éléments suivants:

1) Une table de file d'attente entrante où toutes les nouvelles lignes sont insérées sans traitement. Une table InnoDB correctement configurée devrait être capable de gérer 1000 INSERTs / seconde sauf si vous utilisez un Raspberry Pi ou quelque chose de similaire sous-spécifié. Vous devriez probablement avoir cela partitionné afin qu'au lieu de supprimer les enregistrements après le traitement, vous puissiez supprimer des partitions à la place (ALTER TABLE ... DROP PARTITION est beaucoup, beaucoup moins cher qu'une grande opération DELETE).

2) Un événement planifié qui traite les données en arrière-plan, éventuellement par lots, et nettoie la table de file d'attente d'origine.


0 commentaires