sql >> Base de Datos >  >> RDS >> Mysql

E_WARNING:Error al enviar el paquete STMT_PREPARE. PID=*

Re Slowlog:muéstranos tu my.cnf. ¿Fueron los cambios en el [mysqld] ¿sección? Pruébelo a través de SELECT SLEEP(12); , luego busque tanto en el archivo como en la tabla.

Forma alternativa de encontrar la consulta:dado que la consulta tarda varios minutos, haga SHOW FULL PROCESSLIST; cuando crees que podría estar funcionando.

¿Cuánta memoria RAM tienes? no tener max_allowed_packet=300M a menos que tenga al menos 30 GB de RAM. De lo contrario, corre el riesgo de cambiar (o incluso fallar). Mantenga esa configuración por debajo del 1 % de RAM.

Para un análisis más detallado de los parámetros ajustables, proporcione (1) tamaño de RAM, (2) SHOW VARIABLES; y (3) SHOW GLOBAL STATUS; .

Re deleted_at :Ese enlace que diste comienza con "La columna delete_at no es un buen candidato para el índice". Lo malinterpretaste. Se trata de un INDEX(deleted_at) de una sola columna . Estoy sugiriendo un índice compuesto como INDEX(contact_id, job_class_name, execute_at, deleted_at) .

¿158 segundos para una consulta simple en una mesa pequeña? Podría ser que haya muchos otros cosas que pasan Obtén la PROCESSLIST .

Re Índices separados versus compuestos:Piense en dos índices:INDEX(last_name) y INDEX(first_name) . Pasas por el índice last_name para encontrar "James", entonces, ¿qué puedes hacer? Buscar "Rick" en el otro índice no te ayudará a encontrarme.

Análisis de VARIABLES y ESTADO GLOBAL

Observaciones:

  • Versión:5.7.22-log
  • 1,00 GB de RAM
  • Tiempo activo =16d 10:30:19
  • ¿Estás seguro de que se trata de MOSTRAR ESTADO GLOBAL?
  • No está ejecutando en Windows.
  • Ejecutando la versión de 64 bits
  • Parece que está ejecutando completamente (o en su mayoría) InnoDB.

Los asuntos más importantes:

innodb_buffer_pool_size -- Pensé que lo tenías a 213M, no a 10M. 10M es demasiado pequeño. Por otro lado, parece que tienes menos que esa cantidad de datos.

Dado que la memoria RAM es tan pequeña, recomiendo bajar tmp_table_size y max_heap_table_size y max_allowed_packet a 8M. Y bajar table_open_cache, table_definition_cache e innodb_open_files a 500.

¿Qué provoca tantas conexiones simultáneas?

Detalles y otras observaciones:

( innodb_buffer_pool_size / _ram ) = 10M / 1024M = 0.98% -- % de RAM utilizada para InnoDB buffer_pool

( innodb_buffer_pool_size ) = 10M -- InnoDB Data + Caché de índice

( innodb_lru_scan_depth ) = 1,024 -- "InnoDB:page_cleaner:1000ms el bucle previsto tomó..." se puede arreglar bajando lru_scan_ depth

( Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total ) = 375 / 638 = 58.8% -- El porcentaje de buffer_pool actualmente no está en uso -- ¿innodb_buffer_pool_size es más grande de lo necesario?

( Innodb_buffer_pool_bytes_data / innodb_buffer_pool_size ) = 4M / 10M = 40.0% -- Porcentaje del grupo de búfer ocupado por los datos-- Un pequeño porcentaje puede indica que buffer_pool es innecesariamente grande.

( innodb_log_buffer_size / _ram ) = 16M / 1024M = 1.6% -- Porcentaje de RAM utilizado para almacenar en búfer las escrituras de registro de InnoDB.-- Demasiado grande resta otros usos a la RAM.

( innodb_log_file_size * innodb_log_files_in_group / innodb_buffer_pool_size ) = 48M * 2 / 10M = 960.0% -- Relación entre el tamaño del registro y el tamaño del buffer_pool. Se recomienda el 50%, pero vea otros cálculos para saber si es importante.-- El registro no necesita ser más grande que el grupo de búfer.

( innodb_flush_method ) = innodb_flush_method = -- Cómo InnoDB debería pedirle al sistema operativo que escriba bloques. Sugiera O_DIRECT o O_ALL_DIRECT (Percona) para evitar el doble almacenamiento en búfer. (Al menos para Unix). Consulte a chrischandler para obtener una advertencia sobre O_ALL_DIRECT

( innodb_flush_neighbors ) = 1 -- Una optimización menor al escribir bloques en el disco. -- Use 0 para unidades SSD; 1 para disco duro.

( innodb_io_capacity ) = 200 -- Capacidad de operaciones de E/S por segundo en disco . 100 para unidades lentas; 200 para unidades giratorias; 1000-2000 para SSD; multiplique por el factor RAID.

( innodb_print_all_deadlocks ) = innodb_print_all_deadlocks = OFF -- Ya sea para registrar todos los Interbloqueos.-- Si está plagado de Interbloqueos, enciéndalo. Precaución:si tiene muchos interbloqueos, esto puede escribir mucho en el disco.

( min( tmp_table_size, max_heap_table_size ) / _ram ) = min( 16M, 16M ) / 1024M = 1.6% -- Porcentaje de RAM para asignar cuando se necesita una tabla de MEMORIA (por tabla) o una tabla temporal dentro de una SELECCIÓN (por tabla temporal según algunas SELECCIONES). Demasiado alto puede conducir al intercambio.-- Disminuya tmp_table_size y max_heap_table_size a, digamos, 1% de ram.

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

( local_infile ) = local_infile = ON -- local_infile =ON es un posible problema de seguridad

( Select_scan / Com_select ) = 111,324 / 264144 = 42.1% -- % de selecciones que realizan un escaneo completo de la tabla. (Puede dejarse engañar por las rutinas almacenadas).-- Agregar índices/optimizar consultas

( long_query_time ) = 10 -- Límite (segundos) para definir una consulta "lenta".-- Sugerir 2

( Max_used_connections / max_connections ) = 152 / 151 = 100.7% -- % máximo de conexiones:aumente max_connections y/o disminuya wait_timeout

Tienes la Query Cache a mitad de precio. Debe configurar query_cache_type =OFF y query_cache_size =0 . Existe (según un rumor) un 'error' en el código de control de calidad que deja algo de código activado a menos que desactive ambas configuraciones.

Anormalmente pequeño:

( 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

Cadenas anormales:

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