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 - [email protected] https://ssl.schlittermann.de/mailman/listinfo/lug-dd
