V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.
Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.
Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.
Multimediální přehrávač mpv byl vydán ve verzi 0.42.0. Jde o větší balík změn po bezmála roce. Mimo jiné se lépe integruje s Waylandem nebo rozšiřuje podporu DVD/Blu-ray, např. umožňuje přehrávat rovnou obrazy médií (soubory iso).
Desktopové prostředí LXQt (Lightweight Qt Desktop Environment, Wikipedie) vzniklé sloučením projektů Razor-qt a LXDE bylo vydáno ve verzi 2.5.0. Přehled novinek v poznámkách k vydání.
Byla vydána (𝕏) nová verze 8.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.
Byla vydána verze R14.1.7 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5, Wikipedie). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.
Bazzite (Wikipedie), tj. linuxová distribuce vycházející z Fedora Linuxu a optimalizována pro hraní počítačových her, byla vydána ve verzi 45. S Open Gaming Collective (OGC) jádrem a novým Easy Anti-Cheatem pro Linux (EAC Linux v2).
MikroTik zveřejnil vlastní bezpečnostní upozornění potvrzující, že zranitelnost linuxového jádra postihuje také RouterOS 7. Jde o use-after-free při zpracování IPv4 TCP spojení s IP options. Zranitelnost se týká provozu směřujícího na TCP službu samotného routeru, nikoli paketů, které router pouze přeposílá. Opraveno v long-term od 7.24.6, v stable od 7.25.1 a devel od 7.26beta5.
ORDER BY RAND() LIMIT 1jak je na tom takový dotaz s výkonností? Tuším správně, že je to pro výkonnost špatné?
.
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.
'COUNT(*)' a nad jak velkými daty se to dělá.COUNT(*).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
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.
Tiskni
Sdílej: