MySQL - Wie wird der von bestimmten Zeilen verwendete Speicherplatz gemessen?

8

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'?

    
AndKel 13.05.2013, 17:04
quelle

2 Antworten

2

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.

    
svidgen 13.05.2013 19:45
quelle
0

Hoffe, das hilft:

%Vor%     
Arun 05.06.2013 13:25
quelle

Tags und Links