Bekijk Volledige Versie : MySQL of DB2?
The Solution
07/02/06, 10:30
Even een vraagje.
Ik moet een beslissing nemen over welke database we gaan gebruiken voor
een web-applicatie. De database die nu gebruikt wordt is een MySQL 3.23
database. In deze database zit voor ongeveer 9 GB aan data. In een
tabel zitten 11 miljoen records. Er zijn 14 andere tabellen die verder
niet zo heel groot zijn.
Nu vraag ik mij af welke databaseprogramma met een dergelijke
hoeveelheid data de beste performance biedt. Ik mag kiezen tussen een
MySQL-smaakje of een IBM DB2 database. Ik heb erg veel ervaring met
MySQL en ik weet dat die de beste perfomance biedt bij een niet al te
grote database. Ik heb geen ervaring met DB2, maar weet wel dat deze is
gebouwd voor flinke hoeveelheden data.
De query waar het om gaat neemt i.c.m. MySQL nu erg veel CPU tijd in
beslag (15 seconden 90% CPU op een 3 GHz server). Ik kan me voorstellen
dat DB2 daar minder moeite mee heeft, maar harde cijfers hierover zijn
niet te vinden. Benchmarks gaan tot 100.000 records. In dit geval gaat
het om het honderdvoudige. Ook zitten er erg veel joins in. Het
ontbreken van sub-selects in MySQL 3 hebben we ondervangen door gebruik
te maken van temporary tables.
Is er iemand die deze keuze ook ooit heeft moeten maken, en zo ja
waarop is de beslissing uiteindelijk gebaseerd? Zijn er testresultaten
met grote hoeveelheden data tussen de 2 db's te vinden? Met google kom
ik dus niet verder dan wat benchmarks met kleine hoeveelheden data.
De bedoeling is dat de app. straks gebruikt gaat worden door max. 2.000
gebruikers.
Alvast bedankt voor de toelichtingen!
Groeten,
Baris Efe
Erik Hensema
07/02/06, 11:15
On 7 Feb 2006 01:20:25 -0800, The Solution (barise@zonnet.nl) wrote:
> Ik moet een beslissing nemen over welke database we gaan gebruiken voor
> een web-applicatie. De database die nu gebruikt wordt is een MySQL 3.23
> database. In deze database zit voor ongeveer 9 GB aan data. In een
> tabel zitten 11 miljoen records. Er zijn 14 andere tabellen die verder
> niet zo heel groot zijn.
Arme jij.
> Nu vraag ik mij af welke databaseprogramma met een dergelijke
> hoeveelheid data de beste performance biedt. Ik mag kiezen tussen een
> MySQL-smaakje of een IBM DB2 database. Ik heb erg veel ervaring met
> MySQL en ik weet dat die de beste perfomance biedt bij een niet al te
> grote database. Ik heb geen ervaring met DB2, maar weet wel dat deze is
> gebouwd voor flinke hoeveelheden data.
Definieer performance.
- snelheid van losse queries
- snelheid van concurrent queries
- snelheid van concurrent queries terwijl er geschreven wordt in
de db
- betrouwbaarheid van de database:
- crashbestendigheid
- foutbestendigheid
- integriteit van de data op elk moment
> De query waar het om gaat neemt i.c.m. MySQL nu erg veel CPU tijd in
> beslag (15 seconden 90% CPU op een 3 GHz server). Ik kan me voorstellen
> dat DB2 daar minder moeite mee heeft, maar harde cijfers hierover zijn
> niet te vinden. Benchmarks gaan tot 100.000 records. In dit geval gaat
> het om het honderdvoudige. Ook zitten er erg veel joins in. Het
> ontbreken van sub-selects in MySQL 3 hebben we ondervangen door gebruik
> te maken van temporary tables.
Je bent dus al om gebreken in mysql heen aan het hacken.
Wordt er in die tabel geschreven terwijl de je ook eruit leest?
Mysql lockt de complete tabel en alles moet maar op elkaar
wachten. db2 trekt zich er niks van aan.
> Is er iemand die deze keuze ook ooit heeft moeten maken, en zo ja
> waarop is de beslissing uiteindelijk gebaseerd? Zijn er testresultaten
> met grote hoeveelheden data tussen de 2 db's te vinden? Met google kom
> ik dus niet verder dan wat benchmarks met kleine hoeveelheden data.
>
> De bedoeling is dat de app. straks gebruikt gaat worden door max. 2.000
> gebruikers.
mysql kies je over het algemeen om 1 reden: de community er
omheen. Heel veel mensen kennen mysql.
Een andere reden kan zijn is dat de performance van simpele
select-queries goed is. Leuk voor webfora enzo.
Vooral de eerste reden is een hele goede en sterke reden om mysql
te kiezen.
DB2 kies je omdat het goed, schaalbaar en betrouwbaar moet zijn.
Er zitten natuurlijk wel databases tussen mysql en db2, mochten
de kosten van db2 je afschrikken. Een postgresql of een firebird
kunnen ook prima omgaan met je dataset en zijn gratis.
--
Erik Hensema (erik@hensema.net)
Quoting-HOWTO: http://www.leerquoten.nl
Jan Ehrhardt
07/02/06, 12:00
Erik Hensema in nl.internet.www.server-side (Tue, 7 Feb 2006 10:12:55
+0000 (UTC)):
>Er zitten natuurlijk wel databases tussen mysql en db2, mochten
>de kosten van db2 je afschrikken.
IBM heeft nu ook een gratis variant van DB2.
http://www-306.ibm.com/software/data/db2/udb/db2express/download.html
Jan
--
Look, Ma. No tables - http://enbio.steenbergen-stichting.nl/
The Solution
07/02/06, 12:00
Erik Hensema wrote:
> On 7 Feb 2006 01:20:25 -0800, The Solution (barise@zonnet.nl) wrote:
[knip performance blaat]
>
> Definieer performance.
>
> - snelheid van losse queries
> - snelheid van concurrent queries
> - snelheid van concurrent queries terwijl er geschreven wordt in
> de db
> - betrouwbaarheid van de database:
> - crashbestendigheid
> - foutbestendigheid
> - integriteit van de data op elk moment
Op dit moment wordt de app. nog niet intensief gebruikt. Als dat wel
gebeurt zullen er inderdaad zowel concurrent als losse queries op de DB
worden afgevuurd. Er zullen XML-bestanden moeten worden uitgewisseld
(input maar ook output in XML). Integriteit van de data is ook erg
belangrijk. DB2 dus :)
> > De query waar het om gaat neemt i.c.m. MySQL nu erg veel CPU tijd in
> > beslag (15 seconden 90% CPU op een 3 GHz server). Ik kan me voorstellen
> > dat DB2 daar minder moeite mee heeft, maar harde cijfers hierover zijn
> > niet te vinden. Benchmarks gaan tot 100.000 records. In dit geval gaat
> > het om het honderdvoudige. Ook zitten er erg veel joins in. Het
> > ontbreken van sub-selects in MySQL 3 hebben we ondervangen door gebruik
> > te maken van temporary tables.
>
> Je bent dus al om gebreken in mysql heen aan het hacken.
>
> Wordt er in die tabel geschreven terwijl de je ook eruit leest?
Nu nog niet maar dat is bij uitbreiding van de app. (nieuwe modules)
wel de bedoeling.
> Mysql lockt de complete tabel en alles moet maar op elkaar
> wachten. db2 trekt zich er niks van aan.
>
> > Is er iemand die deze keuze ook ooit heeft moeten maken, en zo ja
> > waarop is de beslissing uiteindelijk gebaseerd? Zijn er testresultaten
> > met grote hoeveelheden data tussen de 2 db's te vinden? Met google kom
> > ik dus niet verder dan wat benchmarks met kleine hoeveelheden data.
> >
> > De bedoeling is dat de app. straks gebruikt gaat worden door max. 2.000
> > gebruikers.
>
> mysql kies je over het algemeen om 1 reden: de community er
> omheen. Heel veel mensen kennen mysql.
> Een andere reden kan zijn is dat de performance van simpele
> select-queries goed is. Leuk voor webfora enzo.
>
> Vooral de eerste reden is een hele goede en sterke reden om mysql
> te kiezen.
Klopt een beetje maar niet helemaal, als je kijkt naar bedrijven die
MySQL gebruiken zitten daar hele grote bedrijven tussen. Vandaar ook
mijn vraag. Als MySQL zoveel gebreken heeft, waarom wordt het dan wel
gebruikt door bedrijven als Google, etc.
> DB2 kies je omdat het goed, schaalbaar en betrouwbaar moet zijn.
Dat is me nu duidelijk. Weet je misschien hoe het zit met memory
gebruik door DB2. Wordt er veel overhead gebruikt? Ook tijdens het
afhandelen van select queries, kunnen queries gecached worden?
> Er zitten natuurlijk wel databases tussen mysql en db2, mochten
> de kosten van db2 je afschrikken. Een postgresql of een firebird
> kunnen ook prima omgaan met je dataset en zijn gratis.
De kosten voor de db zijn in principe geen issue. Er is al een DB2
database aanwezig, maar om de app. te porten naar een nieuwe database
kost toch een hoop werk en je weet niet of de performance duidelijk
genoeg verbetert.
In ieder geval bedankt voor je bijdrage.
Groeten,
Baris Efe
---
Geen leuke vakantie gehad?
Maak het bekend op http://www.klotevakantie.nl
Gert van der Kooij
07/02/06, 13:00
En als je kiest voor DB2 en je hebt vragen kun je die altijd stellen
in de nieuwsgroep comp.databases.ibm-db2. Daar lezen diverse
ontwikkelaars uit het DB2 lab mee die je goed kunnen helpen.
The Solution
07/02/06, 13:30
Ik heb maar een afspraak gemaakt met een DB2 DBA. Kan ik hem rustig van
alles vragen :)
The Solution
07/02/06, 13:30
Thanks, die kan ik sowieso wel gebruiken!
Erik Hensema
07/02/06, 14:15
On 7 Feb 2006 02:51:27 -0800, The Solution (barise@zonnet.nl) wrote:
> Erik Hensema wrote:
>> On 7 Feb 2006 01:20:25 -0800, The Solution (barise@zonnet.nl) wrote:
> [knip performance blaat]
>>
>> Definieer performance.
>>
>> - snelheid van losse queries
>> - snelheid van concurrent queries
>> - snelheid van concurrent queries terwijl er geschreven wordt in
>> de db
>> - betrouwbaarheid van de database:
>> - crashbestendigheid
>> - foutbestendigheid
>> - integriteit van de data op elk moment
>
> Op dit moment wordt de app. nog niet intensief gebruikt. Als dat wel
> gebeurt zullen er inderdaad zowel concurrent als losse queries op de DB
> worden afgevuurd. Er zullen XML-bestanden moeten worden uitgewisseld
> (input maar ook output in XML). Integriteit van de data is ook erg
> belangrijk. DB2 dus :)
DB2 heeft ook allemaal XML hipheid. Hoe het precies allemaal
werkt weet ik niet, maar als je met XML werkt is DB2 schijnbaar
erg makkelijk.
[knip]
>> mysql kies je over het algemeen om 1 reden: de community er
>> omheen. Heel veel mensen kennen mysql.
>> Een andere reden kan zijn is dat de performance van simpele
>> select-queries goed is. Leuk voor webfora enzo.
>>
>> Vooral de eerste reden is een hele goede en sterke reden om mysql
>> te kiezen.
>
> Klopt een beetje maar niet helemaal, als je kijkt naar bedrijven die
> MySQL gebruiken zitten daar hele grote bedrijven tussen. Vandaar ook
> mijn vraag. Als MySQL zoveel gebreken heeft, waarom wordt het dan wel
> gebruikt door bedrijven als Google, etc.
Omdat het voor veel toepassingen goed genoeg is (wat niet wil
zeggen dat andere oplossingen niet beter kunnen zijn!). Het is
gewoon een lekkere simpele database waar veel kennis over
beschikbaar is bij veel ontwikkelaars. Dat maakt het tot een
prima keus in veel gevallen.
>> DB2 kies je omdat het goed, schaalbaar en betrouwbaar moet zijn.
>
> Dat is me nu duidelijk. Weet je misschien hoe het zit met memory
> gebruik door DB2. Wordt er veel overhead gebruikt? Ook tijdens het
> afhandelen van select queries, kunnen queries gecached worden?
Een query cache zoals in mysql 4 en hoger is er niet voor zover
ik weet, maar waarschijnlijk wel 'materialized views'. Zeg maar
SELECT queries die zijn opgeslagen in de server, maar ook het
resultaat ervan is opgeslagen.
>> Er zitten natuurlijk wel databases tussen mysql en db2, mochten
>> de kosten van db2 je afschrikken. Een postgresql of een firebird
>> kunnen ook prima omgaan met je dataset en zijn gratis.
>
> De kosten voor de db zijn in principe geen issue. Er is al een DB2
> database aanwezig, maar om de app. te porten naar een nieuwe database
> kost toch een hoop werk en je weet niet of de performance duidelijk
> genoeg verbetert.
Even snel prototypen met wat testdata (liefst kopie van je
huisige database) en perl die queries afvuurt en leuke stats over
timing maakt?
Let er ook op dat DB2 veel meer in de database kan afhandelen dan
mysql. Kortom, als je 1-op-1 je applicatie gaat porten naar db2,
dan maak je waarschijnlijk niet volledig gebruik van de
mogelijkheden van db2, zoals de al genoemde views. Maar denk ook
aan subselects, transacties, stored procedures, enz. Je hebt dus
minder logica nodig op applicatieniveau, iets wat ook helpt in de
performance.
--
Erik Hensema (erik@hensema.net)
Please note that my From: field is spamtrapped.
Gert van der Kooij
07/02/06, 16:00
In article <1139315054.856198.197370@g44g2000cwa.googlegroups. com>,
The Solution (barise@zonnet.nl) says...
> Thanks, die kan ik sowieso wel gebruiken!
>
>
Nog iets wat je waarschijnlijk wel kan gebruiken, de MySQL to DB2
Conversion Guide op
http://www.redbooks.ibm.com/abstracts/SG247093.html
Ook op het DB2 developers domain zijn de nodige white papers e.d. te
vinden, zie http://www-128.ibm.com/developerworks/db2/zones/db2udb/