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í
×
    dnes 05:11 | Zajímavý software

    Shellbeats je terminálový hudební přehrávač pro Linux a macOS, který umožňuje vyhledávat a streamovat hudbu z YouTube, stahovat odtud skladby a spravovat lokální playlisty. Pro stahování dat z YouTube využívá yt-dlp, pro práci s audiostreamy mpv. Je napsán v jazyce C a distribuován pod licencí GPL-3.0, rezpozitář projektu je na GitHubu.

    NUKE GAZA! 🎆 | Komentářů: 0
    dnes 03:22 | Nová verze

    Byla vydána nová verze 26.1.30 svobodného multiplatformního video editoru Shotcut (Wikipedie) postaveného nad multimediálním frameworkem MLT. S podporou hardwarového dekódování videa. Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    dnes 03:00 | Nová verze

    LibrePCB, tj. svobodný multiplatformní softwarový nástroj pro návrh desek plošných spojů (PCB), byl po deseti měsících od vydání verze 1.3 vydán ve verzi 2.0.0. Přehled novinek v příspěvku na blogu a v aktualizované dokumentaci. Zdrojové kódy LibrePCB jsou k dispozici na GitHubu pod licencí GPLv3.

    Ladislav Hagara | Komentářů: 0
    včera 21:11 | Komunita

    Guido van Rossum, tvůrce programovacího jazyka Python, oslavil 70. narozeniny. Narodil se 31. ledna 1956 v nizozemském Haarlemu.

    Ladislav Hagara | Komentářů: 1
    včera 12:22 | Zajímavý software

    OpenClaw je open-source AI asistent pro vykonávaní různých úkolů, ovládaný uživatelem prostřednictvím běžných chatovacích aplikací jako jsou například WhatsApp, Telegram nebo Discord. Asistent podporuje jak různé cloudové modely, tak i lokální, nicméně doporučován je pouze proprietární model Claude Opus 4.5 od firmy Anthropic v placené variantě. GitHubová stránka projektu OpenClaw.

    NUKE GAZA! 🎆 | Komentářů: 2
    včera 03:00 | Komunita

    Projekt VideoLAN a multimediální přehrávač VLC (Wikipedie) dnes slaví 25 let. Vlastní, tenkrát ještě studentský projekt, začal již v roce 1996 na vysoké škole École Centrale Paris. V první únorový den roku 2001 ale škola oficiálně povolila přelicencování zdrojových kódů na GPL a tím pádem umožnila používání VLC mimo akademickou půdu.

    Ladislav Hagara | Komentářů: 1
    31.1. 18:11 | Humor

    Moltbook je sociální síť podobná Redditu, ovšem pouze pro agenty umělé inteligence - lidé se mohou účastnit pouze jako pozorovatelé. Agenti tam například rozebírají podivné chování lidí, hledají chyby své vlastní sociální sítě, případně spolu filozofují o existenciálních otázkách 🤖.

    NUKE GAZA! 🎆 | Komentářů: 3
    31.1. 18:00 | Humor

    scx_horoscope je „vědecky pochybný, kosmicky vtipný“ plně funkční plánovač CPU založený na sched_ext. Počítá s polohami Slunce a planet, fázemi měsíce a znameními zvěrokruhu. Upozornil na něj PC Gamer.

    |🇵🇸 | Komentářů: 4
    30.1. 18:22 | Komunita

    O víkendu probíhá v Bruselu konference FOSDEM 2026 (Free and Open source Software Developers’ European Meeting). Program konference je velice nabitý: 37 místností, 71 tracků, 1184 přednášejících, 1069 přednášek, prezentací a workshopů. Sledovat je lze i online. K dispozici budou jejich videozáznamy. Aktuální dění lze sledovat na sociálních sítích.

    Ladislav Hagara | Komentářů: 4
    30.1. 18:00 | IT novinky

    Společnost Nex Computer stojící za "notebooky bez procesorů a pamětí" NexDock představila telefon NexPhone, který může funguje jako desktop PC, stačí k němu připojit monitor, klávesnici a myš nebo NexDock. Telefon by měl být k dispozici ve třetím čtvrtletí letošního roku. Jeho cena by měla být 549 dolarů. Předobjednat jej lze s vratní zálohou 199 dolarů. V dual-bootu by měl být předinstalovaný Android s Linuxem (Debian) jako aplikací a Windows 11.

    Ladislav Hagara | Komentářů: 3
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (10%)
     (24%)
     (3%)
     (5%)
     (2%)
     (11%)
     (31%)
    Celkem 719 hlasů
     Komentářů: 22, poslední 29.1. 23:06
    Rozcestník

    Administrace komentářů

    Jste na stránce určené pro řešení chyb a problémů týkajících se diskusí a komentářů. Můžete zde našim administrátorům reportovat špatně zařazenou či duplicitní diskusi, vulgární či osočující příspěvek a podobně. Děkujeme vám za vaši pomoc, více očí více vidí, společně můžeme udržet vysokou kvalitu AbcLinuxu.cz.

    Příspěvek
    12.3.2019 13:26 EtDirloth | skóre: 11
    Rozbalit Rozbalit vše Re: postgres optimalizace dotazu
    Velmi pekna uloha!

    Postgresql zial nevie efektivne pouzit index pre group by - pouzije index only scan iba ked sa mu zakaze seq. scan.

    Najprv definica tabulky, a simulacia tvojich dat: (testovane na pg11)
    --DROP TABLE IF EXISTS van;
    CREATE TABLE van (
       rodatum timestamp
     , server  integer NOT NULL
     , vanview integer NOT NULL
    );
    -- populate with 10M of records with 25 distinct combinations of server & vanview
    INSERT INTO van (server, vanview, rodatum)
       SELECT (random() * 4)::int
            , (random() * 4+5)::int
            , ts + ((random() * 5000)::int || 'seconds')::interval
          FROM generate_series('2000-01-01'::timestamp, now(), '1minute') AS x(ts)
    ;
    
    SELECT count(*) FROM van;
    -- 10095150
    SELECT count(*) FROM van GROUP BY (server, vanview);
    -- (25 rows)
    Jednotlive stlpce vo viacstlpcovych indexoch je potrebne radit v poradi selektivity a znovupouzitelnosti. Ak query filtruje len podla niektorych stlpcov indexu zlava, vie ho pouzit. A preto sa pouzije index ix_van_server_vanview_rodatum na SELECT min(server), ale uz nie na SELECT min(vanview).
     -- used by min(server), max(rodatum) per server&vanview
    CREATE INDEX ix_van_server_vanview_rodatum ON van (server, vanview, rodatum DESC NULLS LAST);
     -- used by min(vanview)
    CREATE INDEX ix_van_vanview ON van (vanview);
    Test tvojej query pre porovnanie casov:
    EXPLAIN (BUFFERS, ANALYZE) select max(rodatum), server, vanview  FROM van GROUP BY server, vanview;
    -- actual time=1791.880..1791.936
    -- Parallel Seq Scan on van
    Pouzil sa Seq scan, napriek tomu, ze existuje ix_van_server_vanview_rodatum, skusim ho zakazat:
    SET enable_seqscan = OFF;
    EXPLAIN (BUFFERS, ANALYZE) select max(rodatum), server, vanview  FROM van GROUP BY server, vanview;
    -- actual time=218.738..3580.570
    -- Parallel Index Only Scan using ix_van_server_vanview_rodatum
    
    ...este pomalsie - zda sa, ze planner funguje spravne

    Kedze mame pomerne male mnozstvo kombinacii ((count(server)*count(vanview))==25), napadlo ma pouzit index ix_van_server_vanview_rodatum tak, ze mu podsuniem 25 roznych hodnot, co by bezalo so zlozitostou O(25 log 10^7). Takze potrebujem ziskat 25 unikatnych hodnot. Lenze SELECT DISTINCT je este pomalsi, nez SELECT server, vanview GROUP BY server, vanview:
    SELECT DISTINCT server, vanview FROM van
    -- Time: 1878,862 ms (00:01,879)
    SELECT server, vanview FROM van GROUP BY server,vanview
    -- Time: 980,318 ms
    Korelovana subquery je potom obmedzena pomalostou DISTINCT/GROUP-BY:
    SELECT max(rodatum), server, vanview
       FROM van
       WHERE (server,vanview) IN (SELECT DISTINCT server, vanview FROM van)
       GROUP BY server,vanview
    ;
    -- Time: 5028,114 ms (00:05,028)
    
    SELECT (
       SELECT max(v.rodatum)
          FROM van AS v
          WHERE (v.server, v.vanview) = (vv.server, vv.vanview)
       ), server, vanview
       FROM (SELECT server, vanview FROM van GROUP BY server,vanview) AS vv
       GROUP BY server, vanview
    ;
    --Time: 984,181 ms
    ...je vidiet mierne zrychlenie, ale stale sme v radoch sekund.

    A tu prichadza trik s rekurzivnou CTE pre indexovany DISTINCT v kombinacii s horeuvedenou korelovanou subquery:
    --EXPLAIN (BUFFERS, ANALYZE) 
    WITH RECURSIVE t AS (
       SELECT min(server) AS s FROM van
       UNION ALL
       SELECT (SELECT min(server) FROM van WHERE server > t.s)
       FROM t WHERE t.s IS NOT NULL
    )
    , tt AS (
       SELECT min(vanview) AS v FROM van
       UNION ALL
       SELECT (SELECT min(vanview) FROM van WHERE vanview > tt.v)
       FROM tt WHERE tt.v IS NOT NULL
    )
    SELECT (
       SELECT max(rodatum)
          FROM van
          WHERE server = s
            AND vanview = v
       ), s, v
       FROM t, tt
       WHERE s IS NOT NULL
         AND v IS NOT NULL
    ;
    -- Time: 1,679 ms
    
    Pre vysvetlenie vid https://wiki.postgresql.org/wiki/Loose_indexscan

    V tomto formuláři můžete formulovat svou stížnost ohledně příspěvku. Nejprve vyberte typ akce, kterou navrhujete provést s diskusí či příspěvkem. Potom do textového pole napište důvody, proč by měli admini provést vaši žádost, problém nemusí být patrný na první pohled. Odkaz na příspěvek bude přidán automaticky.

    Vaše jméno
    Váš email
    Typ požadavku
    Slovní popis
    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.