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á...

Nový komentář

Pro přidání komentáře se musíte nejdříve  registrovat Facebookem

Banan.cz