Voorop gesteld, ik zou postgresql kiezen boven mysql waar ik de keus zelf kan maken en die niet af te leiden is uit andere requirements.
Verwijderd schreef op 24 november 2002 @ 02:43:
Okee dan.
Postgres is snel. Dat weet ik uit eigen ervaring, en ik heb een aantal artikelen gelezen die het afzetten tegen MySQL en MS-SQL (maar over die laatste wil ik het geeneens hebben) waarbij Postgres de andere dbmsen er vet uit benchmarkte.
En er zijn ook zat benchmarks waar Postgresql vet verliest, als je belangrijkste queries simpele selects op indices zijn (een forum bijv) dan komt Postgresql er niet zo mooi meer uit.
Als je bepaalde requirements hebt als goed werkende relational integrity dan is postgresql ineens een stuk betere keus. En als je het met andere OS concurrenten vergelijkt hou je alleen SAPdb en Firebird over. De eerste ken ik niet, maar is volgens zeggen vrij snel, de tweede heb ik een paar keer getest en was bij alle queries slomer dan postgresql (meen ik) zelfs als je geavanceerdere indices ging toepassen (wat bij postgres ook kan).
Wat opvallend is, omdat zoals gezegd MySQL geeneens foreign keys heeft of subqueries kan, dus door die minder overhead Postgres er natuurlijk uit zou moeten trekken. Maar dat doet het niet,
Hoevaak heb _jij_ zelf een serieuze vergelijking tussen postgres en mysql gedaan? Ik een aantal keer en daarbij won mysql alle "simpele" queries zeer royaal. De moeilijkere queries (een paar lastigere joins erin oid) won postgres het mee, omdat het daar goedkoper is een uitgebreider executieplan te bouwen en dat kan mysql niet.
De standaard planner van mysql is echter weer wel beter dan de "simpele" planner van postgres (wat performance betreft).
Echter kan je sowieso al niet direct 1-1 queries op de ene vs de andere vergelijken. Dan gebruik je niet perse de meest optimale keuzes voor de ene vs de andere (oa subselects in postgres, of functional indices).
het is echt een "my first database", en de reden dat het zo populair is, is dat het om historische redenen een soort lievelingskindje van de open source gemeenschap is geworden.
Ik erger me regelmatig kapot aan dingen van mysql, maar om het nou _zo_ denigrerend te behandelen is bullshit.
Postgres had daarbovenop tot begin 2001 een aantal zwaarwegende beperkingen (8k row limit etc.) die nu lang en breed opgeheven zijn.
Postgresql was vooral daardoor niet bijster bruikbaar voor een forum. Maar er zijn nog steeds nadelen die het minder goed kunnen maken. Voornamelijk het niet automatisch vacuumen (multi version control) en het daarmee gepaard gaande ruimte verlies als je niet vaak genoeg vacuumed (en het performance verlies als je dat te vaak doet).
Ik heb een simpel tabelletje met 60+1 entries en deed daarop elke 5 minuten een update (op een van die 60 en dan die ene). Daarmee zou het in principe een mini-database moeten zijn en blijven. Ik was vergeten dat te vacuumen en daardoor waren er in een paar maanden tijd iets van 38000 records die "in gebruik" waren... Dat is natuurlijk bij grote databases nog veel erger, zeker als er veel updates, deletes en inserts plaatsvinden.
Verder zeg ik dit omdat Postgres een uitgebreid stored procedure systeem heeft (iets waar mysql nog geeneens van kan dromen) waarin je zelfs je eigen taal kunt toevoegen als taal waarin stored procedures geschreven kunnen worden.
Das idd een leuke feature, maar ik vind het nog niet _zo_ handig werken, vooral de triggers niet trouwens.
Met die stored procedures kun je een database zo uitgebreid als je wil customisen, optimisen en tunen voor een bepaalde applicatie, om die bijvoorbeeld zo veilig of snel mogelijk te maken. Heeft meneer zijn performance zonder dat hij zelf een sql parser hoeft te schrijven.
Er zijn grensen natuurlijk en het is zeer wel mogelijk dat een FS-based systeem vele malen sneller is dan een db-based systeem.
Kortom, je mag Postgresql een goed systeem vinden, het is imho zelfs een goed systeem. Maar pas op dat je het niet _te_ ophemelt.
Niet op een bruikbare manier imho

OlafvdSpek schreef op 24 november 2002 @ 15:49:
Ik had gedacht dat er wel een 100 mbit/s of zelfs een 1 gbit/s link tussen zat. De forum page gaat trouwens niet over die link, alleen de queries en query results. Maar vergeleken met RAM (16 gbit/s) blijft het langzaam. Behalve de bandbreedte is ook de latency natuurlijk belangrijk.
Maar een database kan nog steeds ook lokaal gebruikt worden. Er wordt nergens geeist dat dat een aparte machine is.
OlafvdSpek schreef op 24 november 2002 @ 16:42:
Met deze code wordt een file gemapped. Daarna kun je via pointers de data benaderen. Het uitvoeren van deze code kost zelfs voor 1 gb files nog geen ms. De data wordt gecached door het OS. De data wordt niet eens via 'memcpy' binnen het RAM verplaatst.
goh en hoe zal het DBMS de files benaderen?

Vast via allerlei kostbare operaties of niet?

MySQL is ook maar ms bezig om een compleet topic uit de GoT db op te zoeken en te serveren.
Het prototype dat ik heb kan binnen 90 s 1000 pagina's (605 mb totaal) genereren met elk 1000 random geselecteerde berichten (en bijbehorende user name) (uit > 50000 users, 1000000 messages).
En het kan binnen 53 s als je die 1000 pagina's in een enkel bestand zet.
1000 random berichten is zinloos. Je zal ze voornamelijk op topic-basis pakken en dan moet je dus random topicid's nemen en daarbij de message van 1 pagina trekken (of gewoon allemaal).
Vergeet niet dat je dan nog een erg synthetische test hebt.
Zijn er performance stats van GoT beschikbaar?
Je kan onderaan de pagina de witte tekst selecteren, de DB tijd is in sec. de tijd die er in totaal voor de DB (en de communicatie) nodig was voor die pagina.