21

CまたはC++アプリケーション内で使用できるMysql用の非同期コネクタはありますか?Boost.Asioで書かれたreactorパターンにプラグインできるものを探しています。

[編集:]スレッドで同期コネクタを実行することはオプションではありません。

4

8 に答える 8

6

http://forums.mysql.com/read.php?45,183339,183339 お楽しみください

非同期の mysql クエリを実行する方法を示す元の記事へのリンクを更新しました。

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

于 2008-10-08T20:34:40.220 に答える
2

Twisted python (reactor ベースの IO) と sqlAlchemy (??) という非常に異なるテクノロジで同様の問題が発生しました。解決策を探しているときに、単純に sqlAlchemy 用の別のスレッドを作成してから要求に応答する sAsync プロジェクトを見つけました。

ASIO が低レベルの OS 機能 (aio_read() や ReadFileEx() など) と OS レベルのリアクター (または Windows の場合はプロクター) に基づいていることを考えると、「非同期性」を同様の手段で。

スレッドで同期コネクタを実行することはオプションではありません

考えてみてlibmysqlclient / mysqlclient.dllください。使用している は同期ソケット呼び出しを行います。OS スケジューラは、I/O が完了するまで別のスレッドに正しく切り替えますが、違いは何ですか? (これのために2kスレッドを作成すべきではないという事実は別として..)

編集: mysql_real_connect() は UNIX ソケット パラメータをサポートします。ASIO のみを使用して、mysql サーバー ポートから自分自身を読み取り、その UNIX ソケットに書き込むことができると思われます。プロキシ化のように。

于 2008-09-29T15:52:32.567 に答える
1

[ スレッドで同期コネクタを実行することはオプションではありません 考えてみてください: 使用している libmysqlclient / mysqlclient.dll は同期ソケット呼び出しを行います。OS スケジューラーは、I/O が完了するまで別のスレッドに正しく切り替えます]

これは私を悩ませています!- 「別のスレッド」は簡単に 2 番目の同期になる可能性があります。mysql への接続であり、別のクライアントとまったく同じように mysql で処理する必要がありますか? 私の直感は、複数のスレッドを使用して動作するはずだということです。

于 2008-09-30T17:36:33.447 に答える
1

MySQL Connector/C++ は、JDBC 4.0 の C++ 実装です。

MySQL Connector/C++ を使用する参考顧客は次のとおりです。 - OpenOffice - MySQL Workbench

詳細: http://forums.mysql.com/read.php?167,221298

于 2009-03-07T08:27:24.877 に答える
1

これは古い質問であることは承知していますが、新しい Boost.Mysql ライブラリを確認することを検討してください: https://anarthal.github.io/mysql/index.html

于 2021-03-10T07:31:04.210 に答える
0

唯一の解決策は、標準のコネクタをラップする非同期サービスを作成することだと思います。ただし、ODBCAPIを理解する必要があります。

于 2008-09-01T22:09:51.607 に答える
0

JSON を介して対話する MySQL の前に別のレイヤーを配置する DBSlayer というプロジェクトがあります。http://code.nytimes.com/projects/dbslayer

于 2008-09-30T17:10:36.910 に答える
0

libdrizzle の使用を検討しましたか? drizzle とは別のプロジェクトだったときから、古いバージョンのみを使用し、非同期クエリ機能をテストしましたが、言及する価値のある実際のベンチマークは行いませんでした。

于 2011-06-02T22:07:06.253 に答える