Adatbázis: SQL, XML DB

Mariadb/Percona Server thread pool memoria hasznalat

Sziasztok!

Tud valaki egy konkret memoria hasznalatra kalkulaciot thread pool eseten?

Valami hasonlora gondolok, vagy legalabbis a kepletre mint ez:
http://www.mysqlcalculator.com/

Elvileg thread pool eseten nem max_connection-el kell szorozni a per-session ertekeket, csak az egyszerre futhato thread-ek szamaval.
Ezen felul kellhet valami extra memoriahasznalattal szamolni, teszem azt a pool-nak van valami overheadje vagy a varakozo kapcsolatokra is van minimalis memoriafoglalas?

Parallel Universe adatbáziskezelő

Létezik (létezett?) egy olyan program, amit Parallel Universe-nek hívnak és gyakorlatilag a MySQL párhuzamosításra lett kihegyezve. Az utolsó fellelhető verzió az oldalán 2014 év végi. Azóta semmi. Tud valaki róla valamit? Meghalt, megszűnt, átváltott más névre? Ki szeretném próbálni és érdekelne, hogy aktív-e és így van-e értelme foglalkoznom vele.

mssql to mysql

Üdv!

Jelenlegi rendszerünk mssql-t használ.
Szeretnénk majd webáruházat amihez nem igazán fizetnénk meg azt a rabló licencet ami az sql-t illeti.
Tehát mysql lenne a webáruház alatt.
A mssql-hez lenne egy dedikált user akkor csak egy CAL-t kell venni.
Hogy lehet megoldani ezzel az userrel hogy az mssql bizonyos táblái a mysql-be másolódjanak?
Van valami migrációs script amit az adott user futtat mondjuk óránként?
Hogy lehet megoldani, hogy adott tábláknak csak a különbségét migrálja?
(pl van 100000 cikk de nem változik csak 20 akkor elég a 20-az átvinni)

Szóval, hogy történik mindez?

pch

duplikátumok törlése, egy sor meghagyásával

Fent említett feladatot próbálom megoldani, de olyan megoldás kéne ami a leggyorsabb(pl. belső select nélkül) mert a táblában több millió rekord van.
Az én megoldásom:
DELETE FROM placex WHERE place_id not in (SELECT min(place_id) FROM placex GROUP BY osm_id,osm_type);

Hogy lehetne ezt belső select nélkül megoldani? :)

válaszokat előre is köszi!

[T-SQL]IF EXISTS DML vs. DDL

Sok-sok éve foglalkozom SQL Serverrel, mégis mindig tanulok valami újat.
A következőre keresek magyarázatot:
SQL Server 2014 Enterprise, T-SQL szkript.
Szeretném M oszlopot áttenni A táblából B táblába és feltölteni értékekkel.
A szkript valahogy így néz ki:

-- B tablaban letrehozom az uj mezot, ha meg nem letezik
IF NOT EXISTS(
SELECT 1
FROM sys.columns
WHERE
name = N'M'
AND OBJECT_ID = OBJECT_ID(N'[dbo].[B]')
)
BEGIN
ALTER TABLE [dbo].[B] ADD [M] INT NULL;
END
GO

-- Update B tabla A tabla M mezoje alapjan, ha letezik
IF EXISTS (
SELECT 1
FROM sys.columns
WHERE
name = N'M'
AND OBJECT_ID = OBJECT_ID(N'[dbo].[A]')
)
BEGIN
UPDATE [dbo].[B]
SET
[dbo].[B].[M] = [dbo].[A].[M]
FROM [dbo].[A]
JOIN [dbo].[B]
ON [dbo].[A].Id = [dbo].[B].AId')
END
GO

-- Dobjuk el A tablaban az M mezot, ha letezik
IF EXISTS(
SELECT 1
FROM sys.columns
WHERE
name = N'M'
AND OBJECT_ID = OBJECT_ID(N'[dbo].[A]')
)
BEGIN
ALTER TABLE [dbo].[A] DROP COLUMN M
END

Ezt a kódrészletet elsőre lefuttatva hibaüzenet nélkül végbemegy a módosítás. Viszont mikor másodjára is újrafuttatom, akkor "Invalid column name 'M'." hibaüzenetet kapok, mindezt az UPDATE statement miatt. Az világos, hogy az SQL Server compilere értelmezi az összes utasítást egyesével, viszont akkor az ALTER TABLE-re miért nem dob hibát?
A workaround megvan, az UPDATE-et EXEC() függvényben kell meghívni és úgy már nem jelenik meg hibaüzenet.
Tehát a kérdés: a compiler miért csak DML utasítás esetén dob hibát, DDL-nél miért nem?

UPDATE: A kérdés fordítva is fennáll, ha DDL esetén nem dob hibát, akkor DML esetén miért? Tud valaki mondani olyan szkenáriót, ami jó példa erre?

PGPOOL Postgresql 9.4 streaming replication

Sziasztok,

Egy Postgresql cluster-t akarok összerakni. PgpoolII-t használok amelybe bekapcsoltam a következő modulokat:
Master Slave mode
Health Check
Load Balance mode

Azt szeretnem, ha a Master node nem elérhető akkor a Slave Node legyen promoválva Master-nek. A régi Master-ből meg lehessen Slave node-ot csinálni.
És ez a körforgás mindig maradjon meg (if Master failed -> Slave promoted to Master -> Old Master downgraded to Slave)
Csinált már hasonlót valaki? Bármilyen ötletet szívesen fogadok.

SQL skillz hogyan?

Ugy latom tanulmanyaim soran nem szereztem annyi gyakorlatot adatbaziskezelest illetoen, mint amennyi optimalis lenne. Par honapja egy interju elott elovettem az egyik projectemet es gyakoroltam kicsit, de ez legfeljebb alapszintu tudast biztositott. Ugy gondolom, hogy talan sem az adatbazis terjedelme sem a komplexitasa nem nyujtott tul sok lehetoseget igazi fejlodesre. Ami viszont talan fontosabb, az a feladatok hianya, a sajat magam altal kitalalt lekerdezesek ugye nem fogan nagyon elore vinni...

Pedig szeretnek tobb gyakorlati tudast felhalmozni, mar csak azert is, mert sajat magam a backend fejlesztest reszesitem elonyben.

Szeretnek toletek tippeket kerni arra, hogy vallhatok SQL-ben, lekerdezesek irasaban es adatbaziskezelesben jobba.

Koszonom.

Postgre Function

Sziasztok!

Életemben most írok először postgre functiont és ebben kérnék egy kis segítséget..A feladat az lenne, hogy egy számot adnánk vissza és azt pedig a lengthből számoljuk, én CASE-zel próbáltam megírni de nem tudom, hogy pontosan ezt hogy lehet... íme:

CREATE OR REPLACE FUNCTION r4u_graph(cost DOUBLE PRECISION, meta_steep DOUBLE PRECISION, meta_curb_height DOUBLE PRECISION, max_steep_up DOUBLE PRECISION,
max_steep_down DOUBLE PRECISION, max_curb_up DOUBLE PRECISION, meta_width DOUBLE PRECISION, length DOUBLE PRECISION)
RETURNS DOUBLE PRECISION AS $$
DECLARE
--declaration
BEGIN
PERFORM
inner_function(CASE
WHEN meta_steep > max_steep_up then (length*10000)
WHEN meta_steep < max_steep_down then (length*10000)
WHEN meta_curb_height > max_curb_up then (length*10000)
WHEN meta_curb_height < max_curb_down then (length*10000)
WHEN -meta_steep > max_steep_up then (length*10000)
WHEN -meta_steep < max_steep_down then (length*10000)
WHEN -meta_curb_height > max_curb_up then (length*10000)
WHEN -meta_curb_height < max_steep_down then (length*10000)
ELSE cost
END)
END;
$$ LANGUAGE plgsql;

Több mysql lekérdezés egyesítése

Sziasztok!

Van két mysql lekérdezésem és egyelőre azt szeretném megoldani, hogy egy lekérdezés legyen a kettőből. Ha fölösleges idézőjel lenne benne az azért van, mert php-ből másoltam.

