Mysql
 sql >> Database >  >> RDS >> Mysql

E_WARNING:Errore durante l'invio del pacchetto STMT_PREPARE. PID=*

Re Slowlog:mostraci il tuo my.cnf. Erano le modifiche nel [mysqld] sezione? Provalo tramite SELECT SLEEP(12); , quindi cerca sia nel file che nella tabella.

Metodo alternativo per trovare la query:poiché la query richiede diversi minuti, esegui SHOW FULL PROCESSLIST; quando pensi che potrebbe essere in esecuzione.

Quanta RAM hai? non avere max_allowed_packet=300M a meno che tu non abbia almeno 30 GB di RAM. Altrimenti stai rischiando lo scambio (o addirittura il crash). Mantieni questa impostazione sotto l'1% di RAM.

Per un'ulteriore analisi delle regolazioni, fornire (1) dimensione della RAM, (2) SHOW VARIABLES; e (3) SHOW GLOBAL STATUS; .

Ri deleted_at :Il collegamento che hai fornito inizia con "La colonna eliminata_at non è un buon candidato per l'indice". Hai interpretato male. Si tratta di una singola colonna INDEX(deleted_at) . Sto suggerendo un indice composito come INDEX(contact_id, job_class_name, execute_at, deleted_at) .

158 secondi per una semplice query su un tavolino? Potrebbe essere che ce ne siano molti altro cose in corso. Ottieni il PROCESSLIST .

Re Indici separati e compositi:pensa a due indici:INDEX(last_name) e INDEX(first_name) . Scorri l'indice del cognome per trovare "James", quindi cosa puoi fare? Sfogliare l'altro indice per "Rick" non ti aiuterà a trovarmi.

Analisi delle VARIABILI e dello STATO GLOBALE

Osservazioni:

  • Versione:5.7.22-log
  • 1,00 GB di RAM
  • Tempo di attività =16 gg 10:30:19
  • Sei sicuro che fosse uno SHOW GLOBAL STATUS?
  • Non stai utilizzando Windows.
  • Versione a 64 bit in esecuzione
  • Sembra che tu stia eseguendo interamente (o principalmente) InnoDB.

Le questioni più importanti:

innodb_buffer_pool_size -- Pensavo che l'avessi a 213 M, non a 10 M. 10M è troppo piccolo. D'altra parte, sembra che tu abbia meno di così tanti dati.

Poiché la RAM è così piccola, consiglio di ridurre tmp_table_size e max_heap_table_size e max_allowed_packet a 8 M. E abbassare table_open_cache, table_definition_cache e innodb_open_files a 500.

Cosa causa così tante connessioni simultanee?

Dettagli e altre osservazioni:

( innodb_buffer_pool_size / _ram ) = 10M / 1024M = 0.98% -- % di RAM utilizzata per InnoDB buffer_pool

( innodb_buffer_pool_size ) = 10M -- Dati InnoDB + Cache indice

( innodb_lru_scan_depth ) = 1,024 -- "InnoDB:page_cleaner:1000 ms del ciclo previsto..." può essere risolto abbassando lru_scan_depth

( Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total ) = 375 / 638 = 58.8% -- Pct di buffer_pool attualmente non in uso-- innodb_buffer_pool_size è più grande del necessario?

( Innodb_buffer_pool_bytes_data / innodb_buffer_pool_size ) = 4M / 10M = 40.0% -- Percentuale del pool di buffer occupato dai dati-- Una piccola percentuale può indica che buffer_pool è inutilmente grande.

( innodb_log_buffer_size / _ram ) = 16M / 1024M = 1.6% -- Percentuale di RAM utilizzata per il buffering delle scritture dei log di InnoDB.-- Troppo grande sottrae ad altri usi della RAM.

( innodb_log_file_size * innodb_log_files_in_group / innodb_buffer_pool_size ) = 48M * 2 / 10M = 960.0% -- Rapporto tra la dimensione del registro e la dimensione del pool_buffer. Si consiglia il 50%, ma guarda altri calcoli per sapere se è importante.-- Non è necessario che il registro sia più grande del pool di buffer.

( innodb_flush_method ) = innodb_flush_method = -- Come InnoDB dovrebbe chiedere al sistema operativo di scrivere blocchi. Suggerisci O_DIRECT o O_ALL_DIRECT (Percona) per evitare il doppio buffering. (Almeno per Unix.) Vedi chrischandler per un avvertimento su O_ALL_DIRECT

( innodb_flush_neighbors ) = 1 -- Una piccola ottimizzazione durante la scrittura di blocchi su disco.-- Usa 0 per le unità SSD; 1 per HDD.

( innodb_io_capacity ) = 200 -- Operazioni di I/O al secondo disponibili su disco. 100 per unità lente; 200 per unità di filatura; 1000-2000 per SSD; moltiplicare per il fattore RAID.

( innodb_print_all_deadlocks ) = innodb_print_all_deadlocks = OFF -- Se registrare tutti i deadlock.-- Se sei afflitto da deadlock, attivalo. Attenzione:se hai molti deadlock, questo potrebbe scrivere molto sul disco.

( min( tmp_table_size, max_heap_table_size ) / _ram ) = min( 16M, 16M ) / 1024M = 1.6% -- Percentuale di RAM da allocare quando è necessaria una tabella MEMORY (per tabella) o una tabella temporanea all'interno di un SELECT (per tabella temporanea per alcuni SELECT). Troppo alto può portare allo scambio.-- Riduci tmp_table_size e max_heap_table_size a, diciamo, l'1% della ram.

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

( local_infile ) = local_infile = ON -- local_infile =ON è un potenziale problema di sicurezza

( Select_scan / Com_select ) = 111,324 / 264144 = 42.1% -- % di selezioni che eseguono la scansione completa della tabella. (Può essere ingannato dalle routine memorizzate.)-- Aggiungi indici / ottimizza le query

( long_query_time ) = 10 -- Cutoff (Seconds) per definire una query "lenta".-- Suggerisci 2

( Max_used_connections / max_connections ) = 152 / 151 = 100.7% -- % picco di connessioni:aumenta max_connections e/o diminuisci wait_timeout

Hai la cache delle query a metà. Dovresti impostare sia query_cache_type =OFF che query_cache_size =0 . C'è (secondo una voce) un "bug" nel codice QC che lascia del codice attivo a meno che tu non disattivi entrambe queste impostazioni.

Anormalmente piccolo:

( 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

Anormalmente grande:

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

Stringhe anomale:

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