[MySQL] snelheid meten tussen entries

Pagina: 1
Acties:

  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11-2025
Ik heb in MySQL een tabelletje met wat entries,
deze entries worden vervolgens door een bot geparsed, en er word wat leuks mee gedaan, en zodra de bot klaar is veranderd hij de DATETIME Sent van NULL naar NOW().

Nu wil ik graag op de website ook wat statistieken, ik had zelf al bedacht door MIN en MAX van Sent te nemen, waar Sent geen NULL is, met een COUNT() om te kijken hoeveel entries per minuut we gemiddeld parsen.
Nu leek het me ook leuk om een peak-snelheid uit de DB te halen, dus een minuut waarin zoveel mogelijk entries zijn geparsed...

Zou iemand weten of dit op te lossen is met een query, en zo ja, wat voor query ?

Bedankt,
TB

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 19:59

ripexx

bibs

SQL:
1
2
3
4
5
6
-- Items per minuut waar datumveld not null
SELECT count(*), DATE_FORMAT(datumveld, '%d-%m-%y %H:%M') as tijdstip
FROM tabel
WHERE datumveld not null
GRUP BY tijdstip
ORDER BY count(*) DESC;


Verder is het een kwestie van basic SQL. Volgens mij is het zelfs zo dat je de WHERE eigenlijk via HAVING moet filteren. Maar dat mag je lekker zelf uitzoeken :P . Verder zijn er zat datum functies beschikbaar. Oja PEAK snelheid is zo relatief. ;)

Oja handige tip: http://dev.mysql.com/doc/

[ Voor 11% gewijzigd door ripexx op 13-07-2005 20:59 ]

buit is binnen sukkel


  • reinhrst
  • Registratie: December 2003
  • Niet online
Dat kan zeker wel. Kijk eens naar de GROUP BY modifier. Het probleem in dit geval is dat je iets goeds nodig hebt om op te groeperen, in jou geval zou dat moeten zijn op zoiets als concat(hour(send),minute(send)). Probeer het eens!

Bedenk wel dat een query met group by een expressie geen gebruik kan maken van de index die op dit kolom staat. Dat is geen probleem bij een paar honderd records, maar gaat je opbreken bij etterlijke duizenden....

Claude


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 19:59

ripexx

bibs

reinhrst schreef op woensdag 13 juli 2005 @ 21:01:
Dat kan zeker wel. Kijk eens naar de GROUP BY modifier. Het probleem in dit geval is dat je iets goeds nodig hebt om op te groeperen, in jou geval zou dat moeten zijn op zoiets als concat(hour(send),minute(send)). Probeer het eens!
Gebruik gewoon de date functies ipv te concatten. ;)
Bedenk wel dat een query met group by een expressie geen gebruik kan maken van de index die op dit kolom staat. Dat is geen probleem bij een paar honderd records, maar gaat je opbreken bij etterlijke duizenden....
Daarvoor hebben ze dan ook views en stored procedures bedacht ;) En opzich valt het wel mee, oke het gaat niet echt rap maar te traag om heel vaak aangeroepen te worden.

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT count(*) FROM webstats;
--+----------+
--| count(*) |
--+----------+
--|   237945 |
--+----------+
-- 1 row in set (0.00 sec)

SELECT DATE_FORMAT(request_time, '%d-%m-%Y') as dh, avg(query_duration), std(query_duration), avg(page_duration), std(page_duration), avg(inc_duration), std(inc_duration), count(id)
FROM webstats
GROUP BY dh
ORDER BY request_time;
-- 87 rows in set (0.81 sec)

[ Voor 23% gewijzigd door ripexx op 13-07-2005 22:42 ]

buit is binnen sukkel


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

ripexx schreef op woensdag 13 juli 2005 @ 22:28:
Daarvoor hebben ze dan ook views en stored procedures bedacht ;) En opzich valt het wel mee, oke het gaat niet echt rap maar te traag om heel vaakl aangeroepen te worden.
Views werken pas vanaf MySQL 5.01 (of nog later, weet ik niet zeker), en stored procedures werken er AFAIK überhaupt niet in. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 19:59

