Am un server dedicat cu procesor Xeon E5, 96GB memorie ram si spatiu de stocare pe SSD, toate bune si frumoase.
Am folosit Mysqltunner pentru o diagnosticare rapida, dar nu am ajuns la niciun inteles cu el =]] Mai precis imi spune sa ridic limita la join_buffer_size sau sa folosesc indexes la joins.
Un exemplu concret:
Cod: Selectaţi tot
# Query_time: 0.005221 Lock_time: 0.000141 Rows_sent: 5 Rows_examined: 2034
SET timestamp=1461863200;
SELECT t.id, t.userid, t.subject, t.locked, t.forumid, t.lastpost, t.sticky, t.views, t.anonymous AS tan, f.minclassread, f.name , (SELECT COUNT(id) FROM posts WHERE topicid=t.id) AS p_count , p.userid AS puserid, p.added, p.anonymous AS pan , u.id AS uid, u.username , u2.username AS u2_username FROM topics AS t LEFT JOIN forums AS f ON f.id = t.forumid LEFT JOIN posts AS p ON p.id=(SELECT MAX(id) FROM posts WHERE topicid = t.id) LEFT JOIN users AS u ON u.id=p.userid LEFT JOIN users AS u2 ON u2.id=t.userid WHERE f.minclassread <= 6 ORDER BY t.lastpost DESC LIMIT 5;
Sa-mi afiseze intr-un mic tabel ultimele 5 topicuri de pe forum.
Am adaugat indexes la tabelele de forums, topics, posts, users si tot degeaba. In mysql-slow log tot imi apare ca fiind slow queries. Imi apar doar 2 mari si late. Poate nu fac indexurile alea cum trebuie, habar nu am, dar ele exista, chiar si phpmyadmin mi le afiseaza.
Ideea e ca pe paginile unde exista SELECT sau INSERT se incarca extrem de greu. 40 50 sau chiar 60 secunde. Ceea ce nu este deloc ideal
Probabil ca folosesc MyISAM si ar trebui sa trec la InnoDB ?