sql >> Database >  >> RDS >> Mysql

E_WARNING:Fout bij het verzenden van het STMT_PREPARE-pakket. PID=*

Re Slowlog:Toon ons uw my.cnf. Waren de veranderingen in de [mysqld] sectie? Test het via SELECT SLEEP(12); , kijk dan zowel in het bestand als in de tabel.

Alternatieve manier om de zoekopdracht te vinden:Aangezien de zoekopdracht enkele minuten in beslag neemt, moet u SHOW FULL PROCESSLIST; wanneer je denkt dat het actief is.

Hoeveel RAM heb je? Doe niet hebben max_allowed_packet=300M tenzij je minimaal 30 GB RAM hebt. Anders riskeer je swappen (of zelfs crashen). Houd die instelling onder de 1% van het RAM-geheugen.

Geef voor verdere analyse van afstemmogelijkheden (1) RAM-grootte, (2) SHOW VARIABLES; en (3) SHOW GLOBAL STATUS; .

Re deleted_at :Die link die je gaf begint met "De kolom verwijderd_at is geen goede indexkandidaat". Je hebt het verkeerd geïnterpreteerd. Het gaat om een ​​enkele kolom INDEX(deleted_at) . Ik stel een samengestelde index voor, zoals INDEX(contact_id, job_class_name, execute_at, deleted_at) .

158 seconden voor een simpele vraag op een kleine tafel? Het kan zijn dat er veel andere dingen aan de hand. Download de PROCESSLIST .

Re Aparte indexen versus samengestelde:Denk aan twee indexen:INDEX(last_name) en INDEX(first_name) . U bladert door de achternaam_index om "James" te vinden, wat kunt u dan doen? Door de andere index bladeren voor "Rick" zal je niet helpen me te vinden.

Analyse van VARIABELEN en GLOBALE STATUS

Opmerkingen:

  • Versie:5.7.22-log
  • 1.00 GB RAM
  • Uptime =16d 10:30:19
  • Weet je zeker dat dit een GLOBALE STATUS SHOW was?
  • U draait niet op Windows.
  • De 64-bits versie wordt uitgevoerd
  • Het lijkt erop dat u volledig (of grotendeels) InnoDB draait.

De belangrijkste problemen:

innodb_buffer_pool_size -- Ik dacht dat je het op 213M had, niet op 10M. 10M is veel te klein. Aan de andere kant lijkt het alsof je minder dan zoveel gegevens hebt.

Omdat het RAM-geheugen zo klein is, raad ik aan om tmp_table_size en max_heap_table_size en max_allowed_packet naar 8M te laten vallen. En verlaag table_open_cache, table_definition_cache en innodb_open_files naar 500.

Wat veroorzaakt zoveel gelijktijdige verbindingen?

Details en andere opmerkingen:

( innodb_buffer_pool_size / _ram ) = 10M / 1024M = 0.98% -- % RAM gebruikt voor InnoDB buffer_pool

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

( innodb_lru_scan_depth ) = 1,024 -- "InnoDB:page_cleaner:1000ms bedoelde lus duurde ..." kan worden verholpen door lru_scan_depth te verlagen

( Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total ) = 375 / 638 = 58.8% -- Pct van buffer_pool momenteel niet in gebruik-- innodb_buffer_pool_size is groter dan nodig?

( Innodb_buffer_pool_bytes_data / innodb_buffer_pool_size ) = 4M / 10M = 40.0% -- Percentage van bufferpool dat wordt ingenomen door gegevens -- Een klein percentage mag geven aan dat de buffer_pool onnodig groot is.

( innodb_log_buffer_size / _ram ) = 16M / 1024M = 1.6% -- Percentage RAM dat wordt gebruikt voor het bufferen van InnoDB log schrijft.-- Te groot neemt af van ander gebruik van RAM.

( innodb_log_file_size * innodb_log_files_in_group / innodb_buffer_pool_size ) = 48M * 2 / 10M = 960.0% -- Verhouding tussen loggrootte en buffer_pool-grootte. 50% wordt aanbevolen, maar bekijk andere berekeningen om te zien of het ertoe doet.-- Het logboek hoeft niet groter te zijn dan de bufferpool.

( innodb_flush_method ) = innodb_flush_method = -- Hoe InnoDB het besturingssysteem zou moeten vragen om blokken te schrijven. Stel O_DIRECT of O_ALL_DIRECT (Percona) voor om dubbele buffering te voorkomen. (In ieder geval voor Unix.) Zie chrischandler voor waarschuwing over O_ALL_DIRECT

( innodb_flush_neighbors ) = 1 -- Een kleine optimalisatie bij het schrijven van blokken naar schijf. -- Gebruik 0 voor SSD-schijven; 1 voor HDD.

( innodb_io_capacity ) = 200 -- I/O - ops per seconde geschikt op schijf . 100 voor langzame schijven; 200 voor draaiende aandrijvingen; 1000-2000 voor SSD's; vermenigvuldig met RAID-factor.

( innodb_print_all_deadlocks ) = innodb_print_all_deadlocks = OFF -- Of je alle Deadlocks wilt loggen.-- Als je geplaagd wordt door Deadlocks, schakel dit dan in. Let op:als je veel deadlocks hebt, kan dit veel naar de schijf schrijven.

( min( tmp_table_size, max_heap_table_size ) / _ram ) = min( 16M, 16M ) / 1024M = 1.6% -- Percentage RAM dat moet worden toegewezen wanneer een MEMORY-tabel (per tabel) nodig is, of een tijdelijke tabel in een SELECT (per tijdelijke tabel volgens sommige SELECT's). Te hoog kan leiden tot swapping.-- Verlaag tmp_table_size en max_heap_table_size tot bijvoorbeeld 1% van de ram.

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

( local_infile ) = local_infile = ON -- local_infile =AAN is een potentieel beveiligingsprobleem

( Select_scan / Com_select ) = 111,324 / 264144 = 42.1% -- % van de selecties die de volledige tabel scannen. (Kan voor de gek gehouden worden door opgeslagen routines.)-- Indexen toevoegen / zoekopdrachten optimaliseren

( long_query_time ) = 10 -- Cutoff (seconden) voor het definiëren van een "trage" zoekopdracht.-- Suggest 2

( Max_used_connections / max_connections ) = 152 / 151 = 100.7% -- Piekpercentage van verbindingen -- verhoog max_connections en/of verlaag wait_timeout

Je hebt de Query Cache half uitgeschakeld. U moet zowel query_cache_type =OFF als query_cache_size =0 instellen. Er is (volgens een gerucht) een 'bug' in de QC-code die code laat staan, tenzij je beide instellingen uitschakelt.

Abnormaal 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

Abnormaal groot:

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 snaren:

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


  1. Wat is het verschil tussen de backtick en de vierkante haak in SQL-statements?

  2. Stabiele/herhaalbare willekeurige sortering (MySQL, Rails)

  3. Geautomatiseerd testen van het upgradeproces voor PostgreSQL

  4. Door de mysql-database bladeren