Rendimiento de tamaño de tabla Mysql InnoDB

Tengo una tabla que se acerca cerca de 2 millones de registros. Esta tabla almacena un historial de transacciones. Esto es en un sitio web de alto tráfico, pero también la mesa no se accede con regularidad. Actualmente no tenemos consultas lentas debido a esta tabla, pero estoy buscando como cuando debo esperar a la necesidad de migrar datos de esta tabla a un método de archivo de datos.

El servidor es un Amazonas ec2 caja de alta cpu medio.

High-CPU Medium Instance 1.7 GB of memory 5 EC2 Compute Units (2 virtual cores with 2.5 EC2 Compute Units each) 350 GB of instance storage 32-bit platform I/O Performance: Moderate API name: c1.medium Engine: InnoDB Version: 10 Row_format: Compact Rows: 1677878 Avg_row_length: 71 Data_length: 120209408 Max_data_length: 0 Index_length: 246497280 Data_free: 0 Auto_increment: 1914179 Create_time: 2011-08-07 20:15:29 Update_time: NULL Check_time: NULL Collation: latin1_swedish_ci Checksum: NULL Create_options: Comment: InnoDB free: 7168 kB 

Pocas preguntas:

  • ¿En qué momento podría comenzar a ver el rendimiento degradarse debido a la cantidad de registros de esta tabla?

  • ¿Qué configuración debo comprobar en el servidor mysql, a través de SHOW INNODB STATUS y en la propia tabla (es decir, el formato de fila) para asegurar que maximizo el rendimiento cuando lo necesito?

  • ¿Qué métricas debo reunir para calcular el rendimiento en el tiempo?

One Solution collect form web for “Rendimiento de tamaño de tabla Mysql InnoDB”

¡¡Muchas preguntas!! Para su primer punto, probablemente comenzará a notar problemas de rendimiento si empieza a causar exploraciones de tabla completa o uniones que crean tablas temporales. Puede realizar un seguimiento de esto mirando la salida EXPLAIN para sus consultas. Aquí hay alguna información sobre EXPLAIN:

http://weevilgenius.net/2010/09/mysql-explain-reference/

Para los ajustes, idealmente es grande si usted puede caber su base de datos entera en memoria. Aquí están las variables que son probablemente más útiles para afinar:

 innodb_buffer_pool_size=8192M innodb_additional_mem_pool_size=512M innodb_log_buffer_size=8M innodb_flush_method = O_DIRECT key_buffer_size=4096M read_buffer_size=1M read_rnd_buffer_size=10M sort_buffer_size=1M join_buffer_size=1M tmp_table_size=32M 

Usted querrá hacer la mayoría de estos tan grande como razonable (usted querrá investigar algunos de estos como algunos son por conexión y algunos son globales). Usted ha mencionado SHOW INNODB STATUS, que es un gran lugar para comenzar, intente mirar estos campos:

 -------- FILE I/O -------- Pending normal aio reads: 0, aio writes: 0, ibuf aio reads: 0, log i/o's: 0, sync i/o's: 0 Pending flushes (fsync) log: 0; buffer pool: 0 28889 OS file reads, 52982178 OS file writes, 35063424 OS fsyncs 0.00 reads/s, 0 avg bytes/read, 2.67 writes/s, 2.67 fsyncs/s 

Estos deben mostrar si usted está obligado por IO en alguna parte. Entonces revisa:

 ---------------------- BUFFER POOL AND MEMORY ---------------------- Free buffers 342668 

Para asegurarse de que tiene tampones libres.

En cuanto a su última pregunta de qué controlar, más es mejor. Utilizo OpenNMS para supervisar nuestro funcionamiento del servidor de MySQL. Aquí están las cosas que actualmente están en tendencia / alerta sobre cambios drásticos:

 EventCount Uptime Bytes_received Bytes_sent Com_delete Com_delete_multi Com_insert Com_insert_select Com_select Com_stmt_execute Com_update Com_update_multi Created_tmp_disk_tables Created_tmp_tables key_buffer_size key_cache_block_size Key_blocks_unused Key_read_requests Key_reads Key_write_requests Key_writes Open_files Open_tables table_open_cache Questions Slow_queries Connections Threads_created Threads_cached Threads_connected Threads_running 
  • Cubriendo las sentencias de MySQL a SQL Server
  • instalar MySQL Server 5.0 en CentOS 6.3
  • Rackspace: optimization del entorno LAMP (usando memcached)
  • 'Error de database' para un blog de wordpress alojado en un server
  • ¿Qué significa 'refresh' en el logging de consultas mysql?
  • Yum fallando "Transaction Check" al actualizar
  • Reparación vs Optimizar tabla en MySQL
  • Base de datos MySQL muy lento con una gran table
  • Registro daña el performance de MySQL - pero, ¿por qué?
  • Cómo ver los loggings de actividad de mysql, la tabla de auditoría no registró nada
  • No se puede iniciar MySQL 5.5 como usuario normal (fedora 15)
  • MySQL JDBC fuerza ignorar el certificate de cliente en AWS RDS
  • "/ Usr", "/ usr / local /", "/ sbin"
  • El linux y los temas del servidor de Windows, como ubuntu, centos, apache, nginx, debian y consejos de red.