Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 94 reacties
Bron: eWeek

eWeek heeft onderzoek gedaan naar de performance van vijf grote databaseservers in een Windows 2000 omgeving. Het testveld bestond uit IBM DB2 7.2 met FixPack 5, Microsoft SQL Server 2000 Enterprise Edition met Service Pack 2, MySQL 4.0.1 Max, Oracle9i Enterprise Edition 9.0.1.1.1 en Sybase ASE (Adaptive Server Enterprise) 12.5.0.1. PostgreSQL deed niet mee wegens het ontbreken van een Win32 port. De genoemde databases werden getest onder Windows 2000 Advanced Server SP2 op een quad Xeon 700MHz met 2GB RAM en 24 10.000rpm Ultra160 SCSI schijven. De database load werd gesimuleerd door vanaf twee HP NetServer machines met zes processors, 4GB RAM en gigabit ethernet een bookstore applicatie te draaien op de WebLogic applicatieserver van BEA Systems. De connectie met de database verliep middels JDBC (Java Database Connectivity). Naar eigen zeggen is dit de eerste keer dat een dergelijk grootschalig onderzoek heeft plaatsgevonden sinds PC Magazine een vergelijkbare test deed in oktober 1993.

Database server logo's (MySQL, SQL Server, DB2, Sybase & Oracle)

Teneinde tot een betrouwbaar en eerlijk resultaat te komen, werd getracht om alle databaseservers optimaal te tunen. Hierbij kreeg eWeek onsite support van MySQL AB en Sybase technici. Microsoft en Oracle weigerden hun medewerking te verlenen en IBM gaf ondersteuning via email. Gemiddeld bleek een getunede database ongeveer twee keer zo snel te zijn als dezelfde software met de standaard instellingen. Eťn van de vereisten van de benchmark was support voor transacties. MySQL AB maakte hierbij optimaal gebruik van de mogelijkheden van MySQL om gebruik te maken van verschillende geÔntegreerde database engines. Zo werd InnoDB gebruikt voor de tabellen die ondersteuning voor transacties vereisten en het lichtere MyISAM tabel-type voor tabellen waarbij geen transacties noodzakelijk waren.

Uiteindelijk bleken Oracle 9i en MySQL 4.0.1 de beste performance te bieden, zowel wat betreft de throughput die de applicatieservers konden genereren als in de response tijden. MySQL en Oracle bereikten beide maximaal 600 pagina's per seconde bij 700 tot 1000 gelijktijdige users. Sybase presteerde vergelijkbaar met Oracle en MySQL tot op het punt waarop de grens van 600 gelijktijdige users werd bereikt. Bij meer users kon de server niet verder schalen dan 500 pagina's per seconde. IBM's DB2 viel terug in performance zodra de grens van 600 users werd bereikt. Daarbij viel de performance terug van 500 tot 200 pagina's per seconde. SQL Server kwam niet verder dan 200 pagina's per seconde.

eWeek database server throughput resultaten

De gebruikte JDBC drivers bleken van grote invloed op de performance. eWeek herschreef de benchmark in ASP .Net en bracht SQL Server met de OLE DB driver van Microsoft tot een performance van 900 pagina's per seconde en een bijna perfecte schaalbaarheid. De prestaties zijn dus aanmerkelijk beter dan in de Java omgeving. Dit geeft aan dat de resultaten van benchmarks niet representatief zijn voor andere applicatie omgevingen zoals PHP. Ook is het denkbaar dat de databases op dezelfde hardware optimaler presteren onder een ander besturingsysteem zoals bijvoorbeeld Linux.

De goede performance van MySQL 4.0.1 was voor een belangrijk deel toe te schrijven aan de nieuwe query cache die in 4.0.1 werd geÔntroduceerd. De query cache kan identieke queries direct vanuit geheugen beantwoorden mits de inhoud van de betreffende tabellen niet is gewijzigd sinds de laatste keer dat de query werd uitgevoerd. Versie 4.0.1 heeft overigens nog de alpha status.

