Adatbázis: SQL, XML DB

Mariadb másodperc bevitele time típusú oszlopba

Sziasztok!

 

Érdekes problémába ütköztem a MariaDB-vel. Szeretnék bevinni adatokat egy táblába, ahol is az egyik oszlop típusa time[6] (6-os pontosságú milliszekundumok). Ebbe másodperc alapon vinném be az időket. A beszúrások nagyrésze oké, de van egy vesszőparipája. A 190, 192 és ekörnyéki értékekre hibát dob

Incorrect time value: '192' for column `gyakorlas`.`media`.`duration` at row 1

Ha mondjuk 240-et, 300-at vagy 120-at kap, gond nélkül beviszi. Mi lehet ennek oka, és esetleg a megoldása?

Köszi!

MariaDB lekérdezés baromi lessú lett

Üdv!

Frissítettem egy szerveren az os-t. Ezzel együtt frissült a mariadb is. A mariadb külön frissítés is lefutott szépen.
Viszont egyes lekérések ahol (Bár ezt nem tudom 100%-ban) like van iszonyat lassú lett. (47-49 mp)
Egy másik gépen ahol megegyezik a szerverrel a mariadb, php és apache conf ugyanaz a lekérés pár mp.
A top-ot megnézve a szerveren a lekéréskor 100 vagy nagyobb százalékban pörgeti a cpu-t. 
A progi is ugyanaz mindkét helyen.  
Már nincs nagyon ötletem mit nézzek meg.
Van valami ötlet esetleg? Hátha kihagytam magam.

Köszi!

SQL query táblatisztításra prefix alapon

Sziasztok!

Napi szinten használok SQL-t (esetemben MariaDB), de van egy query, ami feladta a leckét, lényegében elképzelésem sincs, hogy hogy nézne ez ki. Viszont számomra nagyon-nagyon hasznos lenne.

Van egy táblám amelyből jelen esetben 3 oszlop a lényeg: GROUP, PREFIX, VALUE.

Csoportonként (GROUP érték) szeretném törölni azokat a rekordokat, ahol a prefix hosszabb egy nála rövidebb de azonos értéűvel definiáltnál, viszont a VALUE értéke megegyezik.

Pl.:

group1 a123  1.2

group1 a1234 1.2    <-ez nem kell mert a rövidebben definiáltnál is ennyi a VALUE

group1 a1235 1.4

group2 a1234 1.6

group2 a12345 1.6   <-ez nem kell mert a rövidebben definiáltnál is ennyi a VALUE

És mindezt csoportonként.

 

Ez a DELETE query valahogy nem áll össze a fejemben.

Hogy kellene ennek nagyjából kinéznie?

A válaszaitokat előre is köszönöm!

mysqldump visszatöltés nagyon lassú

Sziasztok!

Van egy 1,6 GB-os mysqldump állomány ami az egyik "fejlesztői" gépen iszonyú lassan töltődik vissza.

Ha egy time parancsot elé teszek a következő kimenetet kapom:

real    27m45,435s
user    0m25,539s
sys     0m0,912s

Viszonyításkép az egyik VPS-en 27 perc helyett 4 perc ugyan ez. Igaz ebben a "fejlesztői" gépben SATA SSD van, a VPS-ben meg valószínűleg sokkal gyorsabb MVMe SSD, de ekkora eltérésnek azért gondolom nem kellene lenni. 

SMART információkból nekem úgy tűnik nincs baja az SSD-nek, ennek ellenére én azt sejtem a szűk keretmetszetnek. De ötletem sincs hol kezdjem a hibakeresést, mit nézzek és mivel. Tudnátok valamit tanácsolni? Én fejlesztő vagyok, ezekhez a dolgokhoz annyira nem értek.

Timeseries adat feldolgozasa Postgresben

Villanyorabol kinyert adataimat szeretnem megjeleniteni Grafanaban.

A cel az, hogy napi, heti illetve havi bontasban lassam a felhasznalast (kWh-ban).

Igy nez ki a mar nagyjabol formazott adathalmazom:
 

ts				val
2022-05-07 17:06:58		004139.17
2022-05-07 17:12:32		004139.19
2022-05-07 17:18:06		004139.20
2022-05-07 17:29:13		004139.21
2022-05-07 17:34:47		004139.22
2022-05-07 17:40:21		004139.23
2022-05-07 17:45:55		004139.24
2022-05-07 17:51:29		004139.25
2022-05-07 17:57:03		004139.28
2022-05-07 18:02:37		004139.31
2022-05-07 18:08:11		004139.33
2022-05-07 18:13:45		004139.35
2022-05-07 18:19:19		004139.38
2022-05-07 18:24:52		004139.44
2022-05-07 18:30:25		004139.60

 

Ha jol gondolkozom, akkor ahhoz hogy egy napi bontast lassak, ki kene szamolni az orankenti fogyasztast (lehetne kisebb interval is, hogy egy oran belul tobb datapointom legyen, de szerintem felesleges).

