MySQL “insert”: Windows nebo Linux?

MyEgo.cz

home foto blogy mywindows.cz kontakt

MySQL “insert”: Windows nebo Linux?

Linux 06.10.04

V několika dalších článcích bych se chtěl zaměřit na srovnání rychlosti MySQL, PHP, Apache, PostgreSQL a Javy pod Windows XP SP2 a SuSE Linux 9.1.

V tomto prvním článku budu testovat rychlost MySQL, a to konkrétně insertů do tabulky, s fulltext klíčem.

Veškeré testy jsou prováděny na této konfiguraci počítače:

CPU: Pentium-4/HT 3.4 GHz
RAM: 2x512MB DDR443
HDD: SATA 7.200rpms, 8MB cache
Lin: SUSE 9.1, kernel 2.6.8.1, ReiserFS
Win: WinXP Pro SP2, NTFS

Vlastní test provádí desetkrát po tisíci insertech do MySQL databáze, a potom zobrazí výsledky, pro měření je jako základ použit skript Jána Suchala.

function test(&$s){
  mysql_query("insert into `test` (body) values ('$s')");
}

$iterationsCount = 10;
$subIterationsCount = 1000;

// stress test
@set_time_limit(1200);
$link = mysql_connect('localhost','root','');
if($link==false)  
  die("Cannot connect to MySQL DB..");
mysql_select_db('blogcms') or 
  die("Cannot select blogcms DB...");

mysql_query("drop table if exists `test`");
mysql_query("CREATE TABLE `test` (
  `id` int(11) NOT NULL auto_increment,
  `body` text NOT NULL,
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `kbody` (`body`)
) TYPE=MyISAM; ");

// large string val
$s='';
for ($i=0;$i<1000;$i++) $s.=strval($i).' ';

// testing
for($i = 0; $i < $iterationsCount; $i++) {
  $timer->start();
  for($j = 0; $j < $subIterationsCount; $j++)
    test($s);
  $test->add($timer->stop());
}
mysql_close($link);

// print results
echo '<pre>';
$test->getResults();
echo '</pre>';

Výsledky - Windows XP SP2:

WindowsXP
Average: 0.188359689712524 
Standard deviation: 0.002431358802221

Výsledky - SuSE Linux 9.1:

SuSE Linux 9.1
Average: 0.111869907379150 
Standard deviation: 0.006455050875860

Je vidět, že výkon Linuxu je sice poněkud méně vyrovnaný než Windows XP (vyšší standardní odchylka), nicméně, v průměru je práce s MySQL (insert), 1.7x rychlejší pod SuSE Linuxem, než pod Windows XP.

V testu byl použit Apache 2.0.52, PHP 5.0.2 a MySQL 4.0.21, v případě SuSE Linuxu vše kompilované ze zdroje, podle tohoto článku, v případě Windows XP jsou použity ty samé verze serverů, nicméně, jejich standardní binární podoba.


Komentáře

  1. 1 Prochaine 06.10.04, 19:17:58
    FB

    U distribuce MySQL je v adresáři /banch prostředek na testování rychlosti databáze. Sám jsem chtěl něco podobného tento týden otestovat.

  2. 2 Jiří Macich ml. 06.10.04, 21:22:36
    FB

    Cenzura nebo jsem opět zapomněl potvrdit komentář? No, jestli to teď zmizí, tak je mi to jasné :-D

    Čili znonu. Přijde mi to jako objevování Ameriky.

  3. 3 Radek Hulán 06.10.04, 22:04:30

    [2] komentáře, které nejsou v ničem přínosné, mažu, ale asi ti jej tu nechám, jako ukázkový případ komentáře v ničem přínosného...

    Ale k věci: jsou lidé, co věří, že Linux je rychlejší, a jsou lidé, co testují v čem přesně, pokud vůbec, je rychlejší. ;-) To, že na stejném HW je v tomto konkrétním testu Linux rychlejší 1.7x, to je dost extrém, je to strašně moc...

  4. 4 Ondřej Kokeš 06.10.04, 22:43:49
    FB

    [3] Ono to ovlivnuje jen trochu, ale kdy byla posledni instalace obou systemu? Kolik toho bylo spusteno apod.

  5. 5 Radek Hulán 06.10.04, 22:50:51

    [4] kromě vlastního OS a serverů nebylo pochopitelně spuštěno nic jiného, tedy, až pár deamons na Linuxu.. Obě instalace obsahovaly PHP 5.0.2, Apache 2.0.52 a MySQL 4.0.21, což jsou nejnovější věci, instalované před pár dny. Zítra vyzkouším rychlost PHP, tam očekávám, že by takové rozdíly být neměly.

  6. 6 dgx 07.10.04, 00:19:04
    FB

    velmi zajímavé. Jen bych se chtěl Radku zeptat, jestli máš linux a mysql zkompilovaný s optimalizací přímo pro Tvůj počítač (samozřejmě to by ten dramatický rozdíl rychlostí nevysvětlovalo).

  7. 7 Radek Hulán 07.10.04, 00:25:03

    [6] ano, mám jak zkompilovaný ze zdroje a optimalizovaný kernel 2.6.8.1 (jen věci a moduly, co potřebuje moje PC), tak MySQL 4.0.21 a další celky (Apache, PHP) zkompilované ze zdroje.. Na Windows je binárka, standardní.

    Toto jsem použil pro kompilaci: export CFLAGS="-march=pentium4 -mfpmath=sse -msse2 -s -pipe -O2 -fomit-frame-pointer", gcc verze 3.3.3.

  8. 8 johno 07.10.04, 12:54:56
    FB

    Som ani netušil, že sa ti ten skript tak zapáči.

    No asi deň po tom čo som to nakódoval som našiel v PEARe balíky Math_Stats a Benchmark . To naštve.

  9. 9 Michal Tuláček 07.10.04, 14:29:38
    FB

    Kolikrat za sebou se ten test provadel? Je to vysledek jednoho mereni a nebo prumer s vyhozenim viditelne nahodilych hodnot?

  10. 10 Radek Hulán 07.10.04, 14:58:56

    [9] vše je to v článku napsané... je potřeba lépe a pozorněji číst.

  11. 11 Michal Tuláček 08.10.04, 00:51:10
    FB

    [10] Jako pravda, přehlédl jsem větu Vlastní test provádí desetkrát po tisíci insertech do MySQL databáze, ale stejně mě zajímá, jestli ten test (vcelku) běžel jednou a nebo vícektrát.... (nemyslím tím tedy to že to najednou testne desetkrat, ale cele provednei testu)

    To neberte že rýpu do výsledků, prostě mě to dost zajímá...