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

E_WARNING:Fehler beim Senden des STMT_PREPARE-Pakets. PID=*

Zu Slowlog:Zeig uns deine my.cnf. Waren die Änderungen in der [mysqld] Sektion? Testen Sie es über SELECT SLEEP(12); , dann sehen Sie sowohl in der Datei als auch in der Tabelle nach.

Alternativer Weg, um die Abfrage zu finden:Da die Abfrage mehrere Minuten dauert, führen Sie SHOW FULL PROCESSLIST; aus wenn Sie glauben, dass es ausgeführt wird.

Wie viel RAM hast du? nicht haben max_allowed_packet=300M Es sei denn, Sie haben mindestens 30 GB RAM. Andernfalls riskieren Sie einen Austausch (oder sogar einen Absturz). Halten Sie diese Einstellung unter 1 % des Arbeitsspeichers.

Für eine weitere Analyse der Tunables geben Sie bitte (1) RAM-Größe, (2) SHOW VARIABLES; an und (3) SHOW GLOBAL STATUS; .

Re deleted_at :Dieser Link, den Sie angegeben haben, beginnt mit "Die Spalte "deleted_at" ist kein guter Indexkandidat". Du hast es falsch interpretiert. Es handelt sich um einen einspaltigen INDEX(deleted_at) . Ich schlage einen zusammengesetzten Index wie INDEX(contact_id, job_class_name, execute_at, deleted_at) vor .

158 Sekunden für eine einfache Abfrage auf einem kleinen Tisch? Es könnte sein, dass es noch viele andere gibt Sachen los. Holen Sie sich die PROCESSLIST .

Re Getrennte Indizes versus Composite:Stellen Sie sich zwei Indizes vor:INDEX(last_name) und INDEX(first_name) . Du blätterst durch den Nachnamen-Index, um "James" zu finden, was kannst du dann tun? Durch den anderen Index nach "Rick" zu blättern, hilft Ihnen nicht, mich zu finden.

Analyse von VARIABLEN und GLOBAL STATUS

Beobachtungen:

  • Version:5.7.22-log
  • 1,00 GB RAM
  • Betriebszeit =16d 10:30:19
  • Sind Sie sicher, dass dies ein SHOW GLOBAL STATUS war?
  • Sie verwenden kein Windows.
  • Ausgeführte 64-Bit-Version
  • Sie scheinen vollständig (oder größtenteils) InnoDB auszuführen.

Die wichtigeren Probleme:

innodb_buffer_pool_size – Ich dachte, Sie hätten es bei 213 Millionen, nicht bei 10 Millionen. 10M ist viel zu klein. Andererseits scheinen Sie weniger als so viele Daten zu haben.

Da der RAM so klein ist, empfehle ich, tmp_table_size und max_heap_table_size und max_allowed_packet auf 8 MB zu reduzieren. Und verkleinern Sie table_open_cache, table_definition_cache und innodb_open_files auf 500.

Was verursacht so viele gleichzeitige Verbindungen?

Details und andere Beobachtungen:

( innodb_buffer_pool_size / _ram ) = 10M / 1024M = 0.98% -- % RAM verwendet für InnoDB buffer_pool

( innodb_buffer_pool_size ) = 10M -- InnoDB Data + Index-Cache

( innodb_lru_scan_depth ) = 1,024 -- "InnoDB:page_cleaner:1000 ms beabsichtigte Schleife dauerte ..." kann durch Verringern von lru_scan_depth

behoben werden

( Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total ) = 375 / 638 = 58.8% -- Pct of buffer_pool wird derzeit nicht verwendet -- innodb_buffer_pool_size ist größer als nötig?

( Innodb_buffer_pool_bytes_data / innodb_buffer_pool_size ) = 4M / 10M = 40.0% -- Prozentsatz des von Daten belegten Pufferpools -- Ein kleiner Prozentsatz kann zeigen an, dass der Pufferpool unnötig groß ist.

( innodb_log_buffer_size / _ram ) = 16M / 1024M = 1.6% -- Prozentsatz des RAM, der zum Puffern von InnoDB-Protokollschreibvorgängen verwendet wird

( innodb_log_file_size * innodb_log_files_in_group / innodb_buffer_pool_size ) = 48M * 2 / 10M = 960.0% -- Verhältnis der Protokollgröße zur Pufferpoolgröße. 50 % werden empfohlen, aber sehen Sie sich andere Berechnungen an, um festzustellen, ob dies von Bedeutung ist.-- Das Protokoll muss nicht größer als der Pufferpool sein.