Es akkor a grafikonon az X tengely az idopont: 0 ora, 1 ora, 2 ora, 23 oraig (vagy masnap 0-ig...?) az Y tengely pedig a max-min deltak az adott oraban.

Ugye a nulladik oraban a delta mindig 0 lenne, viszont 1 oranal mar az elso oraban mert legkisebb es legnagyobb ertek kulonbseget kene megjeleniteni es igy tovabb...

Addig jutottam, hogy le tudtam kerdezni az adott oraban a legkisebb es legnagyobb ertekeket, de az osszeboronalas mar nem ment.

Ez a kovetkezo keppen nez ki:

A tabla DDL-je:

create table ts_string
(
    id    integer not null,
    ts    bigint  not null,
    val   text,
    ack   boolean,
    _from integer,
    q     integer,
    primary key (id, ts)
);

 

A legkisebb ertek az adott oraban:

select distinct on (1) date_trunc('hour',to_timestamp(ts/1000)), val from ts_string where id = 2 order by 1,2 asc;

A legnagyobb ertek az adott oraban:

select distinct on (1) date_trunc('hour',to_timestamp(ts/1000)), val from ts_string where id = 2 order by 1,2 desc;

 

Ugye ezt a ket erteket kene kivonni egymasbol es lekorlatozni az adathalmazt a mai napra, azaz majus 7. 00:00-tol 23:59-ig.

Talan valahogy a date_trunc-os datum alapjan kene GROUP BY-olni es akkor a min_val es max_val aliasu selecteket kivonni egymasbol, de a teljes megoldasig nem jutottam.

 

Ha segit itt egy kis raw data a ts_string tablabol:

id,ts,val,ack,_from,q
2,1651943218419,004139.17,true,1,0
2,1651943552309,004139.19,true,1,0
2,1651943886315,004139.20,true,1,0
2,1651944553927,004139.21,true,1,0
2,1651944887804,004139.22,true,1,0
2,1651945221732,004139.23,true,1,0
2,1651945555690,004139.24,true,1,0
2,1651945889426,004139.25,true,1,0
2,1651946223444,004139.28,true,1,0
2,1651946557211,004139.31,true,1,0
2,1651946891028,004139.33,true,1,0
2,1651947225136,004139.35,true,1,0
2,1651947559034,004139.38,true,1,0
2,1651947892582,004139.44,true,1,0
2,1651948225906,004139.60,true,1,0
2,1651948559496,004139.81,true,1,0
2,1651948892947,004140.03,true,1,0
2,1651949226157,004140.26,true,1,0

MySQL lekérdezés eredménye egy mezőbe

Sziasztok!

Lenne egy olyan megoldás, ami bash script által jól működik, leszedi a MySQL  DB-ből a ussers/user-name listát egy TXT fájlba, és utána ezt egy másik mysql script beleteszi egy állandó mezőbe (user_lists.users).

Hogyan tudnám ezt egy MySQL lekérdezéssel megodani? Az  gond, hogy vagy 10 éve foglalkoztam ilyen mélységben, adatbázisokkal.

Hostolt adatbázis - digitalocean?

Sziasztok!

 

Üzemeltetéssel jó sok éve nem foglalkozom, az új technikákkal szemben teljesen laikus vagyok, a kérdésem is ilyen.

 

15 év után megszűnik egy szerverem, ami napi használatban van. A config 8-9 éves lehet, 2GB ram, mysql elég lassú rajta, a dump 80MB tömörítve, de egyes táblák 30-40e rekordot tartalmaznak.

 

Azon gondolkoztam, hogy az adatbázist adott hostoltatnám. Mi erről a véleményetek? Milyen hátulütői lehetnek?

 

Az első google találat a digitalocean volt, így ezt nézegettem kicsit meg, aminek a legközelebbi központja Frankfurtban. Milyen hátulütői lennének? Az elmúlt években (10 évben) többször előfordult, hogy ilyen-olyan okokból órákig (talán napokig) nem lehetett elérni Magyarországon kívüli területet, vagy azok egy részét.

 

Tapasztalatok, és ajánlatok érdekelnének? Van itthoni, csak mysql hosttal foglalkozó szolgáltató is, akit akár ajánlanátok? Milyen ez a digitalcoean?

 

Átlagban 20-40 query van másodpercenként, sajnos byteszerű információm erről nincs.

MariaDb master-slave tapasztalatok

Szeretnék egy master-slave replikációt kialakítani, de olyat, hogyha szétesik a replikáció, akkor a master leállítása nélkül lehessen azt folytatni, újraépíteni.

Úgy tűnik itteni fórumbejegyzésekből és más és saját tapasztalatokból is, hogy a mysql erre nem képes.

Azonban, azt állítják, hogy a MariaDb a saját GTID kezelésével már képes erre.

Gyakorlati tapasztalatok érdekelnének olyanoktól, akik MariaDb master-slave replikációt használnak, GTID alapon, hogy ez valóban így van-e?

Alternatívaként érdekelne még olyan módszer is, ami egy megszakadt és nem folytatható replikációt helyretesz a master LOCK-ja nélkül, bár eddig én ilyen nem találtam sehol.