Re: [vz-dev] SQL Abfrage aktueller Verbrauch sehr langsam

2013-09-15 Diskussionsfäden Sven peitz

Hallo,

leider kann ich derzeit nicht weiter testen, weil mein Provider den 
Zugriff wegen zu hoher SQL Last gesperrt hat.  ;-(

[X] MySQL-Last (Wartezeit auf Festplattenzugriff)

[X] MySQL-Last lesend (SELECT-Statements)

[X] Kontinuierlich hohe Last

Also sind die 6 Sekunden verursacht durch Auslastung des Servers.
Dem Vorschlag kann ich jetzt nicht folgen. SQL ist nicht mein täglich 
Brot ;-)


Select value where channel order by id desc limit 1


Aber den Vorschlag über die Middleware zu gehen würde ich gerne 
aufgreifen wenn ich wüsste wie.


Eigentlich brauche ich ja nur den zuletzt in der Datenbank eingetragenen 
Wert zur ID.

Ich muss jetzt aber erst mal warten bis der Zugriff wieder frei ist.

Gruß
Sven

Am 14.09.2013 11:40, schrieb Thorben Thuermer:

On Sat, 14 Sep 2013 11:07:20 +0200
Sven peitz sven.pe...@gmx.net wrote:

für mein neues Verbrauchs oder Vergleichsanzeige Projekt der aktuellen
PV Einspeisung und Bezug vom EVU frage ich in einem PHP script die
Volkszähler Datenbank ab.

[...]

$result1=mysql_query(SELECT value FROM data WHERE id = (select max(id)
FROM data WHERE channel_id LIKE  '14'));

auch zu beachten,
was genau in data.value steht ist vom channel-type abhaengig...
diese loesung funktioniert nur, wenn leistungswerte geloggt werden.


Diese Anfrage dauert ca. 6-7 Sekunden. Hat jemand eine Idee wie man
dieses beschleunigen kann?

die anfrage ohne subquery formulieren?
(subqueries sind fuer nicht sql-er zwar oft intuitiver,
  aber meist nicht effizient.)

select value where channel order by id desc limit 1


Gruß
Sven

- Thorben




Re: [vz-dev] SQL Abfrage aktueller Verbrauch sehr langsam

2013-09-15 Diskussionsfäden Andreas Goetz
Hallo Sven,

sowas in der Form sollte helfen:

http://host/middleware.php/data/8f20eb60-60df-11e2-81a1-3d3a387429e.json?from=now

vg
Andreas


2013/9/15 Sven peitz sven.pe...@gmx.net

  Hallo,

 leider kann ich derzeit nicht weiter testen, weil mein Provider den
 Zugriff wegen zu hoher SQL Last gesperrt hat.  ;-(
 [X] MySQL-Last (Wartezeit auf Festplattenzugriff)

 [X] MySQL-Last lesend (SELECT-Statements)

 [X] Kontinuierlich hohe Last

 Also sind die 6 Sekunden verursacht durch Auslastung des Servers.
 Dem Vorschlag kann ich jetzt nicht folgen. SQL ist nicht mein täglich Brot
 ;-)

 Select value where channel order by id desc limit 1



 Aber den Vorschlag über die Middleware zu gehen würde ich gerne aufgreifen
 wenn ich wüsste wie.

 Eigentlich brauche ich ja nur den zuletzt in der Datenbank eingetragenen
 Wert zur ID.
 Ich muss jetzt aber erst mal warten bis der Zugriff wieder frei ist.

 Gruß
 Sven

 Am 14.09.2013 11:40, schrieb Thorben Thuermer:

 On Sat, 14 Sep 2013 11:07:20 +0200
 Sven peitz sven.pe...@gmx.net sven.pe...@gmx.net wrote:

  für mein neues Verbrauchs oder Vergleichsanzeige Projekt der aktuellen
 PV Einspeisung und Bezug vom EVU frage ich in einem PHP script die
 Volkszähler Datenbank ab.

  [...]

  $result1=mysql_query(SELECT value FROM data WHERE id = (select max(id)
 FROM data WHERE channel_id LIKE  '14'));

  auch zu beachten,
 was genau in data.value steht ist vom channel-type abhaengig...
 diese loesung funktioniert nur, wenn leistungswerte geloggt werden.


  Diese Anfrage dauert ca. 6-7 Sekunden. Hat jemand eine Idee wie man
 dieses beschleunigen kann?

  die anfrage ohne subquery formulieren?
 (subqueries sind fuer nicht sql-er zwar oft intuitiver,
  aber meist nicht effizient.)

 select value where channel order by id desc limit 1


  Gruß
 Sven

  - Thorben