MySQL “select”: Windows nebo Linux?
V předchozím testu jsem se zaměřil na rychlost MySQL databáze pro vkládání záznamů, INSERT INTO
,
v tomto testu se podívám na věc, která je v praxi častější, a to vyhledávání SELECT LIKE '%string%'
.
Testovaná konfigurace počítače a systému:
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
Testovací kód prováděl 10x za sebou celkem 100 SELECTů
:
function test($s){ $query=mysql_query( 'select id from `test` where `body` like ("%'.$s.'%")'); if ($row=mysql_fetch_object($query)) echo $s; } $iterationsCount = 10; $subIterationsCount = 100; for($i = 0; $i < $iterationsCount; $i++) { $timer->start(); for($j = 0; $j < $subIterationsCount; $j++) test(strval($j).' '); $test->add($timer->stop()); }
Výsledek SELECT
testu je v podstatě totožný jak INSERT
testu, MySQL na Linuxu má sice vyšší rozptyl výkonu, nicméně, je o desítky procent výkonnější než
na Windows. Pokud chcete tedy hostovat svoje PHP/MySQL řešení na Windows 2003 serveru, je dobré si to rozmyslet, a místo
koupě tohoto serveru, použít raději Linux. Je zdarma a je rychlejší.
Výsledky pro Windows:
Windows Average: 7.251727175712586 s Standard deviation: 0.009027196825484
Výsledky pro Linux:
SUSE Linux Average: 5.506822347640991 s Standard deviation: 0.018683764226855
Nerozumím jedné věci. Píšeš, že jsi testoval na WinXP Pro SP2 a poté rozmlouváš Windows Server 2003. Myslíš, že systémy jsou natolik shodné, že můžeš test na WinXP Pro převést v praxi na Win2003 Server?
[1] ano, jádro, NTFS, a MySQL je na nich stejná.. A Directory Services, IIS, a další věci mají na rychlost Win2k3 další, spíše negativní, vliv.
Já tu hlavně vidím rozdíl v souborových systémech, protože ReiserFS nabízí určitě znatelně vyšší výkon než NTFS.
Nicméně pro webový server je zajímavější jiná věc a to ReiserFS s patičkami. Když si vezmu, že mám drahý server s SCSI RAID, tak mě ta znatelná úspora místa na Linuxu hodně zaujme. Jenom můj průměrn web zabírá na ReiserFS 2MB a na NTFS 10MB a to už stojí za zamyšlení, když mě SCSI RAID pole o velikosti 60GB přijde na nějakých 10 000 Kč.
Samozřejmě, na Win2K/2003 byvh pro web použil ASP.NET + MSDE (s triggery a transakcemi) a bylo by to výkonnostně zase o něčem jiném. Používat na Windows jakékoliv OpenSource je hovadina, málokdy bývá na tuhle platformu optimalizované. Nemluvě o tom, že komerční použití MySQL, ZendOptimizer apod. na Windows není bezplatné.
Pokud sem dáte generační skript té mySQL databáze a kompletní zdroják v PHP, mohu to zkusit do dané SW kombinace a porovnat je jako celek.
[4] určitě ano, ale to je řešení z poněkud jiné cenové hladiny... Navíc, ASP.NET runtime (mono) mi běží i na Linuxu, a jako DB tam mám PostgreSQL, včetně triggerů a transakcí. A opět zdarma.
[4] mohl bych videt (copy/paste prislusne sekce a url, kde je to uvedeno staci ;) tu cast licence na MySQL a ZO, kde je uvedeno, ze "komerční použití MySQL, ZendOptimizer apod. na Windows není bezplatné"?