Je suis en train de concevoir un DB mais je ne sais pas quoi faire pour minimiser les frais généraux, j'ai des besoins uniques. l'un des champs pourrait être aussi long que 60kb ou court comme 100 octets, quel genre et quelle longueur devrais-je utiliser dans ce champ pour minimiser les frais généraux à son minimum? J'ai entendu dire que si vous définissiez le maximum à 60k, tout espace inutilisé restant dans la ligne jusqu'à 60k sera rempli d'espace, vous comprenez que cela pourrait causer des frais inutiles, seulement quelques bruts utiliseraient ce Longue durée alors que la plupart des rangées de repos ne le feront pas, que suggérez-vous?Besoin d'aide dans MySQL DB Design (minimiser les frais généraux)
Répondre
Utilisez VARCHAR.
Les valeurs dans les colonnes VARCHAR sont des chaînes de longueur variable. La longueur peut être spécifiée comme une valeur comprise entre 0 et 255 avant MySQL 5.0.3, et entre 0 et 65 535 dans les versions 5.0.3 et ultérieures.
un des champs pourrait être aussi longtemps que 60kb ou court 100 octets
sonne comme un BLOB/TEXT. Comme Andreas has pointed out, vous pouvez même utiliser VARCHAR si vous savez avec certitude que vous n'aurez pas besoin de plus de 64K.
J'ai entendu si vous définissez le maximum d'être comme 60k alors chaque espace inutilisé gauche dans la rangée jusqu'à 60k sera rempli d'espace
Si vous utilisez CHAR, le oui: il stocke le rembourrage.
seulement quelques lignes utiliseraient de cette longueur alors que la plupart des lignes de repos ne sera pas
C'est incorrect. Les SGBD modernes stockent des lignes de longueur variable: seul l'espace réellement nécessaire sera réellement utilisé. Utilisez simplement BLOB/TEXT ou VARCHAR et tout ira bien.
MySQL, VARCHAR
stocke sur le disque compact , soit il ne stocke que la chaîne de caractères utilisés sur une ligne donnée, plus un octet ou deux pour coder la longueur de cette chaîne. Cela est vrai pour les données et les index.
Mais une fois que le VARCHAR
est chargé hors du moteur de stockage et dans la mémoire, il est rembourré sur toute sa longueur. Cela consomme inutilement beaucoup de mémoire si vous déclarez VARCHAR(65535)
. Cette représentation peut alors se retrouver sur le disque pendant le tri ou les opérations de table temporaires. Par conséquent, utilisez TEXT
. Ce type de données n'est pas bourré dans la mémoire comme le fait VARCHAR
, et il prend également en charge les chaînes de 64 Ko.
Si vous avez besoin de chaînes plus longues, utilisez MEDIUMTEXT
qui prend en charge jusqu'à 16 Mo.
La consommation de mémoire 'VARCHAR' s'applique-t-elle aux requêtes ** all **? Votre réponse plus tôt http://stackoverflow.com/a/1962329/1611055 me laisse penser qu'elle s'applique seulement en utilisant des tables 'MEMORY' ou' temporary' (qui pourraient certainement être assez importantes, bien sûr) –
@Andreas, j'ai Depuis appris (du directeur du développement de serveur chez Percona) qu'il s'applique à * toutes * les lignes, car ils doivent tous être représentés d'une manière indépendante du stockage dans la couche SQL. –
Merci Bill - gardez cela à l'esprit pour les futures conceptions de schéma :) –
- 1. Frais généraux liés à l'utilisation du pool de connexions DB
- 2. Comment mesurer les frais généraux
- 3. Matlab dfeval frais généraux
- 4. Android - Frais généraux SendBroadcast
- 5. Frais généraux de connexion ouverture
- 6. MySQL/CakePHP DB Design Question
- 7. Frais généraux d'utilisation de Yii :: app() -> db plusieurs fois?
- 8. variable C initialize frais généraux
- 9. frais généraux de l'appel exec()?
- 10. Postgres référence UUID frais généraux
- 11. haut frais généraux dans la nouvelle table mysql
- 12. Frais généraux de liaison WPF
- 13. Frais généraux de la DLL
- 14. Frais généraux de 64 bits
- 15. db design: commentaires généraux, plusieurs types de messages
- 16. Quels frais généraux à l'aide HttpContext.Items
- 17. Frais généraux de VMA sous Linux
- 18. Éviter les frais généraux dans un « const » déclaration
- 19. limite les frais généraux OutofMemoryError- GC dans pyspark
- 20. Frais généraux de commande par le long
- 21. frais généraux de performance des transactions distribuées
- 22. planification php mysql db design
- 23. Frais généraux avec PPP et Ethernet
- 24. Comparaison de l'infrastructure et frais généraux
- 25. Est-il possible d'éviter les frais généraux en utilisant boost_any?
- 26. frais généraux de copie: double vs pointeurs
- 27. .NET Framework - Frais généraux par application
- 28. Python - Frais généraux des importations `.so`?
- 29. Frais généraux de création de SqlConnection dans C#
- 30. Est-il possible d'évaluer les frais généraux d'OpenMP?
La réservation d'espace inutilisé ne se produit que sur les colonnes 'CHAR'. Vous devriez être bien avec l'un des autres types ('VARCHAR',' TEXT' ...). – Vatev
Avez-vous un problème réel que vous essayez de résoudre ici? Si ce n'est pas le cas, ne vous inquiétez pas de l'utilisation de l'espace à ce stade. –