Leistungsfähigkeit

Der MySQL Datenbank-Server für Internet- und Intranet-Lösungen.

Leistungsfähigkeit

Beitragvon radditz » Mi 15 Mär, 2006 17:39

Schafft MySQL so ~1000 Anfragen die Sekunde? Welche Hardware wäre dafür notwendig?
Momentan wären es nur Inserts von ein paar Daten in die Tabelle.

Die Inserts selbst kommen wahrscheinlich von einem selbstgeschriebenen Server, der die Daten übers Web entgegen nimmt.

Genügt eigentlich auch eine PostgreSQL Datenbank dafür? Ist die evtl. besser als MySQL?
Telematica DSL Solo Pro 30 Mbit/s
Vorher: A1 VDSL 16 Mbit/s
radditz
Ultimate Power-User
Ultimate Power-User
 
Beiträge: 4391
Registriert: Mo 23 Jun, 2003 16:50

Beitragvon lordpeng » Mi 15 Mär, 2006 22:38

viel speicher wär sicher kein fehler, ich mal ein script geschrieben, welches die snr-werte von kabelmodems auswertet da is mein testrechner zeitweise schon ins schwitzen gekommen, allerdings liefen zeitgleich unmengen von mrtg-childs für die grafische auswertung ... diese kombination hat sich jedenfalls nicht soooo toll vertragen
lordpeng
Moderator
Moderator
 
Beiträge: 10099
Registriert: Mo 23 Jun, 2003 22:45
Wohnort: 47.342367N 14.144035E

Beitragvon FTH » Mi 15 Mär, 2006 22:53

Ich würde einmal sagen von einfachen Inserts sollte MYSQL schon eines pro Millisekunde schaffen. Dafür halte ich auch keine ausgefallene Hardware für notwendig. Ausser genug Speicherplatz, denn pro Sekunde 1000 Datensätze das sind dann schon 3.600.000 in der Stunde, ... ;)

Die Frage ist eher wie du zu den 1000 Datensätzen in der Sekunde über das Web kommst? Also ich sehe eindeutig hier den Flaschenhals deiner Idee.

Die Frage ob PostgreSQL besser oder schlechter als MySQL ist generell nicht zu beantworten. Da müsstest du schon ein wenig mehr verraten, was du später mit deinen Daten anstellen willst. Nur zum Datenaufbewaren würde ich technisch keine großen Unterschiede ausmachen. Da halte ich es eher für einen Glaubeskrieg wie vi vs. emacs ;)

Ansonsten ist PostgreSQL das komplettere Datenbanksystem (Transaktionen, Trigger, Logging, usw. sind ausgereifter als bei MySQL), was sich auch in der etwas umständlicheren Verwaltung niederschlägt. Wobei MySQL auch auf diesem Gebiet aufholt, sowie PostgreSQL bei der Geschwindigkeit immer besser wird.

Ein weiterer großer Unterschied den ich dir auch ohne dein System zu kennen erklären kann, sind die unterschiedlichen Lizenzen.
Postgre unterliegt meines Wissens nach einer BSD-Lizenz. D.h. du kannst die Datenbank auch für "closed Source" Projekte ohne Kosten nutzen. MySQL hat da ganz andere Bestimmungen, ...
FTH
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 35
Registriert: Mi 25 Jan, 2006 10:10
Wohnort: Weiz

Beitragvon superracer » Mi 15 Mär, 2006 23:03

FTH hat geschrieben:Ich würde einmal sagen von einfachen Inserts sollte MYSQL schon eines pro Millisekunde schaffen.

kommt drauf an: wenn schon viele datensätze in der tabelle sind und noch ein paar indexe dazu kommen, kann sich das schon etwas ziehen... also in solchen fällen zumindest keine keys auf die tabelle setzen, sondern erst später bei der auswertung, wenn nix mehr insertet wird.

vor allem das speichermedium (festplatte) muß mit der datenflut zurechtkommen, da kommt's halt wieder drauf an, wie groß so ein datensatz is...
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon FTH » Mi 15 Mär, 2006 23:09

kommt drauf an: wenn schon viele datensätze in der tabelle sind und noch ein paar indexe dazu kommen, kann sich das schon etwas ziehen...


... Natürlich kommt es darauf an was bei so einem Insert noch alles passiert, wenn ich erst aus einer zweiten Tabelle die neue Datensatznummer hole, dann noch die Zeitdifferenz zum letzten Insert berechne und diese in eine dritte Tabelle eintrage wirds eng mit einem INSERT pro Millisekunde ... :ok:
FTH
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 35
Registriert: Mi 25 Jan, 2006 10:10
Wohnort: Weiz

Beitragvon radditz » Mi 15 Mär, 2006 23:50

naja, genaues kann ich zum Projekt nicht sagen, Details will ich nicht angeben.

