MySQL-Server – Vollständige Tabellenscans (\%) überwachen
Der Prozentsatz vollständiger Tabellenscans, die auf dem MySQL-Server durchgeführt wurden. Bei vollständigen Tabellenscan prüft der Server nacheinander jede Zeile der Tabelle auf die Gültigkeit einer Bedingung. Vollständige Tabellenscans können in Tabellen mit einer niedrigen Zeilenanzahl häufig vorkommen. Der Schwellenwert des Monitors wird anhand eines Durchschnitts der Werte analysiert, die nach dem Abrufen vom Agent zurückgegeben werden. Dabei wird die Anzahl der Abtastungen, die in die Berechnung des Durchschnitts einfließen, über den Parameter "Anzahl der Abtastungen" gesteuert.
Ein fehlerhafter Status weist auf einen hohen Prozentsatz an vollständigen Tabellenscans hin. Vollständige Tabellenscans können in Tabellen mit weniger als 10 Zeilen oder einer kurzen Zeilenlänge vorkommen. Vollständige Tabellenscans können auch stattfinden, wenn indizierte Spalten mit konstanten Werten verglichen werden.
Versuchen Sie, einen hohen Prozentsatz von Tabellenscans folgendermaßen zu beheben:
Optimieren Sie die MySQL-Abfrage, durch die vollständige Tabellenscans ausgeführt werden.
Verwenden Sie den MySQL-Befehl "ANALYZE TABLE tbl_name", um Schlüsselverteilungen zu aktualisieren.
Verwenden Sie die MySQL-Option im Befehl "FORCE INDEX", um den MySQL-Optimierer für den angegebenen Index manuell zu deaktivieren.
Ändern Sie die Variable "max_seeks_for_key" in einen Wert, der die benötigten Suchen zum Abrufen von Daten widerspiegelt.
Standardkonfiguration
Parameter | Standardwert |
Warnungsschwellenwert | Größer als 80 |
Fehlerschwellenwert | Größer als 95 |
Anzahl der Stichproben | 3 |
Die oben für alle Instanzen oder für eine bestimmte Instanz oder Gruppe definierten Parameterwerte können mithilfe von Außerkraftsetzungen geändert werden.
Target | Microsoft.MySQLServer.ManagedServer.Unix | ||
Parent Monitor | Microsoft.MySQLServer.RowOperationsPerformanceRollup | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | MatchMonitorHealth | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.Oss.WSManEnumeration.GreaterThanThreshold.ThreeState.MonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.MySQLServer.ManagedServer.Unix.FullTableScanPct.Monitor" Accessibility="Public" Target="Microsoft.MySQLServer.ManagedServer.Unix" TypeID="Oss!Microsoft.Oss.WSManEnumeration.GreaterThanThreshold.ThreeState.MonitorType" Enabled="onStandardMonitoring" ParentMonitorID="Microsoft.MySQLServer.RowOperationsPerformanceRollup">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.MySQLServer.ManagedServer.Unix.FullTableScanPct.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Value$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState HealthState="Success" MonitorTypeStateID="StatusOK" ID="UnderThreshold"/>
<OperationalState HealthState="Warning" MonitorTypeStateID="StatusWarning" ID="OverWarningThreshold"/>
<OperationalState HealthState="Error" MonitorTypeStateID="StatusError" ID="OverErrorThreshold"/>
</OperationalStates>
<Configuration>
<Interval>300</Interval>
<TargetSystem>$Target/Host/Property[Type="Unix!Microsoft.Unix.Computer"]/NetworkName$</TargetSystem>
<Uri>http://schemas.microsoft.com/wbem/wscim/1/cim-schema/2/MySQL_ServerStatistics?__cimnamespace=root/mysql</Uri>
<WSManFilter/>
<ObjectName>MySQL Server</ObjectName>
<CounterName>Full Table Scan Pct</CounterName>
<InstanceXPath>/DataItem/WsManData/*[local-name(.)='MySQL_ServerStatistics']/*[local-name(.)='InstanceID']</InstanceXPath>
<InstanceName>$Target/Property[Type="Microsoft.MySQLServer.Installation"]/InstanceID$</InstanceName>
<Value>$Data/WsManData/*[local-name(.)='MySQL_ServerStatistics']/*[local-name(.)='FullTableScanPct']$</Value>
<WarningThreshold>80</WarningThreshold>
<ErrorThreshold>95</ErrorThreshold>
<NumSamples>3</NumSamples>
</Configuration>
</UnitMonitor>