Ik ben van plan een db op te zetten waar op een gegeven moment enkele miljoenen records in kunnen komen te staan (voornamelijk numeriek en decimaal)
Wat voor type db kan ik hier het beste voor kiezen? Tot nu toe gebruikte ik eigenlijk altijd MyIsam. Maar ik heb Frank ooit een keer horen zeggen dat die niet zo betrouwbaar is en hij liever InnoDB gebruikt.
Maar als ik die probeer aan te maken maakt hij er automatisch weer MyIsam van?
Kortom, wat is de beste soort db om numerieke en decimale gegevens op te slaan en dat het toch nog redelijk snel is met enkele miljoenen records?
Hoe ziet je datamodel er uit en welke indexen ga je gebruiken? De antwoorden op die 2 vragen hebben enorme invloed op de prestaties en staan dus nog los van de te kiezen database of database-engine.
Trouwens wel vreemd dat je de innoDB-engine van MySQL niet kunt gebruiken. Welke versie van MySQL gebruik je?
En ja, MyISAM zal geen enkele poging doen om jouw data te beschermen, er zit geen enkel verband tussen de diverse tabellen. innoDB doet dit beter, PostgreSQL (maar bv. ook Oracle en DB2) doen dit nog vele malen beter.
Tip: Ga gewoon eens testen met dummy-data, dan kun je zelf zien wat de snelste oplossing is. En bedenk eens wat de gevolgen zijn als jouw database corrupt raakt. Hoeveel geld en/of tijd gaat het je kosten om de boel te herstellen.
MySQL 4.1 heeft geen enkel probleem met innoDB, dat mag dus geen probleem zijn. Wellicht heb je een probleem met PHPMyAdmin en lijkt het alsof je geen innoDB kunt gebruiken. Maak de tabel eens aan zonder PMA, maar gewoon met SQL in een php-script. Zie de handleiding voor de juiste notatie.
ik heb even gauw een php script hiervoor in elkaar gedraaid
<?php
$query = "CREATE TABLE test (
id int(11) NOT NULL auto_increment,
PRIMARY KEY (id)
) ENGINE=InnoDB";
$result = mysql_query($query) or die (mysql_error());
?>
alleen wanneer ik dit doe en ik open daarna phpmyadmin, dan staat er bij type toch weer MyIsam.
Voorheen deed ik het via het sql vak van phpmyadmin
Wat PMA roept, is niet zo interessant. Wat zegt de database zelf? Gebruik ook hiervoor een stukje SQL waarmee je de eigenschappen van de tabel opvraagd.
als ik deze query uitvoer (DESCRIBE tabel), dan zegt hij dat de tabel niet bestaat, maar in phpmyadmin zie ik hem wel alhoewel hij daar met MyIsam staat.
script:
<?php
$query = "DESCRIBE test";
$result = mysql_query($query) or die (mysql_error());
echo($result);
?>
btw, ik weet niet zeker of ik zo ook de goede output krijg, want wist niet hoe ik die moest verwerken, maar op dit moment heb ik dus die fout dat hij de tabel niet kan vinden.