abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 18:44 | IT novinky

    Vojenské zpravodajství (VZ) se v březnu zapojilo do mezinárodní operace proti aktivitám hackerské skupiny APT28, která je spojovaná s ruskou vojenskou zpravodajskou službou GRU a která přes slabě zabezpečené routery prováděla kybernetické útoky na státní a další organizace v ČR i zahraničí. Operaci vedl americký Federální úřad pro vyšetřování (FBI) a jejím cílem bylo odebrat útočníkům přístup k napadeným zařízením a ty následně … více »

    Ladislav Hagara | Komentářů: 5
    včera 16:44 | IT novinky

    Tvůrcem nejpopulárnější kryptoměny bitcoin, který se skrývá za pseudonymem Satoši Nakamoto (Satoshi Nakamoto), je britský kryptograf Adam Back. Na základě vlastní investigativní práce to tvrdí americký deník The New York Times (NYT). Několik indicií podle autorů jasně ukazuje na to, že Back a Nakamoto jsou stejný člověk. Jde mimo jiné o podobný odborný a osobnostní profil či totožné chyby a manýry v psaném projevu.

    Ladislav Hagara | Komentářů: 6
    včera 14:44 | Nová verze

    Google Chrome 147 byl prohlášen za stabilní. Nejnovější stabilní verze 147.0.7727.55 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Vylepšeny byly také nástroje pro vývojáře. Přehled novinek v Chrome DevTools 145 až 147 také na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 12:44 | Nová verze

    Vývojáři z Laboratoří CZ.NIC vydali nové verze aplikací Datovka (Datovka 4.29.0, Mobilní Datovka 2.6.2). V případě desktopové verze přibyly možnosti projít všechny uložené zprávy, zkontrolovat časy expirací časových razítek a přerazítkovat datové zprávy, které lze v ISDS přerazítkovat. Novinkou je také možnost vytahovat myší ze seznamu ZFO soubory datových zpráv, tento úkon jde udělat i pomocí tlačítek Ctrl+C. Nová verze Mobilní Datovky přináší jen drobné úpravy.

    VSladek | Komentářů: 0
    7.4. 21:55 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.28.0. Z novinek lze vypíchnout novou třídu machine.CAN.

    Ladislav Hagara | Komentářů: 0
    7.4. 10:22 | Komunita

    Michael Meeks, CEO společnosti Collabora, na apríla oznámil, nebyl to ale apríl, že nadace The Document Foundation zastřešující vývoj kancelářského balíku LibreOffice vyloučila ze svých řad všechny zaměstnance a partnery společnosti Collabora, tj. více než třicet lidí, kteří po mnoho let přispívali do LibreOffice. Nadace The Document Foundation po několika dnech publikovala oficiální vyjádření. Přiznává pochybení při zakládání

    … více »
    Ladislav Hagara | Komentářů: 9
    6.4. 05:33 | Pozvánky

    Protože je už po aprílu, můžou strahováci opět zveřejnit program další Virtuální Bastlírny, aniž by připravená témata působila dojmem, že jde o žert. Vězte tedy, že v úterý 14. dubna (změna!!!) od 20:00 proběhne VB, kde se setkají bastlíři, technici, učitelé i nadšenci do techniky a kde i vy se můžete zapojit do družného hovoru, jako by všichni seděli u pomyslného piva. Co mají bastlíři tento měsíc na srdci? Pravděpodobně by nás musel zasáhnout

    … více »
    bkralik | Komentářů: 3
    5.4. 23:33 | Nová verze

    Byla vydána verze 26.1 aneb čtvrtletní aktualizace open source počítačového planetária Stellarium (Wikipedie, GitHub). Vyzkoušet lze webovou verzi Stellaria na Stellarium Web.

    Ladislav Hagara | Komentářů: 1
    5.4. 23:00 | Zajímavý projekt

    VOID (Video Object and Interaction Deletion) je nový open-source VLM model pro editaci videa, který dokáže z videí odstraňovat objekty včetně všech jejich fyzikálních interakcí v rámci scény (pády, kolize, stíny...) pomocí quadmaskingu (čtyřhodnotová maska, která člení pixely scény do čtyř kategorií: objekt určený k odstranění, překrývající se oblasti, objektem ovlivněné oblasti a pozadí scény) a dvoufázového inpaintingu. Za projektem stojí výzkumníci ze společnosti Netflix.

    NUKE GAZA! 🎆 | Komentářů: 9
    5.4. 05:22 | Zajímavý software

    Design (GitHub) je 2D CAD pro GNOME. Instalovat lze i z Flathubu. Běží také ve webovém prohlížeči.

    Ladislav Hagara | Komentářů: 20
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (7%)
     (1%)
     (12%)
     (30%)
     (3%)
     (6%)
     (1%)
     (14%)
     (24%)
    Celkem 1246 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Dotaz: MySQL ORDER BY RAND() a výkon

    9.10.2012 20:09 filbar | skóre: 36 | blog: Denicek_programatora | Ostrava
    MySQL ORDER BY RAND() a výkon
    Přečteno: 1233×
    V jednom modulu webové aplikace jsem se setkal s
    ORDER BY RAND()
    LIMIT 1
    
    jak je na tom takový dotaz s výkonností? Tuším správně, že je to pro výkonnost špatné?

    Odpovědi

    MMMMMMMMM avatar 9.10.2012 20:19 MMMMMMMMM | skóre: 44 | blog: unstable | Valašsko :-)
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    9.10.2012 21:21 kuka
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    To predevsim zalezi, ceho se to tyka. Jestli to pracuje treba nad 100 zaznamy, tak na tom urcite nic spatneho neni. Podobne pokud to jednou mesicne vylosuje jednoho uzivatele, nebude vadit, ze to pobezi nekolik minut, naopak pokud se to vola stokrat za minutu, musi to bezet radove desetiny sekundy atd.
    10.10.2012 12:46 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    To je ale kravina, znám lepší způsoby jak zatížit server.
    Velmi výkonné je to na M$SQL, ale zas to nedělá to, co by se očekávalo :-).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    AraxoN avatar 10.10.2012 13:35 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    jj, MS SQL vygeneruje rovnaké náhodné číslo pre všetky riadky. To je prosímpekne vlastnosť, nie chyba! :-D
    Josef Kufner avatar 11.10.2012 12:01 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    Potíž je v tom, že MySQL si napřed vygeneruje ke každému řádku náhodné číslo, pak řádky podle tohoto čísla seřadí a nakonec veme ten první. Takže si potřebuje udělat dočasnou tabulku, která pojme všechny řádky ve zdrojové tabulce (tedy alespoň ta náhodná čísla), tu pak seřadit a nakonec zahodit, protože je potřeba jen jeden řádek.

    Pokud chceš jen jeden náhodný řádek, dej RAND() * (SELECT COUNT(*)) do offsetu v LIMIT.

    Pokud chceš řádků více, je to trochu těžší. Pro několik málo řádků prostě volej jednořádkovou variantu kolikrát potřebuješ. Pro hodně řádků, pokud máš jako primární klíč celá čísla, můžeš vygenerovat seznam náhodných ID a pak si o ně říct. Pokud jsou ID děravá, tak to spustíš vícekrát, dokud nedostaneš požadovaný počet (můžeš ID vygenerovat pár navíc aby jsi omezil počet dotazů).
    Hello world ! Segmentation fault (core dumped)
    AraxoN avatar 11.10.2012 15:19 AraxoN | skóre: 47 | blog: slon_v_porcelane | Košice
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    Možno to platí len pre postgresql, ale výhodnejšie je ORDER BY RANDOM(), než OFFSET RANDOM() * SELECT COUNT():
    EXPLAIN SELECT * FROM test ORDER BY RANDOM() LIMIT 1;
                                         QUERY PLAN
    -------------------------------------------------------------------------------------
     Limit  (cost=19755.35..19755.36 rows=1 width=1162)
       ->  Sort  (cost=19755.35..20165.12 rows=163906 width=1162)
             Sort Key: (random())
             ->  Seq Scan on test  (cost=0.00..18935.83 rows=163906 width=1162)
    (4 rows)
    EXPLAIN SELECT * FROM test LIMIT 1 OFFSET RANDOM()*(SELECT COUNT(*) FROM test);
                                         QUERY PLAN
    ------------------------------------------------------------------------------------
     Limit  (cost=20788.49..20788.60 rows=1 width=1162)
       InitPlan 1 (returns $0)
         ->  Aggregate  (cost=18935.83..18935.84 rows=1 width=0)
               ->  Seq Scan on test  (cost=0.00..18526.06 rows=163906 width=0)
       ->  Seq Scan on test  (cost=0.00..18526.06 rows=163906 width=1162)
    (5 rows)
    Cost prvej možnosti je nižší než druhej.
    11.10.2012 16:33 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    Záleží na tom jak moc je efektivní 'COUNT(*)' a nad jak velkými daty se to dělá.
    U mě na MySQL (InnoDB i MyISAM) nad tabulkou s několika záznamy je ekvivalent druhého zápisu také rychlejší, ale s např. 180000 záznamy už ne (použil jsem co jsem měl po ruce - proto to číslo), ale celé je to o tom, že nejdéle trvá 'SELECT COUNT(*)…', pokud tedy budu losovat několik záznamů tak už je to diametrálně jiné, samozřejmě se ale nesmí použít ten uvedený druhý zápis, ale uložení si COUNT(*).
    Čísla na 180 000 záznamech:
    InnoDB: 0.21sec (získání COUNT(*) z toho 0.16 sec)   vs.   0.29sec 
    MyISAM: 0.08sec (získání COUNT(*) z toho 0.05 sec)   vs.   0.18sec
    
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Heron avatar 15.10.2012 16:04 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    U MVCC databáze (tedy asi všechno krom MyISAM) je COUNT(*) velmi drahá operace. Musí se spočítat řádky platné v dané transakci.
    okbob avatar 11.10.2012 18:13 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    cost je hausnumero, to ještě nic nemusí znamenat - v každém případku použití ORDER BY RANDOM vede na sekvenční scan, což u velkých tabulek může být brzda - a tuplem, když je takový dotaz častý - pro tabulky do několikaseti řádků je to jedno, ale pak už to může zabolet. Viděl jsem server, kde významnou část zátěže produkoval podobný a pro většinu aplikací naprosto zbytný dotaz.
    Heron avatar 15.10.2012 16:01 Heron | skóre: 53 | blog: root_at_heron | Olomouc
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    Ale v každém případě se provádí sekvenční scan celé tabulky a v tom druhém případě dokonce dvakrát. Pro normálně velké tabulky ten server tímto efektivně odstavíte.
    17.10.2012 16:35 l0gik | skóre: 22
    Rozbalit Rozbalit vše Re: MySQL ORDER BY RAND() a výkon
    U nepříliš děravé databáze, která neumí count bez prolejzání DB (většina MVCC) můž být zajímavé toto řešení:
    
    SELECT MAX(id) FROM Tabulka INTO max
    WHILE true:
       SELECT * FROM TABULKA WHERE id >= RANDOM() * max INTO rec
       SELECT COALESCE(MAX(id),0) FROM TABULKA WHERE id < rec.id INTO prev_id
       if RANDOM()<1.0/(rec.id - prev_id):
           return rec
    
       
    Myšlenka je doufám jasná: využiju ID, random udělam na díru, a díry ošětřím tak, že záznam "za dírou" vrátím jen v patřičném podílu případů, v opačném selektuju znovu.

    Nevýhoda je nedeterministický čas.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.