InnoDB hat keine Option, bestimmte Tabellen so zu steuern, dass sie im Speicher verbleiben und andere Tabellen nicht genügend Arbeitsspeicher haben. Aber es ist irgendwie unnötig.
InnoDB liest Tabellen, indem sie sie Seite für Seite in den Pufferpool lädt. Ihre Verwendung der Tabellen führt InnoDB dazu, Seiten im Speicher zu behalten.
Es ist unwahrscheinlich, dass das Lesen einer Seite Seiten ausschaltet, die Sie im Speicher behalten müssen. InnoDB behält einen Bereich des Pufferpools für Seiten vor, auf die zuletzt zugegriffen wurde. Es gibt einen Algorithmus, um Seiten in diesem reservierten Bereich zu "promoten", und Seiten, die nicht beworben werden, tendieren dazu, zuerst rausgeschmissen zu werden.
lesen Details hier: https://dev.mysql.com/doc/refman/5.7/en/innodb-buffer-pool.html
Wenn Sie wirklich, dass bestimmte Tabellen sicherstellen müssen, sind nicht im InnoDB Zwischenspeicher zwischengespeichert, der einzig sichere Weg ist, um die Speicher-Engine für diese Tabellen zu ändern. Nicht InnoDB-Tabellen (z. B. MyISAM) werden niemals im InnoDB-Pufferpool zwischengespeichert. Aber das ist wahrscheinlich kein Grund, die Speicher-Engine zu wechseln.
Sie können wahrscheinlich mit 'index' und/oder' view' machen, anstatt die ganze Tabelle zwischenzuspeichern. –
Nein. Es müssen statistische Berechnungen für die gesamten Daten ausgeführt werden. –