Geschwindigkeit von MySql Abfragen

Geschwindigkeit von MySql Abfragen

am 04.07.2006 15:35:01 von Sebastian Deiszner

Hallo,

ich hatte heute eine Diskussion mit unserem IT-Verantwortlichen.

Wir betreiben auf einem Server (zugegeben ein etwas älteres Modell, 466 Celeron) unter anderem Groupware, Bilderverwaltung und ein
Wikiweb.

Er behauptet nun, dass wenn man die 3 Programme (welche hauptsächlich MySql nutzen) von 1 Datenbank in 3 Datenbanken verteilen
würde, dann würde das System insgesammt schneller laufen.
Er verwendete das Zitat [...]3 SQL-Datenbanken (das sind Instanzen! Wir haben Wiki, Groupware, Bilderverwaltung, und und
und...).[...]

Ist das korrekt?

Meiner Ansicht nach ist es doch eigentlich egal, ob der Server bei gleichzeitigem Zugriff auf die Skripte in 3 Datenbanken nach
Antworten graben muss oder in 1 Datenbank.

gruß

Sebastian

Re: Geschwindigkeit von MySql Abfragen

am 04.07.2006 16:39:11 von Johannes Vogel

Hi Sebastian

Sebastian Deiszner wrote:
> ich hatte heute eine Diskussion mit unserem IT-Verantwortlichen.
> Wir betreiben auf einem Server (zugegeben ein etwas älteres Modell, 466
> Celeron) unter anderem Groupware, Bilderverwaltung und ein Wikiweb.
> Er behauptet nun, dass wenn man die 3 Programme (welche hauptsächlich
> MySql nutzen) von 1 Datenbank in 3 Datenbanken verteilen würde, dann
> würde das System insgesammt schneller laufen.
> Er verwendete das Zitat [...]3 SQL-Datenbanken (das sind Instanzen! Wir
> haben Wiki, Groupware, Bilderverwaltung, und und und...).[...]
> Ist das korrekt?
> Meiner Ansicht nach ist es doch eigentlich egal, ob der Server bei
> gleichzeitigem Zugriff auf die Skripte in 3 Datenbanken nach Antworten
> graben muss oder in 1 Datenbank.

Was möchtest du gerne von uns hören?
Welche finanziellen Differenz diskutieren wir?

IMHO reicht deine Beschreibung bei weitem nicht aus, den einen oder
anderen zu denunzieren. Die Preise für die Hardware sind heute äusserst
gering. Kauft doch einen neuen Computer, installiert die Daten da drauf
und schaut dann, ob die Geschwindigkeit der Applikation nun befriedigend
läuft.

Besser wäre es aber, die Applikation so zu optimieren, dass sie auch auf
dem bestehenden Rechner läuft. Ob da eine oder drei DBs dafür verwendet
werden, spielt für solche Fragen kaum eine Rolle.

HTH, Johannes

Re: Geschwindigkeit von MySql Abfragen

am 04.07.2006 17:07:05 von Axel Schwenke

"Sebastian Deiszner" wrote:
>
> ich hatte heute eine Diskussion mit unserem IT-Verantwortlichen.
>
> Wir betreiben auf einem Server (zugegeben ein etwas älteres Modell,
> 466 Celeron) unter anderem Groupware, Bilderverwaltung und ein
> Wikiweb.
>
> Er behauptet nun, dass wenn man die 3 Programme (welche hauptsächlich
> MySql nutzen) von 1 Datenbank in 3 Datenbanken verteilen würde, dann
> würde das System insgesammt schneller laufen.
....
Damit ich das richtig verstehe: 3 MySQL-Instanzen auf einem Server
sollen schneller sein, als eine?

> Ist das korrekt?

Nein. Drei Instanzen vergeuden Speicher (RAM). Datenbanken leben davon,
wichtige Daten (Indizes) im RAM halten zu können. Außerdem ist es
schwieriger, ein System mit 3 Instanzen auszubalancieren (wieviel RAM
gebe ich welcher Instanz).


XL

Re: Geschwindigkeit von MySql Abfragen

am 04.07.2006 20:20:23 von Christian Schmidt

