2011-09-16 13 views
1

私はmysqlと交信する必要があるアプリケーションを書いています。 epoll linuxシステムコールを使用してクライアントを多重化するシングルスレッドアプリケーションですが、問題は、データベースへの(重い)クエリを実行するたびにすべてがストールすることです。だから私は実際のソケットをmysqlから取得し、それを私のepollに入れて、データベースも多重化できると考えました。それは可能ですか?C APIとrawソケットを取得する

答えて

0

これはもう少し複雑です。 「すべてがストールする」(それがあなたの技術的な意味を推測することができます)、あなたのMySQLサーバーはおそらく過負荷になっています。単一の接続を多重化することはおそらく動作しないだけでなく、その根本的な問題を回避することもありません。

代わりに、巨大なテーブルスキャンとファイル分割が発生しないように、クエリとインデックスを修正してください。

+0

dbには7つのリクエストがあり、遅いものは2つだけです。他のテーブルは異なるテーブルを使用していて、とても簡単です(すぐに実行されます)。それらをさらに最適化することは不可能です。彼らはほぼ300kレコード(データ転送ログ)をチェックしているので、私の問題はこの多重化だけです。他に何もない。 – Daniel

+0

@Daniel: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

また、リンクが不明です。ウェイバックマシン: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

関連する問題