MYSQL braucht ca 10 Sekunden um die letzten 3000 Eintraege zu laden

charly013

Neuer Benutzer
Beiträge
4
Moinmoin,

ich bin noch frischling in mysql, ich versuche gerade die letzten 3000 eintraege zu laden aus einer DB
mit ca 4000000 eintraegen mit:
"SELECT * FROM $_my_db002 WHERE coin = '$ref_coin' ORDER BY idx DESC LIMIT $breite6"
wobei idx = autoicrement , $breite6 = 3000
mysql = 5.5.62 auf debian8 cpu = AMD GX-412HC , 4 Kerne 4Gb Ram

dafuer brauch der Rechner gut 10 Sekunden, ist das normal oder mach ich was falsch ????
vG
Charly
 
Werbung:
Dazu fallen mir nur zwei Dinge ein:
  • Deine Mysql-Version ist völlig veraltet (2010, in der IT ist das ewig), unsicher und langsam.
  • Wir kennen Deine Tabellenstruktur nicht (man könnte genausogut fragen "Ich habe hier ein Auto, es hat 4 Räder, ist das schnell?") und vor allem nicht, ob bei Deiner Abfrage ein Index benutzt wird oder ein Full scan notwendig ist
 
Zuletzt bearbeitet:
moinmoin Walter, tnx f. die Antwort, hier der aufbau der Tabelle:
CREATE TABLE `allcoin24h` (
`idx` bigint(24) unsigned NOT NULL AUTO_INCREMENT,
`coin` char(15) DEFAULT '',
`priceChange` decimal(24,10) DEFAULT NULL,
`priceChangePercent` decimal(24,10) DEFAULT NULL,
`weightedAvgPrice` decimal(24,10) DEFAULT NULL,
`prevClosePrice` decimal(24,10) DEFAULT NULL,
`lastPrice` decimal(24,10) DEFAULT NULL,
`lastQty` decimal(24,10) DEFAULT NULL,
`bidPrice` decimal(24,10) DEFAULT NULL,
`bidQty` decimal(24,10) DEFAULT NULL,
`askPrice` decimal(24,10) DEFAULT NULL,
`askQty` decimal(24,10) DEFAULT NULL,
`openPrice` decimal(24,10) DEFAULT NULL,
`highPrice` decimal(24,10) DEFAULT NULL,
`lowPrice` decimal(24,10) DEFAULT NULL,
`volume` decimal(24,10) DEFAULT NULL,
`quoteVolume` decimal(24,10) DEFAULT NULL,
`openTime` decimal(24,10) DEFAULT NULL,
`closeTime` decimal(24,10) DEFAULT NULL,
`firstId` decimal(24,10) DEFAULT NULL,
`lastId` decimal(24,10) DEFAULT NULL,
`count` decimal(24,10) DEFAULT NULL,
`leer1` decimal(24,10) DEFAULT NULL,
`leer2` decimal(24,10) DEFAULT NULL,
`dt` bigint(20) unsigned DEFAULT NULL,
`memo` tinyint(4) DEFAULT NULL,
PRIMARY KEY (`idx`)

da werden die Daten der letzten 24h gespeichert
i denk irgendwo hab i da noch einen Dummy-Fehler
oder haste einen Tip wie ich es besser machen kann,
system will i danach updaten um jetzt nicht noch damit zu 'kaempfen'
vlg
Charly
 
schau Dir das EXPLAIN an (auch wenn das bei MySQL absolut grottig ist). Vermutlich würde ein Index helfen, auf dem, was im WHERE ist.
 
danke!
hab mit EXPLAIN mal "getestet", jetzt hab i einen index auf coin und bin auf 0.11 bis 0.7 sekunden runter, warum das so schwank weiss
i (noch) nicht, aber wesentlich besser ist es als die vorherigen 11-12 sekunden
vielen dank & vlG
Charly
 
hab noch etwas 'nachgedacht', was i nicht bedacht habe das alle 10 Sekunden ueber 1000 datensaetze geschrieben werden, bei der nicht allzu gewaltigen CPU geht die CPU last doch recht oft hoch, dann hab i lt. meiner messung auch manchmal bis 1.5 Sekunden verarbeitungszeit

vielen dank f. eure Hilfe
Charly
 
Werbung:
Das beste wäre vermutlich ein clustered index auf coin und idx (für das ORDER BY). Aber das berücksichtigt natürlich nur die Optimierung der Abfragegeschwindigkeit, wenn du aber jede Minute tausende Messwerte schreibst sind Indexe für die Schreibperformance natürlich gruselig. Und schreiben tust du öfter als lesen bei einer klassischen Auswertung.

Abgesehen davon:
Hardware grottig
Version veraltet
DSMS kann man drüber streiten aber sowas simples kriegt MySQL normalerweise hin

Versuche deine Auswertungen zu reduzieren, vielleicht das Ergebnis Cachen und in eine indexierte Tabelle auslagern um damit zu arbeiten.
 
Zurück
Oben