Hallo Lug!

Ich habe folgende Tabelle:

CREATE TABLE pages (
  sequences longtext COLLATE utf8_unicode_ci NOT NULL,
  revid int(11) NOT NULL,
  pageid int(11) NOT NULL,
  title varchar(250) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (revid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Sie ist 3GB groß und enthält 550k Einträge. Die sequences sind Text.

Es gibt drei Befehle, die ich auf der Tabelle ausführe:
INSERT INTO pages (sequences,revid,pageid,title)
VALUES(:sequences,:revid,:pageid,:title)
SELECT sequences FROM pages WHERE revid=:revid (30x pro Sekunde)
SELECT count(*) AS pages FROM pages

Jetzt gibt es zwei Probleme. Erstens wächst der Speicherbedarf von
MySQL fast auf die Größe der Tabelle. Gebe ich ihm nicht den RAM, also
momentan innodb_buffer_pool_size=3G, wird die Ausführungszeit der
Queries extrem lang, und die CPU-Last steigt ins Unermessliche.

Zweites kostet es 25% CPU, wenn ich jede Sekunde das SELECT count(*)
ausführe. Egal, ob sich an der Tabelle überhaupt etwas ändert. Diesen
SELECT habe ich testweise in einen VIEW gepackt, aber das ändert
nichts. Fordere ich zweimal pro Sekunde SELECT count(*) an, verdoppelt
sich die Last auf 50%.

   Thomas

_______________________________________________
Lug-dd maillist  -  Lug-dd@mailman.schlittermann.de
https://ssl.schlittermann.de/mailman/listinfo/lug-dd

Reply via email to