Estamos haciendo un pequeño punto de referencia de MySQL donde queremos ver cómo funciona para nuestros datos.Cómo acceder a MySQL desde múltiples hilos simultáneamente
Parte de esa prueba consiste en ver cómo funciona cuando varios subprocesos simultáneos golpean el servidor con varias consultas.
El MySQL documentation (5.0) no es muy claro acerca de los clientes multihilo. Debo señalar que sí enlace con la biblioteca segura de subprocesos (libmysqlclient_r.so
)
Estoy usando declaraciones preparadas y hago tanto lectura (SELECCIONAR) como escribir (ACTUALIZAR, INSERTAR, ELIMINAR).
- ¿Debo abrir una conexión por tema? Y si es así: ¿cómo puedo hacer esto incluso .. parece
mysql_real_connect()
devuelve el identificador original de DB que me dieron cuando me llamaronmysql_init()
) - Si no: ¿cómo hago resultados y métodos seguros como
mysql_affected_rows
devuelve el valor correcto en vez de colisión con llamadas de otro hilo (el mutex/locks podría funcionar, pero se siente mal)
Este fue el tipo de respuesta que necesitaba. No me di cuenta de que tendría que llamar a mysql_init en cada hilo; lo hice una vez en main(). Gracias –
@chazomaticus, ¿cuántos hilos usarías normalmente y cuántas conexiones tendrías abiertas? ¿Esto escala a un gran número de hilos/conexiones? Un grupo de conexiones es realmente útil si tiene muchos hilos (100's - 1000's) pero no desea la sobrecarga de abrir 1000 conexiones (de las cuales puede que no tenga permiso de todos modos ya que el valor predeterminado para max_connections generalmente se establece en 100). Si tienes pocos hilos, entonces tu enfoque funcionaría. +1 de mí para mostrar ejemplos de código. – Glen
Dado que Isak está tratando de enfatizar la base de datos, tantos hilos como sea posible. He ejecutado ~ 1000 sin problema (si todos los subprocesos son consultas de problemas, la mayor parte de su tiempo se pasa inactivo en 'poll()', por lo que no es tan intensivo en la CPU como se podría pensar, aunque puede comerse un trozo de memoria). Tiene razón acerca de que max_connections le cubre en 100 por defecto, por lo que para un máximo estrés, suba eso según lo desee. – chazomaticus