Het artikel van eWeek kun je hier nalezen. Met dank aan drizze voor het geven van de tip.

Lees meer over

Gerelateerde content

Alle gerelateerde content (28)
Moderatie-faq Wijzig weergave

Reacties (94)

Ik vind het wel jammer dat ze niet ook andere platformen hebben getest. Bijvoorbeeld Linux (ik ken geen andere UNIX die goed op die machine draait, SCO misschien).
Dan kun je meteen PostgreSQL meenemen, alleen MSSQL doet het dan niet natuurlijk. Dat zou nou nog eens interessant zijn. Ik kan me voorstellen dat MySQL nog harder gaat in een UNIX omgeving....

Een gemiste kans IMHO...
Bijvoorbeeld Linux (ik ken geen andere UNIX die goed op die machine draait, SCO misschien).
Wat dacht je van FreeBSD?

Hoewel je post zeker een goed punt bespreekt, vind ik het behoorlijk kortzichtig om Linux als enige Unix te beschouwen die goed op zo'n zware machine draait.

Op welk OS draait ook alweer de grootste single machine ftp-server (ftp.cdrom.com) ? FreeBSD.

Als er ťťn systeem geschikt is om een vergelijkende database-test te doen met Windows 2000 (dus dan kun je van een database pakket ook het functioneren onder verschillende platforms vergelijken) is dat wel FreeBSD.
De SMP performance is onder FreeBSD nog lang niet optimaal. Ik denk dat de performance op een 4-way systeem zoals gebruikt door eWeek behoorlijk zal tegenvallen. MySQL kan onder FreeBSD niet eens gebruik maken van meerdere processors.
FreeBSD heeft belabberde SMP support, Linux is dar veel beter in (en dat si wel handig op een quad bak). Verder is het volgens mij zo dat die grote commerciŽle databases goed op Linux ondersteund worden (Oracle iig, maar Sybase ook dacht ik).
Daarom lijkt FreeBSD me minder geschikt voor zulke taken. Misschien vanaf versie 5, maar momenteel nog niet.
Mooie test, interessant. Jammer dat er geen MySQL 3.x is meegetest voor het contrast. Het verschil tussen MySQL 3 en 4 moet echt enorm zijn als ik dit zo zie.
De gebruikte JDBC drivers bleken van grote invloed op de performance. eWeek herschreef de benchmark in ASP .Net en bracht SQL Server met de OLE DB driver van Microsoft tot een performance van 900 pagina's per seconde en een bijna perfecte schaalbaarheid.
Er zullen in de online pers (slashdot enzo) wel weer hele volksstammen zijn die dit detail voor het gemak even over het hoofd zien. Da's altijd weer erg jammer.
PostgreSQL ontbreekt helaas in het rijtje.
Van de Postgres server is geen Win32 versie, dus op zich was dit te verwachten. :)
Er zullen in de online pers (slashdot enzo) wel weer hele volksstammen zijn die dit detail voor het gemak even over het hoofd zien. Da's altijd weer erg jammer.
Er staat ook nergens hoe de andere DBMS-en zich gedragen icm ASP of een andere taal dan Java.
De hele opmerking dat MS SQL server wel een hoge performance haalt als er geen gebruik gemaak word van het (relatief trage) Java is dus totaal overbodig en lijkt me eerder een poging om toch nog MS's programmatuur op te hemelen.
Juist niet.. dat geeft juist aan dat het erg afhankelijk is van je omgeving welke DB je gaat gebruiken en dat er dus een knelpunt is met MSQL en Jdb maar dat wisten we al
Hoe weet je nou dat hetzelfde knelpunt niet ook met de andere DBs optreed?
Uhm..... lijkt me beetje overbodig:
PostgreSQL ontbreekt helaas in het rijtje.
Van de Postgres server is geen Win32 versie, dus op zich was dit te verwachten. :)
In het artikel staat nl.:
PostgreSQL deed niet mee wegens het ontbreken van een Win32 port.
;)
Dat is later toegevoegd na de opmerking van Barend :) .
De query cache kan identieke queries direct vanuit geheugen beantwoorden mits de inhoud van de betreffende tabellen niet is gewijzigd sinds de laatste keer dat de query werd uitgevoerd.

