Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Langsames Einfügen von Mysql

Immer wenn eine B-Tree-Seite voll ist, muss sie geteilt werden, was einige Zeit in Anspruch nimmt. Die Einfügungsleistung ist auch langsamer, je mehr Indizes Sie haben, da jede Einfügung alle Indizes aktualisiert. 9000 bereits richtig angegeben hat, dass Ihr (timestamp,staff)-Index den (timestamp)-Index in 95% der Fälle abdeckt, gibt es sehr seltene Fälle, in denen ein einspaltiger (timestamp)-Index für eine bessere Performance benötigt wird.

Es gibt auch einige periodische Hintergrundaufgaben, die gelegentlich ein oder zwei Inserts im Laufe eines Tages verlangsamen können.

Ein weiterer Grund für Verzögerungen ist einfach die Datenbankaktivität. Wenn Sie Transaktionen haben, die Seiten sperren, die die Einfügung aktualisieren (oder seitenaufteilen) muss, muss die Einfügung warten, bis die Schreibsperren erfüllt sind. Diese anderen Aktivitäten müssen nicht einmal tatsächlich eine Transaktion starten, und sie müssen nicht einmal eine Read-Read-Konkurrenz sein; Sie können auch Schreib-Schreib-Konflikte oder eine Warteschlange haben, die sich durch starke Aktivität aufgebaut hat.

Und der letzte mögliche Grund – Ihr Datenbankserver hat keine Ressourcen mehr, sei es Arbeitsspeicher oder CPU oder Netzwerk-I/O. Ein Server kann nur so viel tun, also muss er warten, bis er genügend Ressourcen hat.