Test de la solution base de données

Jump to: navigation, search

Test

Un script PHP a été utilisé pour créer une base de données de 30000 logs.

<?php
mysql_connect('host', 'user', 'password');
mysql_select_db('openflyers');

mysql_query('drop table if exists logs');
mysql_query('drop table if exists journal');
mysql_query('create table journal
(
login VARCHAR(255),
num_log INTEGER auto_increment,
date_log DATETIME,
droits TEXT,
operation TEXT,
primary key(num_log)
)');
mysql_query('create table logs
(
num_log INTEGER references journal.num_log,
table_name TEXT,
field_name TEXT,
field_value TEXT
)');

for($i = 0 ; $i < 10000 ; $i++)
{
  $today = date("Y-m-d G:i:s");
  $query = 'INSERT INTO journal(login, date_log, droits, operation) VALUES (\'login'.$i.'\', \.$today.'\', \'droits\', \'connexion\')';
  mysql_query($query);
  $num_log = mysql_insert_id();
  $query = 'INSERT INTO logs(num_log) VALUES ('.$num_log.')';
  mysql_query($query);

  $today = date("Y-m-d G:i:s");
  $query = 'INSERT INTO journal(login, date_log, droits, operation) VALUES (\'login'.$i.'\', \.$today.'\', \'droits\', \'modification\')';
  mysql_query($query);
  $num_log = mysql_insert_id();
  $query = 'INSERT INTO logs VALUES ('.$num_log.', \'table1\', \'champ1\', \'valeur1\')';
  mysql_query($query);
  $query = 'INSERT INTO logs VALUES ('.$num_log.', \'table2\', \'champ2\', \'valeur2\')';
  mysql_query($query);

  $today = date("Y-m-d G:i:s");
  $query = 'INSERT INTO journal(login, date_log, droits, operation) VALUES (\'login'.$i.'\', \.$today.'\', \'droits\', \'deconnexion\')';
  mysql_query($query);
  $num_log = mysql_insert_id();
  $query = 'INSERT INTO logs(num_log) VALUES ('.$num_log.')';
  mysql_query($query);
}
?>

Temps nécessaire à l'insertion des logs : 14 secondes.

Ensuite, un script PHP est utilisé pour faire une requète sur la base créée et pour chronometrer le temps necessaire à l'obtention du résultat. La requète consiste à demander combien d'opérations ont été effectuées par la personne ayant l'identifiant 'login15'.

<?php
$temps = microtime();
$temps = explode(' ', $temps);
$debut = $temps[1] + $temps[0];

mysql_connect('host', 'user', 'password');
mysql_select_db('openflyers');

$query = 'SELECT COUNT(login) FROM journal WHERE login=\'login15\;
$result = mysql_query($query);
echo 'Nombre d\'opérations efféctuées par login15 : '.mysql_result($result, 0, 0).'
'; $temps = microtime(); $temps = explode(' ', $temps); $fin = $temps[1] + $temps[0]; echo 'Page générée en '.round(($fin - $debut), 6).' secondes.'; ?>

Résultat

Nombre d'opérations effectuées par login15 : 3

Le résultat est exact.

  • taille de la base de données : 2.8 Mo
  • temps de traitement de la requète : 0.04 s