2008-09-01 15 views

Respuesta

7

http://forums.mysql.com/read.php?45,183339,183339 disfrutar

Actualizado enlace al artículo original que muestra cómo hacer asincrónicos consultas MySQL:

http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/

+1

La conexión de bloqueo es un problema grave en esta implementación, pero parece que hace lo que solicité originalmente. El proyecto drizzle (https://launchpad.net/drizzle) está trabajando en un cliente asíncrono que será retrocompatible con Mysql (mencionado aquí: http://www.oddments.org/?p=20) –

0

Creo que la única solución será crear un servicio asíncrono que envuelva un standard connector. Sin embargo, deberá comprender las API de ODBC.

2

Tuve un problema similar con una tecnología muy diferente: Twisted python (reactor-basado IO) y sqlAlchemy (??). Mientras buscaba una solución, encontré un proyecto sAsync que simplemente creaba un hilo separado para sqlAlchemy y luego respondía a las solicitudes.

Dado que ASIO se basa en características de bajo nivel del sistema operativo (como aio_read() o ReadFileEx() etc) y un reactor de nivel de sistema operativo (o proactor, en el caso de Windows) no creo que tenga otra oportunidad que emular la "asincronía" por medios similares.

Ejecución de un conector sincrónico en hilos no es una opción

Piense en esto: la libmysqlclient/mysqlclient.dll está utilizando hace llamadas de socket síncronos. El planificador del sistema operativo cambiará correctamente a otro subproceso hasta que finalice la E/S, entonces, ¿cuál es la diferencia? (aparte del hecho de que no debe hacer 2k hilos para esto ...)

Editar: mysql_real_connect() admite un parámetro de socket UNIX. Supuestamente puede leerse desde el puerto del servidor mysql y escribir en ese socket UNIX solo con ASIO. Como una alterficación.

1

[Ejecución de un conector sincrónico en hilos no es una opción Piense en esto: la libmysqlclient/mysqlclient.dll está utilizando hace llamadas de socket síncronos. El programador del sistema operativo cambiará correctamente a otro hilo hasta que finalice la E/S]

Esto me está molestando! - el 'otro hilo' podría ser fácilmente una segunda sincronización. conexión a mysql, y debe ser manejado por mysql como lo haría con otro cliente en total? Mi instinto es que debería funcionar usando múltiples hilos.

+1

Funcionará en hilos. Pero digamos que quiere tener 100 conexiones frente a uno o más servidores. No es que imagine que alguien haría eso, sino que lo acepta por el bien de la discusión. ¿Debería girar 100 hilos (o incluso solo 10 en un grupo de hilos ...)? Eso es una sobrecarga bastante grande. –

1

MySQL Connector/C++ es un C aplicación ++ de JDBC 4.0

El Los clientes de referencia que utilizan MySQL Connector/C++ son: - OpenOffice - MySQL Workbench

Más información: http://forums.mysql.com/read.php?167,221298

0

Ha considerado el uso libdrizzle?Solo he usado una versión anterior, desde que era un proyecto separado de la llovizna, y probé las funciones de consulta asincrónicas, pero nunca hice ningún punto de referencia real que valga la pena mencionar.

+0

Tomé un vistazo rápido al proyecto Drizzle cuando creé esta pregunta (Vea mi comentario a la respuesta aceptada). En ese momento tenían un cliente asincrónico en camino. Realmente no sé cómo terminó eso. –

Cuestiones relacionadas