Ich arbeite an einem Projektmanagement-Programm, das auf einem LAMP-Stack basiert. Ich habe vorläufig beschlossen, nicht jedem meiner Kunden eine eigene Datenbank zur Verfügung zu stellen, sondern alle Geschäftsdaten in einer großen Datenbank zusammenzufassen.
Die erste Spalte in allen Datenbanktabellen ist business_id. Diese Zeile gibt an, zu welchem Geschäft ein bestimmtes Datenelement gehört. Dadurch können wir die Daten von Business 1 nicht Business 2 aussetzen.
Aber während ich versuche, die Knickpunkte bei der Abrechnung zu beseitigen, wäre es sehr nützlich, einmal im Monat einen Cron-Job ausführen zu können, um zu ermitteln, wie viel Datenbankplatz jedes Unternehmen nutzt. Hier ist meine Frage: Gibt es eine Möglichkeit, MySQL dazu zu bringen, die Anzahl der Bytes zurückzugeben, die von allen Zeilen verwendet werden? WHERE business_id = 'x'?
Da Sie wahrscheinlich nur die Informationen abrechnen werden, die der Kunde Ihnen explizit für die Speicherung zahlt, fassen Sie einfach die Länge der Felder zusammen, die Sie explizit angeben. (Lassen Sie interne Felder wie business_id
, service_level_id
, permissions
oder was auch immer aus.) Lesen Sie dann die Speicheranforderungen und berechnen.
Also, wo B ist die Anzahl der Bytes für alle numerischen Felder erforderlich, und es gibt 3 Textfelder txtA, txtB und txtC, zum Beispiel:
%Vor% Aber sobald Sie eine vernünftige Menge an Daten in Ihrem System haben, vermute ich, dass die Abfrage ziemlich lange dauern wird. Es könnte einfacher sein, Ihren Kunden nur zu sagen, dass Sie sie auf ihrem "ungefähren" Datenspeicher abrechnen werden. Verwende die average_row_length * count(*)
ihrer Zeilen und trimme etwas ab, um deinen Overhead zu berücksichtigen.
Tags und Links mysql