Poe, ik heb een behoorlijke tijd als DBadmin achter de rug (MSSQL) en nog nooit software gebouwd/gezien op DB connecties die EN ongewijzigde tabellen houd, EN de volgende query die je erop afvuurt identiek is.

Bovendien, is dit nu zo bijzonder ? Je eigen software weet wanneer het terugkerende query's doet / moet doen en je kunt in MSSQL gewoon aan de DB 'vragen' of een tabel gewijzigd is, nee ? Ga dan met je oude recordset verder.

No Flame intended ... maar kan iemand mij vertellen wat hier het enerverende aan is ... ? :?
De pagina die je zojuist opvroeg om dit te lezen wordt door allemaal onafhankelijke php "programma's" gegenereerd.
Die geen communicatie met elkaar hebben etc. Dus ook niet van elkaar weten of een tabel gewijzigd is of niet.

Als er dan 50x dezelfde query wordt uitgevoerd alvorens iemand een reactie plaats kan je de gelijk het antwoord retourneren.

Er zijn ook zat redenen te bedenken het niet te implementeren en het is ook echt niet uniek, misschien wel op een (redelijk) unieke manier toegepast.
No Flame intended ... maar kan iemand mij vertellen wat hier het enerverende aan is ... ?
Nou, als het de performance met 1/3 verbeterd zoals eWeek suggereert dan vind ik het wel een prettige feature. Bij websites (vooral die met relatief statische content) kan de query cache goed van pas komen.

Je kunt het disablen als je wilt (bespaard een kleine overhead) of per query definiŽren of de query gecached mag worden.
Die query cache heeft wel degelijk een grote invloed. En ik kan hierover ook uit ervaring spreken. Het merendeel van database benaderingen zijn retrievals en geen mutaties. Het komt dus erg vaak voor dat dezelfde query wordt losgelaten op een database terwijl de tabellen NIET veranderd zijn.

Het is trouwens wel leuk om te vertellen dat ik recentelijk wat heb getest met een nieuw database product van een bedrijf genaamd TimesTen. Dit is een zgn. "in-memory" database. De naam TimesTen is gekozen omdat ze beweren 10 keer zo snel te zijn als Oracle 9i. Uit wat testen die wij hebben gedraaid lijkt dit meer 6-8 keer sneller te zijn (en dat met erg grote transactie volumes). Ik vraag me af hoelang het duurt voordat deze technology door MS, Oracle of IBM wordt opgekocht.....
Deze testen zeggen mij dus helemaal niks. Wat ik zou willen zien, is een test waar elke database, in een voor hun, door de fabrikant aanbevolen, meest optimale configuratie wordt getest. Dus bv SQL-server met Windows met asp en .NET, MySQL met Linux/UNIX en php enz. Dit is meer werk, maar 1) is het dichts bij een real-world situatie en 2) laat veel beter zien waar de verschillende databases onderling toe instaat zijn. Tevens zou dan ook getest moeten worden met verschillende soorten loads/queries.

Iets voor t-net? :)
Zo ga je de spreekwoordelijke appels met peren vergelijken. JDBC streeft naar platformonafhankelijkheid, MS meer naar een monopoly.

