對於可以在C或C++應用程序中使用的Mysql,是否存在任何異步連接器?我正在尋找一些可以插入到編碼爲Boost.Asio的reactor pattern中的東西。異步Mysql連接器
[編輯:]在線程中運行同步連接器不是一個選項。
對於可以在C或C++應用程序中使用的Mysql,是否存在任何異步連接器?我正在尋找一些可以插入到編碼爲Boost.Asio的reactor pattern中的東西。異步Mysql連接器
[編輯:]在線程中運行同步連接器不是一個選項。
http://forums.mysql.com/read.php?45,183339,183339 享受
更新鏈接到原始文章展示瞭如何做異步的MySQL查詢:
http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/
我認爲唯一的解決方案是創建一個包裝standard connector的異步服務。你需要了解ODBC API。
我有一個非常不同的技術類似的問題:Twisted python(基於reactor的IO)和sqlAlchemy(??)。在尋找解決方案時,我發現了一個sAsync項目,它爲sqlAlchemy創建了一個單獨的線程,然後響應請求。由於ASIO基於低級操作系統功能(如aio_read()或ReadFileEx()等)和OS級反應器(或Windows的情況下的proactor),所以我認爲你不會有另一個機會而不是通過類似的手段來模擬「異步性」。
運行中的線程同步連接器是不是一種選擇
想想吧:libmysqlclient/mysqlclient.dll
你使用使得同步套接字調用。操作系統調度程序將正確切換到另一個線程,直到I/O完成,所以有什麼區別? (除了你不應該爲此做2k線程..)
編輯:mysql_real_connect()支持一個UNIX套接字參數。你可以從MySQL服務器端口讀取自己的數據,並使用ASIO寫入該UNIX套接字。就像一個代理服務器。
有一個名爲DBSlayer的項目,它將另一層置於MySQL前面,通過JSON與之交談。 http://code.nytimes.com/projects/dbslayer
[運行中的線程同步連接器是不是一種選擇 想想看:在的libmysqlclient /你使用mysqlclient.dll使得同步套接字調用。操作系統調度程序將正確切換到另一個線程,直到I/O完成]
這是在煩我! - 「另一個線程」可以輕鬆地進行第二次同步。連接到mysql,應該由mysql處理,就像它將另一個客戶端一樣?我的感覺是它應該使用多線程工作。
它將在線程中工作。但是可以說,你希望與一臺或多臺服務器建立100個連接。不是我想象任何人會這樣做,但爲了爭論而接受它。我應該旋轉100個線程(或者甚至只有10個線程池)?這是相當大的開銷。 – 2008-10-02 13:38:44
MySQL連接/ C++是一個C++實現JDBC 4.0
的的使用MySQL Connector/C++的參考客戶是: - OpenOffice - MySQL Workbench
你有沒有考慮使用libdrizzle?我只使用過一箇舊版本,當時它是一個來自毛毛雨的單獨項目,我測試了異步查詢功能,但是我從未做過任何值得一提的實際基準測試。
我已經採用當我創建這個問題時,快速瀏覽Drizzle項目(請參閱我的評論以接受答案)。那時他們正在進行一個異步客戶端。我真的不知道結果如何。 – 2011-06-03 08:12:37
阻塞連接在這個實現中是一個嚴重的問題,但似乎是做我最初的要求。毛毛雨項目(https://launchpad.net/drizzle)正在開發一個異步客戶端,它將與Mysql向後兼容(這裏提到:http://www.oddments.org/?p=20) – 2008-10-09 08:05:21