Salutations,
J'écris des scripts pour traiter les images de divers sites de photos. En ce moment, je stocke toutes ces données dans des fichiers texte individuels dans le même répertoire.
Le répertoire est accessible sur le Web. Un utilisateur final appelle un service Web qui renvoie le chemin d'accès au fichier dont l'utilisateur aura besoin.
Je me demandais à quelle étape verrais-je un impact sur les performances en ayant tous ces fichiers dans le même répertoire? (Si seulement)
Réponses:
Les performances varient en fonction du système de fichiers que vous utilisez.
EXT3: la limite physique est de 32 000 fichiers, mais la performance souffre également après plusieurs milliers de fichiers.
EXT4: théoriquement illimité
ReiserFS, XFS, JFS, BTRFS: ce sont les bons pour beaucoup de fichiers dans un répertoire car ils sont plus modernes et conçus pour gérer de nombreux fichiers (les autres ont été conçus à l'époque où les disques durs étaient mesurés en Mo et non en Go) . Les performances sont bien meilleures pour de nombreux fichiers (avec ext4) car ils utilisent tous deux un algorithme de type de recherche binaire pour obtenir le fichier que vous souhaitez (les autres utilisent un algorithme plus linéaire).
la source
Je stocke des images pour les servir par un serveur Web et j'ai plus de 300 000 images dans un répertoire sur EXT3. Je ne vois aucun problème de performances. Avant de configurer cela, j'ai fait des tests avec 500k images dans un répertoire, et accédant aléatoirement à des fichiers par nom, et il n'y a eu aucun ralentissement significatif avec 500k sur 10k images dans le répertoire.
Le seul inconvénient que je vois, c'est que pour synchroniser les nouveaux avec un deuxième serveur, je dois parcourir
rsync
tout le répertoire et ne peux pas simplement lui dire de synchroniser un sous-répertoire contenant le millier le plus récent.la source
La quantité de fichiers dans un dossier pourrait théoriquement être illimitée. Cependant, chaque fois que le système d'exploitation accédera au dossier spécifique pour rechercher des fichiers, il devra traiter tous les fichiers du dossier. Avec moins de 500 fichiers, vous ne remarquerez peut-être aucun retard. Mais lorsque vous avez des dizaines de milliers de fichiers dans un seul dossier, une simple commande de liste de dossiers (ls ou dir) peut prendre beaucoup trop de temps. Lorsque ces dossiers seront accessibles via FTP, ce sera vraiment trop lent ...
Les problèmes de performances ne dépendront pas vraiment de votre système d'exploitation, mais de la vitesse du processeur de votre système, des capacités du disque et de la mémoire. Si vous avez autant de fichiers, vous souhaiterez peut-être les combiner en une seule archive et utiliser un système d'archivage optimisé pour contenir un grand nombre de données. Il peut s'agir d'un fichier ZIP, mais mieux encore, stockez-les en tant qu'objets blob dans une base de données avec le nom de fichier comme clé primaire.
la source
ls
est un problème.Ma règle de base est de diviser les dossiers s'il y a plus de 1000 fichiers et le dossier sera parcouru (c'est-à-dire via Internet ou Explorer) ou 5000 fichiers sinon.
la source
Comme le souligne @skaffman, les limites dépendent du système d'exploitation. Vous êtes susceptible d'être affecté par les limites des anciens systèmes d'exploitation. Je me souviens qu'une ancienne version de Solaris était limitée à 32 768 fichiers par répertoire.
La solution habituelle consiste à utiliser une sorte de hachage, c'est-à-dire que le serveur Cyrus imap divise les utilisateurs par un hachage alphabétique:
la source
Si vous accédez directement à un fichier, le nombre de fichiers dans un répertoire n'est pas un problème de vitesse.
Le nombre de fichiers que vous pouvez créer dans un seul répertoire dépend du système de fichiers que vous utilisez. Si vous répertoriez tous les fichiers dans le répertoire ou que vous recherchez, triez, etc., le fait d'avoir de nombreux fichiers ralentira ces opérations.
gbjbaanb a tort dans sa réponse concernant la taille maximale du fichier ext3. Généralement, ext limite le nombre de fichiers sur votre disque en général. Vous ne pouvez pas créer plus de fichiers que vous avez des inodes dans votre table d'inodes. Il a raison de suggérer des reiserfs pour plus de performances avec de nombreux fichiers
la source
Dossier vérifié avec des fichiers 10K en NTFS (Windows 7, 64 bits). Le dossier contenant des images 10K dans n'importe quelle vue (liste, icône, etc.) fonctionne et défile sans aucun délai sensible.
la source