2011-09-16 119 views
1

我正在編寫需要與mysql通信的應用程序。它是一個單線程應用程序,它使用epoll linux系統調用來實現多路複用客戶端,但問題是每當我對數據庫執行(大量)查詢時,所有事情都會停頓。所以我想從MySQL獲取實際套接字並將其放入我的epoll,這樣我就可以複用數據庫了。那可能嗎?C API並獲取原始套接字

回答

0

這比這更復雜一點。如果「一切都停滯不前」(只能猜測你的技術含義),那麼你的MySQL服務器可能已經過載了。複用單個連接不僅可能不起作用,而且也不會解決根本問題。

相反,修復您的查詢和索引,以避免發生巨大的表掃描和文件丟失。

+0

有7個數據庫請求,其中只有2個是慢速數據庫,其他數據庫使用不同的表,並且非常簡單(立即執行)。它不可能進一步優化它們,他們正在檢查將近30萬條記錄(數據傳輸日誌),所以我的問題就是這種多路複用。沒有其他的。 – Daniel

+0

@丹尼爾:300k的記錄根本不是很多。如果這使得「一切都停滯」,那麼你的查詢和索引就會出現問題。 _那是你的問題。沒有其他的。 –

+0

(正如我已經說過的,任意地將一個連接多路複用到數據庫不會使數據庫執行得更快,所有你要做的就是破解東西。) –

1

http://jan.kneschke.de/2008/9/9/async-mysql-queries-with-c-api/條回答這個問題。適用於MySQL 5.6。

+0

死鏈接。 Google的緩存:http://webcache.googleusercontent.com/search?q=cache:cfftwhpBAS0J:jan.kneschke.de/2008/9/9/async-mysql-queries-with-c-api/+&cd=1&hl= en&ct = clnk&gl = us – RegularlyScheduledProgramming

+0

也是死鏈接。 Wayback機器:https://web.archive.org/web/20140220042427/http://jan.kneschke.de/2008/9/9/async-mysql-queries-with-c-api/ – schoppenhauer

+0

它再次活在這裏:http://jan.kneschke.de/projects/mysql/async-mysql-queries-with-c-api/ – caps