Der Flaschenhals Internet-Verbindung ist nicht gegeben, da das ganze so Traffic-schonend wie möglich übertragen wird.
Das mit Index ist auch so eine Sache.
Grundsätzlich gibt 4 Nutzdaten:
Zwei Double Werte, ein Timestamp und eine ID. Das ist der aktuelle Stand.
Wie es von der Modellierung her aussieht, kann ich momentan nur erahnen, aber ich denke mal, dass eine Kombination aus ID + Timestamp als Primary-Key genommen wird. Im Endeffekt läuft es auf eine Live-Auswertung 2er (evtl. sogar mehr) Messwerte hinaus.

Bezüglich Lizenzen werde ich mich noch umschauen, danke für den Tipp.
Telematica DSL Solo Pro 30 Mbit/s
Vorher: A1 VDSL 16 Mbit/s
radditz
Ultimate Power-User
Ultimate Power-User
 
Beiträge: 4391
Registriert: Mo 23 Jun, 2003 16:50

Beitragvon FTH » Do 16 Mär, 2006 12:25

Wenn du gleichzeitig zum Einfügen auch noch Auswertungen fahren willst, und das eventuell auch noch in geringen Zeitintervallen, dann getraue ich mir schon nichtmehr zu sagen, dass das mit 1000 Inserts pro Sekunde so einfach funktioniert. :ichsagnix:

Was du dir bei MySQL auf jeden Fall überlegen solltest, ist welchen Tabellentyp du verwendest - Denn die können sich je nach Datenmenge sehr unterschiedlich bei Inserts und Selects verhalten.

Aber ich fürchte sowieso, dass du nicht darum herumkommens wirst, dir ordentliche Testdaten zu generieren und das am besten bevor du dich für ein System entscheidest, um verschiedene Speedtests durchzuführen. Denn nur so kannst du für dich verlässlich sagen, was wirklich deinen Vorstellungen entspricht.

Vielleicht kannst du uns ja dann auch hier im Forum informieren, warum du zu welcher Entscheidung gekommen bist.
FTH
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 35
Registriert: Mi 25 Jan, 2006 10:10
Wohnort: Weiz

Beitragvon Neptunus » Fr 17 Mär, 2006 11:39

Hallo,

vielleicht passt meine Frage nicht 100%-ig in diesen Thread, aber weiß hier jemand darüber bescheid, wie es sich genau bzgl. MySQL und der Verwendung dieser DB in closed-source-Produkten verhält?

MySQL ist ja unter der GPL lizenziert, was heißt, dass eine Applikation, die zB Teiel des MySQL-Sourcecodes in ihrer Source nutzt, wieder unter der GPL veröffentlicht werden muss.

Das ist mir ja noch klar.

Wie verhält es sich aber, wenn ich zB eine Closed-Source-Applikation entwickle (zB in C++), die für bestimmte Zwecke Daten in einer MySQL-DB speichert.

Darf ich in diesem Fall einen GPL-MySQL-Server zusammen mit meiner Closed-Source und kostenpflichtigen Applikation ausliefern?

Die MySQL-DB wäre in diesem Fall ja ein von meinem Code eine völlig unabhängige und eigenständige Applikation.
Es gibt ja auch closed-Source Applikationen, welche die OpenSSL-Libraries mitausliefern, welche ja auch unter der GPL lizenziert sind.

Hat sich schon jemand mit diesem Thema befasst? Ich habe bis jetzt noch keine genauen Infos dazu gefunden (mich aber auch nur am Rande damit befasst)
Neptunus
Board-User Level 1
Board-User Level 1
 
Beiträge: 691
Registriert: Do 26 Jun, 2003 16:43

Beitragvon radditz » Fr 17 Mär, 2006 12:26

genau, die frage betrifft mich ja eigentlich auch.
wenn ich nämlich in java über jdbc etwas ansteuere, muss ich es ja deshalb auch nicht als Open Source ausliefern. Warum sollte es dann in C/C++ so sein, wenn ma nur Funktionen wie mysql_connect, query, fetch benutzt?
bzw. im endeffekt benutz ich ja nur die library und 2 header files
Telematica DSL Solo Pro 30 Mbit/s
Vorher: A1 VDSL 16 Mbit/s
radditz
Ultimate Power-User
Ultimate Power-User
 
Beiträge: 4391
Registriert: Mo 23 Jun, 2003 16:50

Beitragvon Neptunus » Fr 17 Mär, 2006 13:05

Hm...
ich denke man kann annehmen, dass man unter diesen Umständen eine Library benutzen muss, die nicht Teil des MySQL-Pakets ist und nicht auch der GPL unterliegt. Also eine Library, die zB von irgendjemanden ist, und unter einer BSD-Lizenz veröffentlich wurde.

Binde ich eine Library in mein Programm ein, die mit dem MySQL-Paket mitgeliefert wird, nutze ich ja Teile von MySQL in meiner Applikation.

Ich denke, dass man in diesem Fall die eigene Applikation auch unter der GPL veröffentlichen müsste.
Neptunus
Board-User Level 1
Board-User Level 1
 
Beiträge: 691
Registriert: Do 26 Jun, 2003 16:43

Beitragvon medice » Fr 17 Mär, 2006 13:34

Wie sich das genau verhält/verhalten sollte, kann ich dir nicht sagen, aber ich hab schon etliche proprietäre Anwendungen gesehen, die ihre Datenbankarbeit mit einem extern zu installierenden mysql erledigen.
Mfg
Medice

