Adatbázis: SQL, XML DB

OOM killer nagy pagecache mellett

Helo,

kivancsi vagyok, ki mit gondol.
Adott egy bare metal szerver 16G RAM-mal, rajta egy Postgres instance. Altalaban a memoria kozel teljesen foglalt, de a free es a vmstat alapjan kb. 14.5 GB page cache, kb. 1 G pedig hasznalatban van. vm.overcommit_memory = 0 (heuristic).

Namost, az OOM killer egyszercsak lelott par Postgres processzt, mert szerinte nem volt elegendo szabad memoria.

Kerdes: miert nem takaritja ki a mmap-elt fajlokat a kernel ahelyett, hogy leolne az egyik processzt?

Egyebkent:

- az OOM killer akkor utott be, amikor egy uj (egyebkent kis memoriaigenyu) processz elindult a gepen (ClamAV)
- a memoriafragmentacio jelentos (256K folotti chunk-okbol kb. egyaltalan nem volt szabadon).

Mysql teljesen halott by me (Megoldva)

Sziasztok,

Ubuntu Szerveren futott alapbol (telepitesnel ki lehetett valasztani) egy MySQL szerver amit Webmin-en keresztul el is lehetett erni.
Nem hasznaltam idaig semmire, csak volt. Most azonban szerettem volna :)

sudo mysql_secure_installation

beallitasa utan mar nem sikerult elerni igy arra jutottam hogy hasznalom eszetlenul a google-t es torlom valahogy a beallitast --> Mysql meghalt mert sem Webmin-en keresztul nem tudok hozza ferni sem terminalbol.

sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf

parancs eseten meg azt kapom hogy nincs ilyen konyvtar sem.

Probaltam

Torolni es telepiteni de semmi hatas :

sudo apt install mysql-server mysql-client  / sudo apt remove mysql-server mysql-client

Forras ahonnan lestem az okossagot (okossag csak faszul hasznaltam valoszinuleg:) ) : https://askubuntu.com/questions/172514/how-do-i-uninstall-mysql

sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-core-5.5 mysql-client-core-5.5
sudo rm -rf /etc/mysql /var/lib/mysql
sudo apt-get autoremove
sudo apt-get autoclean

Innen kiszedtem a

mysql-common

-t mert akkor torolte volna a kodit is tobbek kozott (ami nem hasznalja a servert igy nem ertem miert akarja torolni?) De nem szeretnem azt is ujra beallitani

Mit csinaljak?:)
Koszonom

MYSQL-hez grafikus lekérdezés

Sziasztok!

Egyre hosszabbak a mysql query-k, amiket írok és kezdek kicsit belezavarodni.

Egyrészt arra lennék kíváncsi, hogy hogyan kellene "rendesen" pl. az egymásba ágyazott SELECT -eket kivitelezni, mert most így a MySQL Workbench 6.x alatt nagyon zavaró, hogy nem látom, melyik zárójelnek hol a párja, stb.

Másrészt azt gondolom most, hogy valamiféle grafikus query szerkesztő biztosan segítene, csak éppen nem nagyon találok ilyet (Linux, Mysql). A Workbench-ben a szerkesztő felület a táblák létrehozását segíti, de a lekérdezést nem (vagy csak elkerülte a figyelmemet).

Szóval, ki hogyan tartja karban a query-ket?

Cözi

[megoldva] MySQL / delete from / Miért lassú?

Sziasztok,

Tudnátok segíteni? Miért lassú az alábbi MySQL parancs?

Többb mint 4 másodpercig fut egy modern gépen, ahol semmi más művelet nincs - többször futtatva is:

delete from table1 where column1 like 'pattern1%' and column2 in (select column3 from table2 where column4='pattern2')

table1 kb. 1100 recordot tartalmaz, ebből 95% a column1 / pattern1% találat.

table2 kb. 5000 recordot tartalmaz, ebből közel nulla a column4 / pattern2 találat.

Host: MySQL v5.7, Ubuntu 16 64 bit, gyors SSD, 1GB az InnoDB pool mem

Lehetne vajon a fentit egyszerűbben vagy gyorsabban? Köszönöm.

Szerk.: (kicsit olvashatóbb forma):

DELETE FROM t1 WHERE c1 LIKE 'p1%' AND c2 IN (SELECT c3 FROM t2 WHERE c4='p2')

Szerk2.: nem tudtom hogy ilyen gyorsan válaszoltok, amit köszönök, ezért indítottam ezelőtt egy SO fórum szálat is, beteszem ide, hátha segít:
http://stackoverflow.com/questions/40702486/mysql-delete-from-why-is-it…

Szerk.: Végül megoldottam index hozzáadásával a tábla2 column3 oszlopához, így nulla idő alatt fut.

SQL Express 2016 SSRS

Sziasztok,

