©
. Document créé le 16 décembre 2010 , mis à jour le 16 décembre 2010.Ce qui est simple est toujours faux. Ce qui ne l'est pas est inutilisable. Paul Valéry (Mauvaises pensées)
Accueil du site > Astuces > Unix > Comparatif accès serveur base de données
Résultat d’un test comparatif, un peu basique il est vrai :
Pour deux Dedibox
A priori, globalement, en ce qui concerne les accès à la base MySQL via Apache/PHP, Dedibox XL est deux fois plus rapide que Dedibox V3.
La chose reste complexe à vérifier :
Rappel : le bench tente ici de mesurer l’accès MySQL, uniquement.
Reste à voir peut-être l’optimisation des caches MySQL ? Une recherche avec Google sur les mots-clés tuning, mysql et autres donne des résultats intéressants. Notamment un script tuning-primer.sh, mais qu’il faut utiliser après un certain rodage du serveur.
Le résultat est donné ici à titre d’information. L’ensemble est probablement à refaire, vu le protocole de test mis en place quelque peu léger.
Ce script de test ne fait qu’accéder en lecture à la base, et lit une table CHARACTER_SETS commune à toutes les installations, de taille identique. Il effectue ensuite un bench via la fonction MySQL benchmark() :
<?php
// b_sql.php
// petit bench sql
// - calcul via fonction benchmark mysql
// - lecture table
// http://www.quesaco.org
// login compte SQL
$login_db = 'root';
// mot de passe du compte SQL
$passw_db = 'METTRE_ICI_VOTRE_MOT_DE_PASSE';
$uname = posix_uname();
define('_BR_', '<br />');
$date_test = date('r');
echo(
'<pre>' . PHP_EOL
. $uname['sysname'].' '
//. $uname['nodename'].' '.
. $uname['release'].' '
//. $uname['version'].' '.
. $uname['machine'] . '<br />' . PHP_EOL
. 'Realisation date : '.$date_test._BR_
. _BR_ . PHP_EOL
. '<table border="1">'
. '<tr>'
. '<th>nb. requests</th>'
. '<th>sel. base</th>'
. '<th>sel. data</th>'
. '<th>total</th>'
. '</tr>' . PHP_EOL
);
// la 1' req est doublonnee pour reveiller les green
foreach(array(1, 1, 10, 100) as $nb_requests)
{
// connexion db
$time_start = microtime(true);
$link_id = mysql_connect('localhost', $login_db, $passw_db);
if(!$link_id) {
die('Connexion base : ' . mysql_error());
}
// selection base
$time_sel_base = microtime(true);
if(!mysql_select_db('information_schema', $link_id))
{
die(' Selection base : ' . mysql_error());
}
// les req de lecture
for($done = 0; $done < $nb_requests; $done++)
{
$sql_result = mysql_query('select * from CHARACTER_SETS', $link_id);
if(!$sql_result){
$nb_requests--;
break;
}
mysql_free_result($sql_result);
}
// fin du job
$time_end = microtime(true);
$msg = ($done != $nb_requests) ? $done.'/'.$nb_requests : $nb_requests;
$select_duration = $time_sel_base - $time_start;
$loops_duration = $time_end - $time_sel_base;
$total = $select_duration + $loops_duration;
echo(
'<tr>'
. '<td>'.$msg.'</td>'
. '<td>'.$select_duration.'</td>'
. '<td>'.$loops_duration.'</td>'
. '<td>'.$total.'</td>'
. '</tr>' . PHP_EOL
);
mysql_close($link_id);
}
echo('</table>'.PHP_EOL);
// complète par la version mysql
$sql_result = mysql_query('select version() as v');
$sql_result = mysql_fetch_object($sql_result);
$mysql_version = $sql_result->v;
echo('mysql version : '.$mysql_version._BR_._BR_);
// et la fonction benchmark
// (via PHP + réseau ....)
$link_id = mysql_connect('localhost', $login_db, $passw_db);
$time_start = microtime(true);
$sql_result = mysql_query('SELECT benchmark(100000000,1+2)');
$time_end = microtime(true);
mysql_close($link_id);
echo('mysql benchmark: '.($time_end - $time_start)._BR_._BR_);
echo(
'</pre>' . PHP_EOL
);
?>
FreeBSD 8.1-RELEASE amd64Realisation date : Thu, 16 Dec 2010 14:23:11 +0100
nb. requests | sel. base | sel. data | total |
---|---|---|---|
1 | 0.0092570781707764 | 0.0016849040985107 | 0.010941982269287 |
1 | 0.00052499771118164 | 0.00048017501831055 | 0.0010051727294922 |
10 | 0.0004270076751709 | 0.0030250549316406 | 0.0034520626068115 |
100 | 0.00036501884460449 | 0.028898954391479 | 0.029263973236084 |
mysql benchmark : 4.4449481964111
FreeBSD 7.0-RELEASE-p11 i386
Realisation date : Thu, 16 Dec 2010 14:22:48 +0100
nb. requests | sel. base | sel. data | total |
---|---|---|---|
1 | 0.00023698806762695 | 0.00033092498779297 | 0.00056791305541992 |
1 | 0.00017905235290527 | 0.00024199485778809 | 0.00042104721069336 |
10 | 0.00014019012451172 | 0.0017678737640381 | 0.0019080638885498 |
100 | 0.00012707710266113 | 0.016811847686768 | 0.016938924789429 |
mysql benchmark : 3.6542708873749
Les forums sont fermés.