( innodb_flush_method ) = innodb_flush_method = -- Wie InnoDB das Betriebssystem auffordern soll, Blöcke zu schreiben. Schlagen Sie O_DIRECT oder O_ALL_DIRECT (Percona) vor, um doppelte Pufferung zu vermeiden. (Zumindest für Unix.) Siehe chrischandler für Vorbehalte zu O_ALL_DIRECT

( innodb_flush_neighbors ) = 1 -- Eine geringfügige Optimierung beim Schreiben von Blöcken auf die Festplatte.-- Verwenden Sie 0 für SSD-Laufwerke; 1 für Festplatte.

( innodb_io_capacity ) = 200 - E/A-Operationen pro Sekunde auf der Festplatte möglich. 100 für langsame Laufwerke; 200 für Spinnantriebe; 1000-2000 für SSDs; mit RAID-Faktor multiplizieren.

( innodb_print_all_deadlocks ) = innodb_print_all_deadlocks = OFF -- Ob alle Deadlocks protokolliert werden sollen.-- Wenn Sie von Deadlocks geplagt werden, schalten Sie dies ein. Achtung:Wenn Sie viele Deadlocks haben, kann dies viel auf die Festplatte schreiben.

( min( tmp_table_size, max_heap_table_size ) / _ram ) = min( 16M, 16M ) / 1024M = 1.6% -- Prozentsatz des zuzuweisenden Arbeitsspeichers, wenn eine MEMORY-Tabelle (pro Tabelle) oder eine temporäre Tabelle in einem SELECT (pro temporärer Tabelle pro einigen SELECTs) benötigt wird. Ein zu hoher Wert kann zu Auslagerungen führen. – Verringern Sie tmp_table_size und max_heap_table_size auf beispielsweise 1 % des Arbeitsspeichers.

( net_buffer_length / max_allowed_packet ) = 16,384 / 16M = 0.10%

( local_infile ) = local_infile = ON -- local_infile =ON ist ein potentielles Sicherheitsproblem

( Select_scan / Com_select ) = 111,324 / 264144 = 42.1% -- % der Auswahlen, die einen vollständigen Tabellenscan durchführen. (Kann durch gespeicherte Routinen getäuscht werden.) - Indizes hinzufügen / Abfragen optimieren

( long_query_time ) = 10 -- Cutoff (Sekunden) zum Definieren einer "langsamen" Abfrage.-- Vorschlag 2

( Max_used_connections / max_connections ) = 152 / 151 = 100.7% -- Spitzenprozentsatz der Verbindungen -- Erhöhen Sie max_connections und/oder verringern Sie wait_timeout

Sie haben den Abfrage-Cache zur Hälfte. Sie sollten sowohl query_cache_type =OFF als auch query_cache_size =0 setzen. Es gibt (laut einem Gerücht) einen 'Bug' im QC-Code, der einen Teil des Codes eingeschaltet lässt, es sei denn, Sie deaktivieren diese beiden Einstellungen.

Ungewöhnlich klein:

( Innodb_pages_read + Innodb_pages_written ) / Uptime = 0.186
Created_tmp_files = 0.015 /HR
Handler_write = 0.21 /sec
Innodb_buffer_pool_bytes_data = 3 /sec
Innodb_buffer_pool_pages_data = 256
Innodb_buffer_pool_pages_total = 638
Key_reads+Key_writes + Innodb_pages_read+Innodb_pages_written+Innodb_dblwr_writes+Innodb_buffer_pool_pages_flushed = 0.25 /sec
Table_locks_immediate = 2.8 /HR
Table_open_cache_hits = 0.44 /sec
innodb_buffer_pool_chunk_size = 5MB

Ungewöhnlich groß:

Com_create_db = 0.41 /HR
Com_drop_db = 0.41 /HR
Connection_errors_peer_address = 2
Performance_schema_file_instances_lost = 9
Ssl_default_timeout = 500

Abnormale Zeichenfolgen:

ft_boolean_syntax = + -><()~*:&
have_ssl = YES
have_symlink = DISABLED
innodb_fast_shutdown = 1
optimizer_trace = enabled=off,one_line=off
optimizer_trace_features = greedy_search=on, range_optimizer=on, dynamic_range=on, repeated_subselect=on
session_track_system_variables = time_zone, autocommit, character_set_client, character_set_results, character_set_connection
slave_rows_search_algorithms = TABLE_SCAN,INDEX_SCAN