2 Stimmen

MySQL-Abfrage Problem - Count Query verbraucht viel CPU

Wir haben eine Tabelle in mysql, um alle Besucher unserer Website zu protokollieren. Die Struktur ist unten dargestellt

    CREATE TABLE  \`tblvisitors\` (
      \`visitorURL\` longtext,
      \`visitorDatetime\` datetime DEFAULT NULL,
      \`visitorIP\` varchar(255) DEFAULT NULL,
      \`visitorID\` int(10) NOT NULL AUTO\_INCREMENT,
      \`visitorUser\` varchar(255) DEFAULT NULL,
      \`visitorShow\` varchar(50) DEFAULT NULL,
      \`visitorIPcaption\` varchar(255) DEFAULT NULL,
      \`visitorIPRange\` varchar(255) DEFAULT NULL,
      PRIMARY KEY (\`visitorID\`),
      KEY \`INDEXDT\` (\`visitorDatetime\`),
      KEY \`INDEXIP\` (\`visitorIP\`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Die Tabelle enthält zur Zeit mehr als 5 Millionen Datensätze.

Wir haben eine INSERT-Operation jede halbe Sekunde und auch eine SELECT-Operation jede halbe Sekunde, die eine CRITERIA auf visitorURL Spalte und Select von COUNT Feld beinhaltet.

Die Anfrage lautet:

    SELECT COUNT(visitorURL) FROM tblVisitors 
        WHERE visitorURL='http://mihirdarji.com/something'

Dies treibt die CPU-Auslastung auf einem 8-Core-Server mit 8 GB Ram auf 90 % hoch.

Der MySQL-Administrator zeigt viele Verbindungen mit der obigen Abfrage an, die darauf warten, ausgeführt zu werden.

Für Vorschläge wäre ich dankbar.

Plan erläutern sagt

| id | select\_type | table | type | possible\_keys | key | key\_len | ref | rows | Extra |
| 1 | SIMPLE | tblVIsitors | ALL | NULL | NULL | NULL | NULL | 4293277 | Using where |

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X