Nu is deze stelling ook weer discutabel, maargoed
Platform onafhankelijkheid is wel het laatste waar je in geinteresseerd bent als je een database gaat bouwen. Je weet wat je nodig hebt, vervolgens zoek je daar de beste database voor uit, en daar komt dan een platform uitrollen. Vervolgens wil je die zo optimaal mogelijk instellen. Of dat nou MS is met asp en .net, of UNIX en php, maakt niet zoveel meer uit. Uiteraard ligt het platform soms/vaak al vast, maar dan zoek je dus de beste db oplossing voor jou platform. Of met sommige applicaties ligt de database vast, en zoek je dus het beste platform voor die database. Het gaat met databases om performance, niet of dat jou database applicatie op 80 verschillende omgevingen kan draaien.
Je bouwt zelden een database op zich. Je bouwt een applicatie, en die bevraagt de database. In de test van eweek gebruikt men een java applicatie server. Java is platform onafhankelijk.
Dat is meteen ook de situatie die je constant zal tegenkomen op de markt. Een bedrijf maakt een commercieel product, maar om een groter marktsegment te kunnen bespelen wordt de applicatie kant in Java (of derivaten ervan) gemaakt.
De keuze voor welke database server zal worden gebruikt is meestal rap gemaakt. Maar op welk onderliggend platform dat boeltje dan moet draaien, dat laten soft makers graag "in het midden".
Hmm valt me op dat niemand geld in overweging neemt. Alleen grote bedrijven hebben geld voor een MS SQL/Oracle licentie. MySQL/PHP/Linux zijn alle 3 volledig gratis en kosten je MISSCHIEN iets meer aan manuren. Die manuren gaan echter nooit of te nimmer opwegen tegen de licentie kosten. Veel kleine bedrijfjes, die nou ivm concurrentie toch aan internet zullen moeten geloven hebben gewoon het geld niet voor MS oplossingen.
Die heet TPC-C, geloof ik :-)
Als jij mij een Quad Xeon sponsort en 2 HP Netserver's wil ik ook wel testen hoor :9~ Ik denk nl. dat m'n huidige server p166 (linux) niet interessant genoeg is :P
Ik vind het jammer dat Progress RDBMS niet meedoet. Dit bedrijf heeft toch 40% van de markt van embedded database-systemen in handen...
Is daar dan een JDBC driver voor ? ... progress is meestal niet zo snel met dat soort dingen.
Jazeker, al een tijdje zelfs. Vanaf versie 9 heeft ProgressRDBMS ook een native JDBC driver.
Maar snelheid is volgens mij niet het allersterkste punt van Progress, schaalbaarheid en TCO wel.

Hier staat trouwens nog een aardig artikel over een vergelijking qua TCO tussen Oracle, Progress en MS-SQL.
Mooie test.

Verbazend.

Om eerlijk te zijn had ik MySQL niet als beste uit de test verwacht, maar zeker een mooie prestatie, verandert toch mijn gedachten over MySQL.
De gebruikte JDBC drivers bleken van grote invloed op de performance. eWeek herschreef de benchmark in ASP .Net en bracht SQL Server met de OLE DB driver van Microsoft tot een performance van 900 pagina's per seconde en een bijna perfecte schaalbaarheid.
De belangrijkste zin uit het hele artikel.

Ik neem aan dat iedere developer gebruik maakt van zijn DB server op de software die daar bij hoort, en je kan natuurlijk om je klompen aanvoelen dat JDBC en MS niet samen gaan. Tis dus weer een kwestie van je eigen ontwikkelomgeving inrichten naar eigen doeleinden en zo de beste performance halen.

Ik denk dat als je een MS-SQL server op een MS systeem draait met MS technieken dat deze er een stuk sneller uitkomt.

En als je MySQL op Linux draait met technieken die voor MySQL het snelst werken dat je nog hogere scores kunt krijgen.
Dat bewijst toch maar weer dat vrije software niet altijd slechter is als commerciele software.

MySQL is de winnaar en het is toch gratis en open source. De snelste server draaien, legaal en dat zonder een cent te betalen. Fantastisch toch?
PostgreSQL deed niet mee wegens het ontbreken van een Win32 port.
Postgresql is wel geport naar windows32. Met cygwin draait het uitstekend en is er eindelijk een degelijke SQL database die niet je (ontwikkel) machine plattrekt beschikbaar voor Windows en tevens ook nog eens gratis is.