ripexx

bibs

-NMe- schreef op woensdag 13 juli 2005 @ 22:30:
[...]

Views werken pas vanaf MySQL 5.01 (of nog later, weet ik niet zeker), en stored procedures werken er AFAIK überhaupt niet in. ;)
Duh, alsof ik dat niet weet, maar dit soort grote hoeveelheden dataverwerking moet je gewoon niet door MySQL laten doen. MySQL is prima in snelle en eenvoudige selects, de rest is leuk als extra maar het is gewoon geen volledig RDBMS. Maar dat is een andere discussie.

Oja quote van mysql.com
1.5.3. What's New in MySQL 5.0

The following features are implemented in MySQL 5.0.

*

BIT Data Type: See Section 11.2, “Numeric Types”.
*

Cursors: Elementary support. See Section 19.2.11, “Cursors”.
*

Data Dictionary (Information Schema): See Chapter 22, The INFORMATION_SCHEMA Information Database.
*

Instance Manager: Can be used to start and stop the MySQL Server, even from a remote host. See Section 5.2, “The MySQL Instance Manager”.
*

Precision Math: See Chapter 23, Precision Math.
*

Stored Procedures: See Chapter 19, Stored Procedures and Functions.
*

Strict Mode and Standard Error Handling: See Section 5.3.2, “The Server SQL Mode” and Chapter 26, Error Handling in MySQL.
*

Triggers: See Chapter 20, Triggers.
*

VARCHAR Data Type: True VARCHAR support. Maximum effective length of VARCHAR is 65,532 bytes now, and no stripping of trailing whitespace occurs. See Section 11.4.1, “The CHAR and VARCHAR Types”.
*

Views: See Chapter 21, Views and Section 1.7.5.6, “Views”.

The News section of this manual includes a more in-depth list of features. See Section D.1, “Changes in release 5.0.x (Development)”.

For those wishing to take a look at the bleeding edge of MySQL development, we make our BitKeeper repository for MySQL publicly available. See Section 2.8.3, “Installing from the Development Source Tree”.

[ Voor 62% gewijzigd door ripexx op 13-07-2005 22:43 ]

buit is binnen sukkel


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

ripexx schreef op woensdag 13 juli 2005 @ 22:41:
Duh, alsof ik dat niet weet, maar dit soort grote hoeveelheden dataverwerking moet je gewoon niet door MySQL laten doen. MySQL is prima in snelle en eenvoudige selects, de rest is leuk als extra maar het is gewoon geen volledig RDBMS. Maar dat is een andere discussie.
Leuk en aardig natuurlijk, maar TS vraagt toch echt om mogelijkheden in MySQL. :)
Oja quote van mysql.com
[...]
Hee, mooi. Stored procedures en triggers in MySQL 5.0? Wordt tijd dat ik overstap (en mijn host ook). :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 19:59

ripexx

bibs

-NMe- schreef op woensdag 13 juli 2005 @ 22:48:
[...]

Leuk en aardig natuurlijk, maar TS vraagt toch echt om mogelijkheden in MySQL. :)
Maar ik geef in mijn eerste post al de oplossing en daarnaast reageer ik op het feit dat iemand aankomt om datums te gaan concaten en dan daar een group by over te halen.

Daarnaast geef ik toch duidleijk aan dat als de TS 100 request per seconden heeft en dit een pagina is die regelmatig wordt opgevraag dat hij het beter niet kan doen. ;) :P
Hee, mooi. Stored procedures en triggers in MySQL 5.0? Wordt tijd dat ik overstap (en mijn host ook). :P
Ga dan gewoon over op Postgres en er zijn genoeg hosts die dat ondersteunen.

buit is binnen sukkel

Pagina: 1