Am Tue, 4 Jul 2006 17:07:05 +0200 schrieb Axel Schwenke:

> "Sebastian Deiszner" wrote:
>>
>> ich hatte heute eine Diskussion mit unserem IT-Verantwortlichen.
>>
>> Wir betreiben auf einem Server (zugegeben ein etwas älteres Modell,
>> 466 Celeron) unter anderem Groupware, Bilderverwaltung und ein
>> Wikiweb.
>>
>> Er behauptet nun, dass wenn man die 3 Programme (welche hauptsächlich
>> MySql nutzen) von 1 Datenbank in 3 Datenbanken verteilen würde, dann
>> würde das System insgesammt schneller laufen.
> ...
> Damit ich das richtig verstehe: 3 MySQL-Instanzen auf einem Server
> sollen schneller sein, als eine?

Ich hab es so verstanden:
Ist es schneller alle Programme auf eine Datenbank (mit vielen Tabellen)
zugreifen zu lassen oder für jedes Programm eine eigene Datenbank mit
jewels weniger Tabellen.
Und wenn ich den OP falsch verstanden habe, würde mich die Antwort auf
diese Frage trotzdem interessieren.

Gruß

Chris

--
Jetzt auch bei mir: http://blog.superbilk.org

Re: Geschwindigkeit von MySql Abfragen

am 04.07.2006 23:38:57 von Sebastian Deiszner

> Ich hab es so verstanden:
> Ist es schneller alle Programme auf eine Datenbank (mit vielen Tabellen)
> zugreifen zu lassen oder für jedes Programm eine eigene Datenbank mit
> jewels weniger Tabellen.
> Und wenn ich den OP falsch verstanden habe, würde mich die Antwort auf
> diese Frage trotzdem interessieren.
>

Genau - das ist meine Frage gewesen :-)

Re: Geschwindigkeit von MySql Abfragen

am 05.07.2006 00:08:40 von Ralph Ganszky

Hallo Sebastian,

"Sebastian Deiszner" wrote in message
news:44aadff3$0$29129$9b4e6d93@newsread4.arcor-online.net...
>> Ich hab es so verstanden:
>> Ist es schneller alle Programme auf eine Datenbank (mit vielen Tabellen)
>> zugreifen zu lassen oder für jedes Programm eine eigene Datenbank mit
>> jewels weniger Tabellen.
>> Und wenn ich den OP falsch verstanden habe, würde mich die Antwort auf
>> diese Frage trotzdem interessieren.
>>
>
> Genau - das ist meine Frage gewesen :-)

Wenn ich Axel richtig verstanden habe, ist die Antwort: Nein es ist nicht
scheller für jedes Programm eine eigene Datenbank Instanz zu haben.

Dies entspricht auch meiner Meinung auch wenn ich mich bei MySql nicht so
auskenne. Im Allgemeinen kann die Pufferverwaltung einer Datenbank Instanz
besser und vor allem schneller entscheiden welches Programm wann wieviel vom
Puffer braucht. Da sich dies dynamisch nur dann sehr schnell von einem
Programm zum nächsten verschieben kann wenn alles in einem Puffer verwaltet
wird, ist im Allgemeinen eine Instanz schneller. Im Besonderen kann es
natürlich auch sein, dass eine Applikation sehr schlecht geschrieben ist und
allen anderen ständig den Puffer zu müllt. Die anderen Applikationen werden
in solch einer Situation also unter der einen, schlecht programmierten,
leiden. In dem Fall ist die Aufteilung für die gut programmierten
Applikationen wahrscheinlich günstiger. Für die schlecht programmierte aber
auch wieder schlechter.

Im Allgemeinen Fall, wenn alle Applikationen gleich oder ähnliche
Anforderungen an die Datenbank Instanz stellen, gilt meiner Meinung nach,
dass eine geteilte Instanz performanter ist als drei. Entscheident ist
meiner bescheidenen Meinung nach aber vor allem, dass der Puffer geteilt
wird.

Gruß
Ralph

Re: Geschwindigkeit von MySql Abfragen

am 05.07.2006 10:07:14 von Christian Kirsch