Wir in Bayern brauchen keine Opposition, weil wir sind schon Demokraten. (c) Gerhard Polt
medice
Advanced Power-User
Advanced Power-User
 
Beiträge: 3283
Registriert: Fr 13 Mai, 2005 10:32
Wohnort: Graz

Beitragvon FTH » Fr 17 Mär, 2006 14:04

Hallo

Meines Wissens nach unterliegen auch die Datenbanktreiber (jdbc, odbc, usw...) der selben Lizenz wie MySQL selbst. Und ohne die Treiber wird man ja schwer auf die Datenbank zugreifen können, und wenn man Sie verwendet muss amn sich eben an die Lizenzen halten.

Aber wie schon weiter oben geschrieben, für MySQL gibt es 2 Lizenzen (GPL und eine kommerzielle), näheres aber auf http://www.mysql.de
FTH
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 35
Registriert: Mi 25 Jan, 2006 10:10
Wohnort: Weiz

Beitragvon Neptunus » Fr 17 Mär, 2006 14:46

Ich habe gerade von MYSQL AB Informationen zur Lizenzierung gefunden.

Dort heißt es uA:

Eine Lizenz wird benötigt:

*

Wenn Sie ein Programm, das nicht freie Software ist, mit Code des MySQL-Servers oder der Client-Programme verbinden, die den GPL-Copyrights unterliegen. Das ist zum Beispiel der Fall, wenn Sie MySQL als eingebetteten Server (Embedded Server) in Ihren Applikationen benutzen, oder wenn Sie dem MySQL-Server Erweiterungen hinzufügen, die nicht freie Software sind. In diesen Fällen würden Ihre Applikation bzw. Ihr Code ebenfalls GPL werden, weil die GPL in solchen Fällen wie ein Virus wirkt. Sie können dieses Problem vermeiden, wenn Sie den MySQL-Server mit einer kommerziellen Lizenz von MySQL AB erwerben. Siehe http://www.gnu.org/copyleft/gpl-faq.html.
*

Wenn Sie eine kommerzielle Applikation haben, die NUR mit MySQL funktioniert, und wenn Sie die Applikation zusammen mit dem MySQL-Server ausliefern. Wir betrachten so etwas als Einbindung, selbst wenn es über das Netzwerk geschieht.
*

Wenn Sie eine Distribution von MySQL besitzen und nicht den Quelltext für Ihre Kopie des MySQL-Servers zur Verfügung stellen, so wie es in der GPL-Lizenz festgelegt ist.


http://dev.mysql.com/doc/refman/4.0/de/ ... litik.html

Wenn ich das richtig verstehe, ist es nicht nötig Lizenzgebühren zu bezahlen, wenn man eine closed source Applikation zusammen mit einem MySQL-Server ausliefert ABER die Applikation auch mit anderen Datenbanken funktionieren würde.
Neptunus
Board-User Level 1
Board-User Level 1
 
Beiträge: 691
Registriert: Do 26 Jun, 2003 16:43

Beitragvon radditz » Fr 17 Mär, 2006 18:03

hm, das ist für die Version 4 gültig.
Ich verwende allerdings Version 5.
Außerdem sagt mir das noch immer nicht, ob ich dafür die Sourcen ausliefern muss oder nicht.
Zusätzlich stellt sich die Frage der Definition "die NUR mit MySQL funktioniert".
Meine Anwendung würde wahrscheinlich auch mit anderen Servern funktionieren (Oracle, MS SQL Server, PostgreSQL), aber ich werde dafür keinen Support einbauen. In JDBC wäre es so oder so drin.
Telematica DSL Solo Pro 30 Mbit/s
Vorher: A1 VDSL 16 Mbit/s
radditz
Ultimate Power-User
Ultimate Power-User
 
Beiträge: 4391
Registriert: Mo 23 Jun, 2003 16:50

Beitragvon radditz » Sa 18 Mär, 2006 19:23

Hui
also getestet hab ich es mit einer MySQL 5 Datenbank auf meinem Laptop (Windows XP, Pentium M 1.5 GHZ, 512 MB DDR-RAm)
Engine: MyISAM
Leistungsfähigkeit der Datenbank:
~3000 Inserts pro Sekunde, wobei ich nicht weiß, warum nicht mehr drin war

mit 1000 Inserts pro Sekunde gibt es absolut keine Probleme, CPU Last ca. 10 %
Dann hab ich einfach ein paar clients gemacht, die regelmäßig Daten abgefragt haben.
Ich war dann so bei ca. 30000 Zeilen (verteilt auf mehrere Clients) pro Sekunde, als der Server die 100 % CPU-Last gebraucht hat.
Anzahl der eingefügten Datensätze insgesamt: 1.5 Millionen.
Telematica DSL Solo Pro 30 Mbit/s
Vorher: A1 VDSL 16 Mbit/s
radditz
Ultimate Power-User
Ultimate Power-User
 
Beiträge: 4391
Registriert: Mo 23 Jun, 2003 16:50


Zurück zu MySQL

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast