abonnement Unibet Coolblue
  zondag 13 november 2011 @ 16:00:45 #51
75592 GlowMouse
l'état, c'est moi
pi_104319192
je kunt ook je query en je tabellen hier posten
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_104346643
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SELECT     
    floco_flight_id,         (int)
    airplane,                (varchar)
    firstpilot_feu_id,       (int)
    secondpilot_feu_id,      (int)
    starttime,               (datetime)
    landingtime,             (datetime)
    startmethod,             (varchar)
    flighttype,              (varchar)
    club,                    (boolean)
    own,                     (boolean)
    flighttime,              (time)
    DATE(starttime) 
        AS datum,
    feu1.data 
        AS firstpilot_name,
    feu2.data 
        AS secondpilot_name
FROM flightdb_flights
LEFT JOIN feusers_properties AS feu1
    ON (firstpilot_feu_id = feu1.userid)
        AND (feu1.title = 'realname')
LEFT JOIN feusers_properties AS feu2
    ON (secondpilot_feu_id = feu2.userid)
        AND (feu2.title = 'realname')
WHERE (YEAR(starttime) = '2011' 
    AND airplane IN ('PH454','PH974','PH1006','PH1210','PH1382','PH1417','PH1433')
    AND flighttime > '01:05:00')
ORDER BY flighttime desc
LIMIT 0,10
Dit is de query. De tabel flightdb_flights laat zich raden. Voor de duidelijkheid heb ik de datatypes er even achter gezet. Deze heeft nu een index op (firstpilot_feu_id, secondpilot_feu_id), op (flighttime) en op (starttime). Er zitten nu een goeie 10.000 records in, ik reken op ongeveer 5000 records per jaar.

feusers_properties had ik al eens gepost, deze heb ik een index gegeven op (userid,title):
1
2
3
4
5
userid | title | data
1      | name  | piet
2      | name  | jan
1      | adres | hoofdstraat 21
3      | name  | henk

-edit-
een andere query die veel vaker voorkomt is dezelfde, maar dan eindigend op:
1
2
3
WHERE (YEAR(starttime) = '2011' 
    AND (firstpilot_feu_id = '2' OR secondpilot_feu_id = '2'))
ORDER BY starttime
en ook:
1
2
WHERE (DATE(starttime) = '2011-10-30')
ORDER BY starttime
waarbij de datum en userid uiteraard kunnen verschillen. Deze query's zijn allebei wel snel.

[ Bericht 10% gewijzigd door KomtTijd... op 14-11-2011 11:57:07 ]
  maandag 14 november 2011 @ 11:56:48 #53
58834 Catbert
The evil HR Director.
pi_104347349
Je berekent on the fly (huhu) waarden waarop je ordent, dat betekent min of meer dat er een volledige tijdelijke tabel opgebouwd moet worden (zou je waarschijnlijk ook zien in een query explain). Oftewel; bereken die flight-time voor en zet er een index op.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
pi_104347445
quote:
0s.gif Op maandag 14 november 2011 11:56 schreef Catbert het volgende:
Je berekent on the fly (huhu) waarden waarop je ordent, dat betekent min of meer dat er een volledige tijdelijke tabel opgebouwd moet worden (zou je waarschijnlijk ook zien in een query explain). Oftewel; bereken die flight-time voor en zet er een index op.
Dat is juist wat ik gedaan heb. Flighttime is nu een eigen kolom met index, terwijl deze eerst met TIMEDIFF on the fly berekend werd. Het verschil in prestaties is alleen marginaal.

Ik heb ook geprobeerd wat het verschil is tussen WHERE YEAR(starttime) = '2011' en WHERE starttime BETWEEN 2011-01-01 AND 2011-12-31, maar dat is ook nihil/onmeetbaar.
  maandag 14 november 2011 @ 12:03:50 #55
58834 Catbert
The evil HR Director.
pi_104347548
Doe eens een query explain?

Sowieso is een query op 10k records complete peanuts.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
pi_104348014
quote:
0s.gif Op maandag 14 november 2011 12:03 schreef Catbert het volgende:
Doe eens een query explain?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
pear_ResultSet Object
(
    [emptyTimeStamp] =>  
    [emptyDate] =>   
    [datetime] => 
    [connectionId] => Resource id #25
    [fields] => Array
        (
            [id] => 1
            [select_type] => SIMPLE
            [table] => flightdb_flights
            [type] => range
            [possible_keys] => flighttime,airplane
            [key] => flighttime
            [key_len] => 4
            [ref] => 
            [rows] => 466
            [Extra] => Using where; Using temporary; Using filesort
        )

    [resultId] => Resource id #248
    [_currentRow] => 0
    [_numOfRows] => 3
    [_numOfFields] => 10
    [fetchMode] => 1
    [EOF] => 
    [record] => Array
        (
        )

)
ik zit me nog even in te lezen hoe ik dit moet vertalen...

-edit- voor de scherpe lezers: in de testdatabase stond dus ook nog een index op airplane.
Ik heb een index gemaakt op (airplane,starttime,flighttime), dat kan maar dan gebruikt 'ie nog steeds liever de index op flighttime.

quote:
Sowieso is een query op 10k records complete peanuts.
Dat leek mij ook, daarom is het ook irritant dat het zo traag gaat.

[ Bericht 1% gewijzigd door KomtTijd... op 14-11-2011 12:37:58 ]
  maandag 14 november 2011 @ 12:52:18 #57
75592 GlowMouse
l'état, c'est moi
pi_104348802
Waar is die explain van en kan je dat niet mooier weergeven?

>> De tabel flightdb_flights laat zich raden.
niet waar, bovendien zijn er meer tabellen

>> AND airplane IN ('PH454','PH974','PH1006','PH1210','PH1382','PH1417','PH1433')
hoe selectief is dat?
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
  maandag 14 november 2011 @ 13:01:17 #58
58834 Catbert
The evil HR Director.
pi_104349047
Ik snap echt niet waarom MySQL een tijdelijke tabel nodig denkt te hebben hiervoor. Rare query explain trouwens, probeer eens "EXPLAIN EXTENDED"?

Ben wel blij dat we hier vooral met MSSQL werken zeg...

quote:
0s.gif Op maandag 14 november 2011 12:20 schreef KomtTijd... het volgende:
Dat leek mij ook, daarom is het ook irritant dat het zo traag gaat.
Nou waarom het zo traag gaat is wel duidelijk. De vraag is waarom hij voor dat execution plan kiest...
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
pi_104349390
Ah, ik heb gevonden wat het verschil maakt! De index op (userid,data) in de tabel feusers_properties! Dan valt ook ineens de "Using temporary; Using filesort" weg uit de explain.
Ik heb nu WHERE (flighttime > 01:05:00) weer uit de query gehaald, met index duurt de query nu rond de 0,006 seconden, zonder nog steeds 7-8 seconden.

Helaas probeer ik dat nu pas zónder die WHERE (flighttime > 01:05:00), waardoor het me nog niet opgevallen was. Ik was gisteren de boel al online aan het zetten (en had dus de benchmarks weggehaald).

quote:
0s.gif Op maandag 14 november 2011 12:52 schreef GlowMouse het volgende:
Waar is die explain van en kan je dat niet mooier weergeven?

>> De tabel flightdb_flights laat zich raden.
niet waar, bovendien zijn er meer tabellen

de explain is van de query exact zoals ik hierboven gepost heb (dus niet die twee varianten). Mooier weergeven zou kunnen maar ik wist/weet amper waar ik naar zit te kijken. Heb exlpain nog niet eerder gebruikt.
Wat zou je nog meer willen weten over flightdb_flights? En meer tabellen... Ja die zijn er, maar zitten niet in deze query. Moet ik dan mijn hele database posten? Lijkt me een beetje overdreven...
1
2
3
4
5
6
7
8
9
10
11
12
13
    1     floco_flight_id         bigint(19)
    2     airplane                 varchar(80)
    3     firstpilot_id             int(11)
    4     secondpilot_id             int(11)
    5     starttime                 datetime             
    6     landingtime             datetime 
    7     startmethod             varchar(20)
    8     flighttype                 varchar(20)
    9     club                     tinyint(1)
    10     own                     tinyint(1)
    11     firstpilot_feu_id         int(11)
    12     secondpilot_feu_id         int(11)
    13     flighttime                 time
dit is écht de hele tabel dan.
1
2
3
4
1     id     int(11)             
2     userid     int(11) 
3     title     varchar(100)     
4     data     longtext
En dit de hele tabel feusers_properties
quote:
>> AND airplane IN ('PH454','PH974','PH1006','PH1210','PH1382','PH1417','PH1433')
hoe selectief is dat?
Niet bepaald, denk dat je dan nog 90% over hebt.
pi_104349754
quote:
0s.gif Op maandag 14 november 2011 13:01 schreef Catbert het volgende:

[..]

Nou waarom het zo traag gaat is wel duidelijk. De vraag is waarom hij voor dat execution plan kiest...
Je hebt het hier dus over "using temporary", neem ik aan?
Dan weet ik dat ik dat voortaan in de gaten moet houden.
  maandag 14 november 2011 @ 13:31:38 #61
58834 Catbert
The evil HR Director.
pi_104349895
quote:
3s.gif Op maandag 14 november 2011 13:28 schreef KomtTijd... het volgende:
Je hebt het hier dus over "using temporary", neem ik aan?
Dan weet ik dat ik dat voortaan in de gaten moet houden.
Using temporary en using filesort zijn beiden indicaties dat MySQL het niet op de indexen op heeft kunnen lossen en zijn flinke performance hits.

Voor de volgende keer: blijf testen met die simpele query een paar posts terug. Je zet ons ook op het verkeerde been door over te stappen op die grote join.
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
pi_104350048
Mja om het echt goed uit te zoeken had ik gewoon een testcase moeten maken inderdaad.
Zo zie je maar weer, systematisch aanpakken gaat toch altijd weer het snelst. :@
  maandag 14 november 2011 @ 13:50:26 #63
75592 GlowMouse
l'état, c'est moi
pi_104350539
SHOW CREATE TABLE laat ook je indices zien.
eee7a201261dfdad9fdfe74277d27e68890cf0a220f41425870f2ca26e0521b0
pi_104385345
Ik snap er echt geen donder van.

ik heb een script dat werk verdeeld, dit script include een rapportage script.
Wanneer het werk script word gedraaid schrijft het rapportage script netjes alle informatie weg in een log directory en zend een mail.
Savonds word ditzelfde script gestart door een scheduled task op een windows 2008 server....
Maar daar gaat het fout, deze geeft aan dat hij gedraaid heeft maar mn logs worden niet weggeschreven.
Start ik de task met de hand dan word alles netjes weggeschreven

Nu heb ik een kopie van de task gemaakt en een kopie van het rapportage script.
Enkel de log directory heb ik veranderd, deze zend netjes de mail uit en schrijft de logs weg?

Enige wat ik nog niet geprobeerd heb ik dezelfde logdir aanhouden, maar dat zou niet uit moeten maken aangezien sochtends alles wel word weg geschreven.

Ander leuk feit toen dit nog op een unix machine draaide was er geen enkel probleem.
:? :? :? :? :?
  dinsdag 15 november 2011 @ 09:23:16 #65
230788 n8n
Pragmatisch
pi_104385691
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.

De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.

voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar

nadelen:
- cookies?
Specialization is for insects”.—Robert Heinlein
  dinsdag 15 november 2011 @ 09:25:50 #66
137776 boem-dikkie
Jedi Mind Baby!
pi_104385749
quote:
7s.gif Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.

De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.

voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar

nadelen:
- cookies?
Je kunt ook gewoon bij het inloggen controleren of de opgegeven username en het wachtwoord overeen komen met een match in de database en met elkaar. Dan hoef je helemaal geen cookies te gebruiken. Weet overigens niet of dit beter is hoor.
Ik weet niks van Hindoes. Wel van Samoerai en andere dingen.
  dinsdag 15 november 2011 @ 09:29:33 #67
91039 mstx
2x1/2 = 1/2 x 1/2
pi_104385821
quote:
7s.gif Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.

De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.

voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar

nadelen:
- cookies?
MD5 is imo een beetje verouderd, simpele wachtwoorden zijn eenvoudig te achterhalen. Ik zou bijvoorbeeld SHA gebruiken.
Om ingelogd te blijven zou ik een random hash in een cookie zetten die je aan de user koppelt.
Op donderdag 2 juli 2009 22:41 schreef RTB het volgende:
als ik elk rap"liedje" een kans moest geven was ik aan het eind van dit millennium nog bezig met het tempo waarin die kotshoop uitgebraakt wordt.
👾
  dinsdag 15 november 2011 @ 09:38:30 #68
63192 ursel
"Het Is Hier Fantastisch!
pi_104386025
quote:
0s.gif Op dinsdag 15 november 2011 09:05 schreef Darkomen het volgende:
Ik snap er echt geen donder van.

ik heb een script dat werk verdeeld, dit script include een rapportage script.
Wanneer het werk script word gedraaid schrijft het rapportage script netjes alle informatie weg in een log directory en zend een mail.
Savonds word ditzelfde script gestart door een scheduled task op een windows 2008 server....
Maar daar gaat het fout, deze geeft aan dat hij gedraaid heeft maar mn logs worden niet weggeschreven.
Start ik de task met de hand dan word alles netjes weggeschreven

Nu heb ik een kopie van de task gemaakt en een kopie van het rapportage script.
Enkel de log directory heb ik veranderd, deze zend netjes de mail uit en schrijft de logs weg?

Enige wat ik nog niet geprobeerd heb ik dezelfde logdir aanhouden, maar dat zou niet uit moeten maken aangezien sochtends alles wel word weg geschreven.

Ander leuk feit toen dit nog op een unix machine draaide was er geen enkel probleem.
:? :? :? :? :?
Vanuit welke user stuur je hem handmatig aan en vanuit welke user via de scheduled task?
pi_104386057
Zou beide de zelfde user moeten zijn, maar moet ook niet uitmaken, de 2de windows task draait namelijk wel.
  dinsdag 15 november 2011 @ 09:40:16 #70
84244 Scorpie
Abject en infaam!
pi_104386058
quote:
0s.gif Op dinsdag 15 november 2011 09:05 schreef Darkomen het volgende:
Ik snap er echt geen donder van.

ik heb een script dat werk verdeeld, dit script include een rapportage script.
Wanneer het werk script word gedraaid schrijft het rapportage script netjes alle informatie weg in een log directory en zend een mail.
Savonds word ditzelfde script gestart door een scheduled task op een windows 2008 server....
Maar daar gaat het fout, deze geeft aan dat hij gedraaid heeft maar mn logs worden niet weggeschreven.
Start ik de task met de hand dan word alles netjes weggeschreven

Nu heb ik een kopie van de task gemaakt en een kopie van het rapportage script.
Enkel de log directory heb ik veranderd, deze zend netjes de mail uit en schrijft de logs weg?

Enige wat ik nog niet geprobeerd heb ik dezelfde logdir aanhouden, maar dat zou niet uit moeten maken aangezien sochtends alles wel word weg geschreven.

Ander leuk feit toen dit nog op een unix machine draaide was er geen enkel probleem.
:? :? :? :? :?
Rechtenprobleem op de map ivm taak scheduler en account waaronder deze draait.
Op dinsdag 13 augustus schreef Xa1pt:
Neuh, fraude mag best aangepakt worden. Maar dat het de maatschappij meer oplevert of beter is voor de samenleving, is nog maar de vraag.
Op donderdag 25 juni 2015 schreef KoosVogels:
Klopt. Ik ben een racist.
pi_104386160
Hoe moet ik dat dan zien?
Via het script => http / iis user
Windows tasks => de ingelogde user

Als ik de rechten check hebben zowel de user als iis dezelfde rechten op de map.
  dinsdag 15 november 2011 @ 10:04:49 #72
58834 Catbert
The evil HR Director.
pi_104386663
quote:
7s.gif Op dinsdag 15 november 2011 09:23 schreef n8n het volgende:
db: naam, ww encrypted met md5. bij inloggen wordt het wachtwoord omgezet naar md5 voor naar de server gestuurd te worden. cookie met naam en md5-ww staat in cookie om ingelogd te blijven.

De vraag is of dit een veilige methode is, heb verder totaal geen ervaring met beveiliging/inloggen met php.

voordelen:
- ww staat niet open en bloot in cookie.
- ww wordt encrypted over het internet verstuurd
- bij serverhack staan user-ww'en niet openbaar

nadelen:
- cookies?
Je zet ten eerste nooit een PW uberhaupt in een cookie. Je onthoudt de sessie. Daarnaast is MD5 achterhaald. Tenslotte zie ik nergens salts genoemd en ik hoop niet dat je overweegt MD5 passwords unsalted in je DB op te slaan?
"[...] a large number of the teenagers claiming Asperger's are, in fact, merely dicks."
  dinsdag 15 november 2011 @ 10:06:33 #73
230788 n8n
Pragmatisch
pi_104386722
Ok duidelijk, dan heb ik weer iets om me over in te lezen. bedankt
Specialization is for insects”.—Robert Heinlein
  dinsdag 15 november 2011 @ 10:07:43 #74
230788 n8n
Pragmatisch
pi_104386763
quote:
14s.gif Op dinsdag 15 november 2011 09:25 schreef boem-dikkie het volgende:

[..]

Je kunt ook gewoon bij het inloggen controleren of de opgegeven username en het wachtwoord overeen komen met een match in de database en met elkaar. Dan hoef je helemaal geen cookies te gebruiken. Weet overigens niet of dit beter is hoor.
dat doe ik ook wel, had alleen geen idee hoe ik een sessie aan kon maken
Specialization is for insects”.—Robert Heinlein
pi_104387928
1/bin/sh: /home/frietkot/domains/naam.nl/public_html/includes/cronjobs/cronjob_aanmaningen.php: Permission denied
Eeuhm... :P Admin vragen op de server perhaps denk ik nu :D
Redacted
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')