naponta rengeteg riportot kell készítenünk a vezetőségünknek, így elgondolkodtam rajta, hogy mi lenne ha megpróbálnánk automatizálni az egészet.
Kicsit kutakodva rátaláltam, hogy a microsoft sql szervere mellé telepíteni lehet egy report services szolgáltatást, amivel elméletileg megoldható hogy a megfelelő időben a megfelelő embernek kiküldje egy email formájában a szükséges riportot.

Kérdésem csak annyi lenne hogy ez megoldható-e az express verzióval?

Feltelepítettem, elkészítettem az első teszt riportomat is, de sehol sem találok "subscription" lehetőséget.

Ha esetleg express verzióval nem megoldható, akkor nincs valami ötletek hogy hogyan lehetne ezt kivitelezni sok 100e-es licence díjak nélkül?

Köszi előre is.

Egy érthetetlenül lassú query

Sziasztok.

Van egy szép nagy programom, egy összetettre sikerült PostgreSQL adatbázissal: https://github.com/csikfer/lanview2
Elboldogulok úgy általában az SQL-lel, de nem vagyok guru a témában.
Van egy lekérdezés a programba, ami irreálisan lassú. A lekérdezés 4 másodperc, miközben egy teljesen üres táblát kérdez le. Azt érzem, hogy a query messze nem optimális, de a semmin mit lehet molyolni 4 másodpercig, még ha balfasz módon fogalmaztam is meg a kérdést? És persze akkor is sok lesz ez a (több mint) 4 másodperc, ha lesz adat is a táblában, márpedig lehet benne sok rekord.
A query :

SELECT NULL,* FROM ONLY view_alarms WHERE array_length(ack_user_ids, 1) IS NULL AND is_group_place(place_id, ?) AND user_is_any_groups_member(?,online_group_ids);

A view_alarm egy VIEW tábla, amin szerintem van mit finomítani:

CREATE VIEW view_alarms AS
SELECT
a.alarm_id AS view_alarm_id,
a.host_service_id,
hs.node_id,
n.place_id,
a.superior_alarm_id,
a.begin_time,
a.end_time,
a.first_status,
a.max_status,
a.last_status,
alarm_message(host_service_id, max_status) AS msg,
COALESCE(hs.offline_group_ids, s.offline_group_ids) AS offline_group_ids,
COALESCE(hs.online_group_ids, s.online_group_ids) AS online_group_ids,
ARRAY(SELECT user_id FROM user_events WHERE alarm_id = a.alarm_id AND event_type = 'notice') AS notice_user_ids,
ARRAY(SELECT user_id FROM user_events WHERE alarm_id = a.alarm_id AND event_type = 'view') AS view_user_ids,
ARRAY(SELECT user_id FROM user_events WHERE alarm_id = a.alarm_id AND event_type = 'acknowledge') AS ack_user_ids,
ARRAY(SELECT user_id FROM user_events WHERE alarm_id = a.alarm_id AND event_type = 'sendmessage') AS msg_user_ids,
ARRAY(SELECT user_id FROM user_events WHERE alarm_id = a.alarm_id AND event_type = 'sendmail') AS mail_user_ids
FROM alarms AS a
JOIN host_services AS hs USING(host_service_id)
JOIN services AS s USING(service_id)
JOIN nodes AS n USING(node_id)
WHERE NOT a.noalarm;

Az alarms rekordból lehet viszonylag sok is, és fontos lenne, hogy max. 1-2 másodperc alatt lefusson. Elvileg a lekérdezés eredménye néhány sor, de nem kéne kiakadnia a programnak, ha pl. pár száz sor lenne.
A VIEW-ben hozzácsapom a táblához a felhasználói eseményeket (Megjelent a programban a riasztás, megnézte a részleteit, nyugtázta) ezek mint ID tömbök kerülnek a VIEW-ba. Valamint bekerül a VIEW-be a riasztás helye, milyen szolgáltatás, melyik eszközön riasztott.
A query-ben szűrök arra, hogy a riasztás a megfelelő zónában volt-e, az aktuális felhasználó benne van-e a csoportban, melyeknek on-line riasztást kell adni, és hogy nyugtázta-e már valaki ezt a riasztást.
Hogyan lehetne optimalizálni a fenti lekérdezést (további infók a linkben)?

Hogyan regex_replace ?

Sziasztok!
Van egy táblám MySQL alatt.
Ennek a táblának van egy szín mezője(oszlopa), amely tartalmazza a piroslada1500 szót minden rekordnál.
Egy parancs kellene, ami így keződik: SELECT * FROM `autok` WHERE szin regex_replace ....
és a "lada" szót kellene kicserélni "skoda" -ra. Atomrégen (14 évvel ezelőtt) csináltam utoljára ilyet, akkor rutin volt, most teljes üresség kong már a fejemben. Nem használtam. Van aki tud segíteni?