Acelere MySQL para inserciones (para fines de prueba)

Acelere MySQL para inserciones (para fines de prueba)

Tengo un software que necesita hacer muchos INSERTS. En el entorno de producción habrá algunos ajustes y pruebas importantes y cosas así, pero ahora, cuando necesito probarlo, me gustaría acelerar las inserciones tanto como sea posible. De ahí mi pregunta: ¿hay alguna manera de modificar MySQL de modo que no realice mucha E/S de disco pero mantenga todo en la RAM y se sincronice con el disco rara vez (como dice una vez n segundos?)

Respuesta1

Insert Delayed puede ayudar (solo MyISAM), porque permite insertar en lotes (que es para lo que sirve MyISAM).
La partición de su mesa también ayudará.

Si tu memoria te lo permite (y eso es lo que estás pidiendo), entonces puedes usar una tabla de memoria. Solo asegúrese de que las configuraciones max_heap_table_size y tmp_table_size sean suficientes para los datos.

Un poco más de truco, podría ser (en Linux) usar TMPFS y colocar su archivo de datos allí (usando enlaces simbólicos)

Respuesta2

Vea la respuesta del manual de MySQL.aquí. Para responder a su pregunta específica, consulte INSERT DELAYEDcuál hace exactamente lo que desea. Puedes ajustar su comportamiento con delayed_insert_limity delayed_queue_size.

Sin embargo, si puede agrupar los INSERT, puede ser incluso más rápido; utilice la herramienta de inserción masiva o proporcione varias listas de VALORES, por ejemplo:INSERT INTO table (column) VALUES (val1),(val2),(val3)

Respuesta3

como dice daniel en la segunda parte de su respuesta: las inserciones por lotes le darán mucho. controlarestepresentación. Probablemente tu escala sea mucho menor, pero creo que de todos modos te resultará interesante.

información relacionada