SELECT DISTINCT betardatum,GROUP_CONCAT(DISTINCT (CASE WHEN (betardatum >= '$startdate 00:00:00' AND betardatum <= '$enddate 00:00:00') THEN betarszam END) SEPARATOR ',') AS betarszam, COUNT(betarszam) AS betarolva FROM goods_in WHERE betardatum>='$startdate 00:00:00' AND betardatum <= '$enddate 00:00:00' AND supplier='$supplier' AND kikapcs = 0 AND aruaz = szuloaz GROUP BY betardatum

SELECT DISTINCT kitardatum,GROUP_CONCAT(DISTINCT (CASE WHEN kitardatum <= '$enddate 00:00:00' AND kitardatum >= '$startdate 00:00:00' THEN szlsz END) SEPARATOR ',') AS szlsz, COUNT(szlsz) AS kitarolva FROM goods_in WHERE kitardatum <= '$enddate 00:00:00' AND kitardatum >= '$startdate 00:00:00' AND supplier='$supplier' AND kikapcs = 0 AND aruaz = szuloaz GROUP BY kitardatum

Ha tömbbe teszem a kimeneteket, akkor a tömbök kimenete így néz ki jelen pillanatban.

Array ( [0] => Array ( [betardatum] => 2016-03-02 00:00:00 [betarszam] => 16-7757,16-7812,16-7813,16-7814,16-7815,16-7816 [betarolva] => 142 ) [1] => Array ( [betardatum] => 2016-03-03 00:00:00 [betarszam] => 16-7817,16-7818,16-7827,16-7828,16-7829,16-7830 [betarolva] => 134 ))

Array ( [0] => Array ( [kitardatum] => 2016-03-01 00:00:00 [szlsz] => K6-15373,K6-15377,K6-15376,K6-15374,K6-15378,K6-15383 [kitarolva] => 119 ) [1] => Array ( [kitardatum] => 2016-03-02 00:00:00 [szlsz] => K6-15405,K6-15406,K6-15401,K6-15409,K6-15407 [kitarolva] => 139 ))

Valami ilyesmi kimenetet szeretnék kapni. Tehát az azonos dátumi kitár és betár részeket fésülje össze.

Array ( [0] => Array ( [kitardatum] => 2016-03-01 00:00:00 [szlsz] => K6-15373,K6-15377,K6-15376,K6-15374,K6-15378,K6-15383 [kitarolva] => 119 ) [1] => Array ( [betardatum] => 2016-03-02 00:00:00 [betarszam] => 16-7757,16-7812,16-7813,16-7814,16-7815,16-7816 [betarolva] => 142 [kitardatum] => 2016-03-02 00:00:00 [szlsz] => K6-15405,K6-15406,K6-15401,K6-15409,K6-15407 [kitarolva] => 139 ) [2] => Array ( [betardatum] => 2016-03-03 00:00:00 [betarszam] => 16-7817,16-7818,16-7827,16-7828,16-7829,16-7830 [betarolva] => 134 ))

Előre is köszönöm a segítségeket.

Lekérdezés sok feltétellel, adatok csoportosítása

Sziasztok!

Adott egy raktár adatbázis és annak egy táblája. A táblában raktározott egységek, raklapok vannak. Ezeknek a raklapoknak van betározási és kitározási dátumuk. Egy olyan lekérdezést kell készítenek ami egy bizonyos elszámolási időszakot vesz alapul.

szerk.:

Az alábbi kimenetet szeretném kapni nagyjából:

A képet a Képfeltöltés.hu tárolja.

Tehát úgy kellene csoportosítani az adatokat, hogy azok a szállítólevél számú egységek amik az adott elszámolási időszakban vagy betárolásra kerültek vagy kitárolásra kerültek kerüljenek egy csoportba külön betár és külön kitár részbe.

Még annyi adalék, hogy vannak olyan egységek amik korábban lettek betárolva mint az elszámolási időszak kezdete, de még nem lettek kitárolásra. Ebben az esetbe az első naphoz kell ezeket az egységeket tenni. Gondolkodtam a GROUP_CONCAT vagy a SUBSELECT megoldásokkal, de eddig még sajnos nem sikerült megoldanom. Mivel nagy adatmennyiségekről van szó ezért mindenképpen Mysql lekérdezéssel szeretném megvalósítani.

Remélem érthetően le tudtam írni problémát. Köszönöm ha segítesz!