2009-10-13 6 views
1

J'ai un serveur de développement MySQL (InnoDB uniquement) avec plusieurs utilisateurs. Chaque utilisateur a accès à un schéma exclusif. Comment est-ce que je peux limiter la taille de schéma de sorte que chaque utilisateur puisse employer seulement 1GB (par exemple)? MySQL lui-même n'offre pas de système de quotas.Taille du schéma MySQL

Répondre

2

L'utilisation de la méthode suggérée par James McNellis fonctionnerait probablement, mais si InnoDB atteignait une limite de quota stricte, cela ne profiterait certainement pas à la stabilité; tous les fichiers de données sont toujours connectés via l'espace table système qui ne peut pas être supprimé.

Malheureusement, je ne vois pas de moyen pratique de réaliser ce que vous voulez. Si vous craignez que l'utilisation de l'espace disque dépasse les limites prédéfinies et que vous ne souhaitiez pas respecter les quotas externes, je suggère de conserver les paramètres d'espace table combinés (par exemple innodb_file_per_table) et de supprimer le :autoextend de la configuration. De cette façon, vous n'obtiendrez toujours pas de limites spécifiques à l'utilisateur ou au schéma, mais vous éviterez au moins que le disque ne soit rempli de données, car l'espace table ne dépassera pas sa taille initiale dans cette configuration. Avec innodb_file_per_table il n'y a malheureusement aucun moyen de configurer chacun d'eux pour s'arrêter à une certaine taille maximale.

Ceci est l'un des aspects que MySQL diffère des autres, soi-disant plus de bases de données au niveau de l'entreprise. Cependant, ne vous méprenez pas, nous utilisons InnoDB avec beaucoup de données dans plusieurs milliers d'installations, il s'est donc avéré être prêt pour la production. Seules les fonctionnalités de gestion font parfois défaut.

+0

C'est un bon point que MySQL n'aimerait probablement pas manquer d'espace disque. Le fichier innodb_file_per_table peut être utilisé pour aider à maintenir les limites logicielles, car vous savez à peu près combien d'espace disque chaque base de données utilise. –

+0

Innodb devrait tolérer la sortie de l'espace disque assez bien. MyISAM ne le fait pas; il bloque le processus pour toujours (c'est parce qu'il n'a pas de transactions donc il ne peut pas annuler tout travail qu'il a déjà fait). Veuillez tester ce qui se passe lorsque InnoDB est à court d'espace disque. Vous avez besoin d'innodb_file_per_table. – MarkR

+0

Notez également que vous ne pouvez pas empêcher les utilisateurs de créer des tables MyISAM très facilement - le moteur est intégré dans mysql et non amovible. Les tables temporaires, etc. peuvent également l'utiliser. Et les tables temporaires Innodb vont toujours dans le grand fichier "ibdata1" lorsque file_per_table est activé. – MarkR