Ralph Ganszky schrieb:
> Hallo Sebastian,
>
> "Sebastian Deiszner" wrote in message
> news:44aadff3$0$29129$9b4e6d93@newsread4.arcor-online.net...
>>> Ich hab es so verstanden:
>>> Ist es schneller alle Programme auf eine Datenbank (mit vielen Tabellen)
>>> zugreifen zu lassen oder für jedes Programm eine eigene Datenbank mit
>>> jewels weniger Tabellen.
>>> Und wenn ich den OP falsch verstanden habe, würde mich die Antwort auf
>>> diese Frage trotzdem interessieren.
>>>
>> Genau - das ist meine Frage gewesen :-)
>
> Wenn ich Axel richtig verstanden habe, ist die Antwort: Nein es ist nicht
> scheller für jedes Programm eine eigene Datenbank Instanz zu haben.
>

Das ist allerdings m.E. *nicht* die Antwort auf die Frage. Bei MySQL
kann eine "Instanz" (vulgo: Prozess) mehr als eine Datenbank
verwalten. Die Begriffe sind also nicht austauschbar. Der OP wollte,
denke ich, wissen:

Wenn ich *einen* MySQL-Prozess habe, ist es dann sinnvoller, meine
Tabellen alle in *einer* Datenbank unterzubringen, oder sollte ich sie
auf *mehrere* aufteilen.

Es ging *nicht* um die Frage, wieviele Serverprozesse ("Instanzen")
man laufen lassen sollte.

Eine Antwort habe ich auf diese Frage allerdings nicht zu bieten -
stattdessen Gegenfragen: Um welche Datenmengen geht's denn überhaupt?
Wieviele Abfragen pro Sekunde? Gibt es schon Performance-Probleme,
oder sind das alles bloß theoretische Überlegungen?

Re: Geschwindigkeit von MySql Abfragen

am 05.07.2006 10:36:01 von Axel Schwenke

"Sebastian Deiszner" wrote:

>> Ich hab es so verstanden:
>> Ist es schneller alle Programme auf eine Datenbank (mit vielen Tabellen)
>> zugreifen zu lassen oder für jedes Programm eine eigene Datenbank mit
>> jewels weniger Tabellen.

Also "Datenbank" im Sinne von "Schema" oder "Namespace für Tabellen".

>> Und wenn ich den OP falsch verstanden habe, würde mich die Antwort auf
>> diese Frage trotzdem interessieren.

In diesem Zusammenhang fallen mir 2 Punkte ein:

1) das Permission-System: wenn alle Tabellen in einem Schema liegen,
muß man - wenn man die Applikationen accountmäßig trennen will -
Rechte auf Tabellen-Ebene vergeben. Das ist im Endeffekt langsamer
(zu überprüfen) als wenn man Rechte auf Schema-Ebene vergibt.
Zu erwartender Effekt: unterhalb der Meßbarkeit. Die Permission-
Daten werden im RAM gecached. Allerdings vereinfacht es die
Administration des MySQL-Servers, wenn jede Applikation ihr eigenes
Schema bekommt. Ich möchte wetten, der OP hat die Zugriffsrechte
seiner 3 Applikationen nicht korrekt separiert.

2) Datenablage: bekanntlich legt MySQL für jedes Schema ein Verzeichnis
im $DATADIR an und speichert darin die Datenbankobjekte. Manche
Filesysteme werden nun langsamer, wenn sehr viele Objekte in einem
Verzeichnis liegen. Allerdings muß da schon einiges zusammenkommen.
Ich würde mal sagen, ab 1000 Tabellen/Views kann man langsam
anfangen, sich darüber Gedanken zu machen. Wenn man ein Filesystem
verwendet, das Verzeichnisse als Baumstruktur verwaltet (also alle
außer ext2 und DOSenkram) ist das komplett hinfällig. Für ext2/3
gibt es die Option 'dir_index' (man mke2fs) - dann ist das das auch
kein Thema mehr.
Für die Statistik: ich habe schon Datenbanken mit 15.000 MyISAM-
Tabellen (=45.000 Files) in einem Schema verwendet. Ohne Probleme.


Schlußfolgerung: jede Applikation sollte ihr eigenes Schema bekommen.
Das vermeidet Namenskonflikte und vereinfacht die Administration.


XL