Co je rychlejší
6 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Zdravim vsechny, snad nebude muj dotaz hloupy, ale zajima me co je rychlejsi zda prace s databazi nebo se soubory. Napriklad ktery script by byl rychlejsi: fopen(.....); //pocitam ze soubor se musi vytvorit fwrite(.....); echo fread(.....); fclose(....); nebo insert into...... select from..... echo $vysledek; slovy: zda-li je rychlejsi zapisovat a cist ze souboru, nebo zapisovat a cist z databaze... co se tyce bezpecnosti, kodovani atd... se vsim sem seznamen, zajima me ciste ktera varianta je rychlejsi(zejmena u toho cteni) diky moc za odpovedi..
-
<HTML>Záleží na tom, jak s tím chceš pracovat. Přímá práce se souborem je rychlejší (tj. prosté čtení či zápis). Databáze bude rychlejší ve vyhledávání konkrétních dat a s operacemi nad těmito daty. Je třeba si uvědomit, že PHP skript s nějakým vlastním prohledávacím algoritmem bude vždy pomalejší než MySQL server napsaný v C++ a zkompilovaný na míru tomu stroji. Tzn. pokud si pro každý záznam vytvoříš soubor s určitým názvem a budeš ty záznamy vyhledávat jen pomocí toho názvu, asi je lepší zvolit soubory. Pokud ale budeš chtít ty záznamy vyhledávat pomocí něčeho jiného, než názvu, je výhodnější použít databázi. I pokud bys ručně v PHP implementoval nějakou práci s nějakými indexy, vyhledávacími stromy a hashovými mapami, aby sis to urychlil a tím napodobil MySQL databázi, bude to vzhledem k povaze interpretovaného jazyka PHP pomalejší než zkompilovaný program (MySQL server).</HTML>
-
skvela odpoved, mockrat dekuju...
-
...ještě upozorním, že u souborů musíš řešit kolize přístupů (dva procesy si chtějí přečíst nebo, nedej bože, zapsat z/do stejného souboru) Takže v tomto ohledu bych se souborům velkým obloukem vyhnul. Db je db. :)
-
děkuji tohle sem si neuvědomil ale je to logické, a jak se te kolizi da predejit ?
-
U souboru tím, že soubor dočasně zamkneš (http://php.net/manual/en/function.flock.php). Proces převezme prioritu a ostatní k souboru nebudou mít přístup. U databáze to není nutné. Ale pokud je to potřeba, tak je možnost zamknout tabulku. Je třeba si ještě uvědomit, že může dojít k asynchronizaci. To znamená, že může nastat situace, že uložíš text, ale při načtení se objeví jiný nebo modifikovaný text. To proto, že v době mezi uložením a načtením může dojít k dalšímu uložení od jiného procesu. Tomuto nešvaru se dá zabránit právě zamknutím.