edit:

Mocht je Postgresql willen draaien op je windows bak dan is dit een handige link:

http://www.ejip.net/faq/postgresql_win_setup_faq.jsp

Daar dacht ik ook wel aan, maar houdt cygwin de performance niet ergens tegen? en zou je dan misschien een totaal verkeerde score zien voor postgres?
MySql begint eindelijk echt terrein te winnen
Vooral dat het boven SQL server 2000 uitkomt is zeer positief..

SQL server betaal je je scheel aan de licencies voor die hoeveelheid gebruikers.

Heb op m'n stage onderzoek gedaan of MySQL eventueel als alternatief gebruikt kon worden voor SQL Server.. maar het bleek dat MySQL een paar zeer belangrijke opties misten :(
Ik heb sterke vraagtekens bij dit soort testen immers het is niet eens mogelijk zaken als subselects te testen op mysql, dat zijn juist de queries waar je met de betere databases je winst haalt.
"het is niet eens mogelijk zaken als subselects te testen op mysql, dat zijn juist de queries waar je met de betere databases je winst haalt"
dit is paradoxaal (een goeie database en subselects).

Met een "join" statement kom je er ook, en is in feite veel krachtiger en effectiever dan een subselect middels "in". Met een "in" statement heb je onnodige memory overhead, met een "join" laat je optimalisatie op indices over aan de sql parser en je database structuur.
Hoewel subselects natuurlijk wel heel makkelijk kunnen zijn, wat dat betreft heb je gelijk dat mysql in het nadeel is...
Uhm ik ben zelf database engineer en er zijn wel degelijk situaties waar je niet onder subselects uitkomt, overigens kan je in het geval van veel joins beter nog een indexed view of een stored procedure maken, ook al 2 zaken die op dit moment nog niet geimplementeerd zijn in MySql.
maar het bleek dat MySQL een paar zeer belangrijke opties misten
dat ben ik ook al eens tegengekomen ja, maar ik heb zo'n vermoeden dat de 4.x serie dat verlanglijstje aan gort komt schieten. ik heb eens ziten lezen wat ze allemaal in 4.x willen doen, en da's niet misselijk, daarmee gaan ze zeker Oracle en MS onderuit halen op die markt.

leuk feitje is al:
NASA (die ja), is overgestapt van Oracle naar MySQL (hele tijd geleden al) voor een flink aantal dingen.... what's next? MySQL in space? :)
MySQL 4 krijgt uiteindelijk alles wat je hebben wilt: foreign key constraints, subselects, fail-safe replication, online backup, verbeterde fulltext search, stored procudures en meer. Transactions en row-level locking zijn al mogelijk sinds MySQL 3.23.36 via InnoDB.

Meer informatie over MySQL 4 vind je hier: http://www.mysql.com/documentation/mysql/bychapter/manual_Introduction .html#MySQL_4.0_In_A_Nutshell .
Met JDBC ja, niet met ASP.Net dus, vrij logisch aangezien JDBC niet echt voor SQL 2000 de ideale connector is.
Je bedoelt zeker ADO.NET?
ben wel geinteresseerd in dat onderzoek van je. ik ben namelijk ook bezig met een technisch onderzoek naar o.a. databases voor school.

w. <wdekorte@hotmail.com>
Als je het dus goed bekijkt is MS-SQL server de snelste van allemaal. :)
Hoeft niet. MS SQL is getest op zijn optimale platform (win2k)

Als je MySQL op Linux test zul je ongetwijfeld ook hogere scores krijgen.

Bovendien pint M$ haar klanten weer vast door ze (redelijkerwijs) te dwingen ASP en straks .NET te gebruiken ipv. een open standaard based connector.
Past mooi in de marketing strategie van M$.

Eigenlijk moet je elk product testen in de omgeving waar het het beste loopt. Dan pas weet je welke oplossing het beste is.

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True