MYSQL: DB-Größenbegrenzung einrichten !?

FRitter

Erfahrenes Mitglied
Hallo ihr alle!

Ich muss für mehrere MySQL-Datenbanken jeweils maximale Datengrößen definieren, so dass unterschiedliche User nur ein bestimmtes Kontingent der Datenbank nutzen können. Gibt es ein solches "Limit" für MySQL, und wenn ja, wie definiere ich es ? Auf Dateiebene kann ich leider kein Kontingent verwalten, da die Daten in die MySQL-Datenbanken von der Datenbank-Software selbst geschrieben werden und also nicht per User unterschieden werden können.

PS: Die gesamten DBs werden per PHPMyAdmin verwaltet, aber auch dort konnte ich keine Funktion dafür finden...
 
Hi!

Mir ist nicht so ganz klar, was Du willst.
Darf der User Tabellen anlegen oder nur in einer Tabelle Einträge tätigen?
Du könntest überprüfen, wieviele Einträge der User bereits getätigt hast und dann z. B. nach 3 Einträge keine weiteren Einträge von dem User zulassen!
Oder wenn es um die Größe eines Datensatzes geht, da kannst Du bei den einzelnen Feldtypen eine maximale Größe des Feldes definieren. Wenn dann mehr Daten kommen als gespeichert werden kann, wird einfach der Rest abgeschnitten!
Oder meintest Du es noch anders?

redlama
 
Hallo!

wenn man in MySQL mittels create database ... eine neue Datenbank erstellt wird eigentlich nur ein neues Verzeichnis innerhalb des (standardmäßigen) data Verzeichnisses der MySQL Installation erstellt. Alle Tabellen finden sich dann in Form von Kombinationen aus MYI (Indexdatein), FRM (Tabellenformat) und MYD (Datendateien) wieder. Du könntest nun einfach das Datverzeichnis umsetzen und Quotas auf dem Filesystem anlegen. Wenn die Datenbank die Quota überschreiben will gibts nen Datenbankfehler...

Gruß Tom
 
Hallo zurück,

schonmal danke für eure Antworten!

Der letzte Vorschlag hört sich schon nicht schlecht an - kann es mir aber leider i.d. Praxis noch nicht genau vorstellen.
Zur 1. Antwort (redlama): Es hat an sich nichts mit den Tupeln zu tun, die in die DB geschrieben werden (es ist egal, ob es z.B. 10.000 oder 200.000 sind), maßgebend muss der Speicherplatz sein, um versch. Usern z.B. 20 MB max. als MySQL-Datenbankgröße zuzuweisen... verständlicher, was ich brauche ?

Also, es handelt sich um einen "MS Windows 2000 Advanced Server". Dort kann ich auf Benutzerebene versch. "DiskQuotas" definieren, jedoch nicht für einzelne Verzeichnisse (also nicht ohne User-Anmeldung auf Betriebssystemebene). Ich kann natürlich mittels PHP die Verzeichnisse auslesen und die Größe bestimmen - aber wie kann ich dann die DB ab dem Überschreiten "sperren", so dass nur noch gelesen / gelöscht werden kann. Dann müsste ja bei jedem INSERT in die DBs per Skript geprüft werden, ob das Verz. größer als x,xx MB ist. Das scheint wohl eine sehr schlechte Lösung zu sein, die ich hier anpeile...

Für weitere Schilderungen bin ich sehr dankbar!
 
Hallo nochmal,

habe heute noch bemerkt, dass MySQL seine DBs ja gar nicht komplett mit allen Daten in die Datenbankverzeichnisse (in "my.ini" definiert) schreibt. Habe in phpMyAdmin eine ca. 8 MB große DB angelegt und im Verzeichnis sind nur ca. 600 KB. Wo sind denn jetzt nun die Daten ?
 
Zurück