Úgy dolgozik mysql 150-szer gyorsabb, mint a php

  • PHP
  • MySQL
  • termelékenység
  • node.js
  • Webfejlesztés

Van egy web-alapú rendszer (php + mysql on XAMPP), a helyi hálózaton. A rendszerben egy pár száz felhasználók. a rekordok száma az adatbázisban Nagyon gyorsan nő a rendszerben. Ezzel a fék növekedését és növeli szerver CPU terhelését. Elkezdtem ásni a keresést egy szűk keresztmetszet. Minden dooolgo lánc diggings nem ad. Ennek eredményeként a diggings jött ide, hogy mit:

XAMPP fel magát a PC-n (core i7, 8 GB RAM, Win7 Végső). Tettem node.js szerver számítógépre.
Azt, hogy a fellebbezés PHP az adatbázis mysql.

Táblázat dreg_document 5000 rekordokat. Azt választani ezeket a ciklusban 1000 alkalommal. Ez a kód működik off 3,5 másodperc.
(OEM nem használható valamilyen okból, így ez a kód).

Én ugyanazt a kezelést node.js szerver

DE! Az ismétlések 100-szor nagyobb. Ez a kód működik off 1.4 mp.

Következő. A böngésző nyílt WebSocket kapcsolatot, és kérje node.js szerver fut a script fent látható. Végrehajtása az ügyfél (böngésző Firefox):

Ez a kód működik ki 2 másodpercig. Ez a válasz a böngészőt servaka után jön 2 másodpercig. (És ez mind-mind ugyanazt a 100 ezer iteráció)

A node.js a következő modulokat tartalmazza:

Kérdés: az izom vezető vonatkozik a csomópont 150-szer okosabbak, mint a PHP-shnogo (!)? Vagy tévedek teszteljem? Ha az utóbbi, mondja meg, hogyan kell tesztelni.

Magam is alig hiszem, hogy node.js driver, írta néhány évvel ezelőtt, több százszor gyorsabb, mint a php, amelyben oly sok ember ül, és amely folyamatosan frissül, stb

Úgy dolgozik mysql 150-szer gyorsabb, mint a php

Ui OEM tiltakozás. lassabb

ZY 2
Tiltakozom újra. Díszlet. 1000 itereatsy:
mysql_ * 3,4 másodperc
PDO 6.67 másodperc
MySQLi az 6,68 másodperc.

Szóval Köszönöm a válaszokat. Rájöttem, hogy mi történik. mert programozás node.js sokkal, mint 2 hét, én félreértelmezte az eredményeket. Megváltoztattam a tesztet, és itt mi történt:

Ha úgy gondolja, php-shnomu munka után minden kérés, egy üzenetet küld az ügyfél -
client.send ( 'QWERTY');

De a valóságban, akkor az üzenetet küldünk, ha a csomópont-szerver küld minden kérés tárol. Ekkor (! Meg sem várva a választ az adatbázis), a szerver üzenetet küld az ügyfélnek. A kliens (böngésző) számlálási idő (balra, például 2 másodpercig 100.000 iteráció). És ebben az időben a csomópont továbbra is választ kap az adatbázisból. Ezek a válaszok látjuk segítségével
console.log (str);
És itt van nagyon eltérő eredményeket.

Ezután módosítsa a forgatókönyvet a következő számítani az átfutási idő az 1-től az utolsó aszinkron kapcsolat az adatbázishoz:


eredmény
100 iterációk 2,5 másodperc (amely 15-szer lassabb, mint a PHP)

Köztes válasz a témában:
Node.js nem gyorsabb, mint a PHP 150 alkalommal az adatbázis-hozzáférés kérdése.
Éppen ellenkezőleg, node.js ebben a tekintetben 15-szer lassabb, mint a PHP.
(Ez, ha Ön a kiszolgálók „out of the box”, anélkül, hogy uluchshatelstv és beállítások)

Új kérdés:
Esetleg az utolsó vizsgálat igaz? Vagy én vagyok benne is valami nem történik?

Annak érdekében, hogy megkapja, amit akar, a gondolat, hogy a kódot kell, mint ez:

/ * BEGIN csomópont KÓD * /
var iterációk = 1000;

var aszinkron = igényelnek ( 'aszinkron');
var mysql = igényelnek ( 'mysql');

var connection = mysql.createConnection (host. 'localhost',
felhasználó. „Root”
jelszót. „Titkos”,
adatbázisban. 'Test'
>);

console.time ( 'node.js');
async.times (iterációk, funkció (N, következő) connection.query ( "SELECT * FROM teszt", funkció (err, eredmény) a következő (err, eredmény);
>);
> Function (err, eredmények), ha (err) dobja új hiba (err);
console.timeEnd ( 'node.js');
console.log ( 'eredményei:', results.length);
connection.end ();
>);

/ * VÉGE NODE KÓD * /

I 1000 kérések iránt 1000 eredménye 320 milliszekundum (MariaDB).

Ellenőrizze alapján a saját verzióját a kódot, és hagyja, hogy bármilyen eredményt. Ne felejtse el, hogy az aszinkron modul, amit én nagyon ajánlom neked, mert ítélve a FOR ciklus a kódban, akkor nem tud róla.

Kapcsolódó cikkek