ホームページ >バックエンド開発 >PHPチュートリアル >ビッグデータの同時実行性の問題の処理

ビッグデータの同時実行性の問題の処理

WBOY
WBOYオリジナル
2016-06-23 13:39:541038ブラウズ

データベース内
データベース
A
テーブルがあります
a
その中のデータは
名 姓
A a
このテーブルには何百万ものデータがあります。
そこで質問です
/*前の $name はすでに私によって定義されています*/
$result= "SELECT lastname FROM a WHERE firstname='".$name."'";
$sql_name= mysql_query($result);
$name=mysql_fetch_array($sql_title);
$subject =$name[0] ?>
同時に 500 個のデータベースを処理すると、サーバーがハングします。時間 。
何か良い解決策はありますか?





ディスカッションへの返信 (解決策)

残念ながら、これは、ハードウェアとオペレーティング システムが高い同時実行性をサポートしていないことが原因です。

PHP の観点だけから現状を変えることはできません

コードの場合:
PHP レベルでは最適化の余地はありません
mysql レベルでは、firstname 列にインデックスを付けるだけです


残念ながら、これはあなたのハードウェア また、オペレーティング システムは高い同時実行性をサポートしていません。

PHP の観点だけから現状を変えることはできません

コードの場合:
PHP レベルでは最適化の余地はありません
mysql レベルでは、firstname 列にインデックスを付けるだけです

実際、まだ可能ですコードレベルからは、 Got a question

$subject =$name[0]; が見つかりました。ここでは 1 行のみが取得されます。
それで。 $result= "SELECT lastname FROM a WHERE firstname='".$name."'";
は $result= "SELECT lastname FROM a WHERE firstname='".$name."' 制限 0,1" に変更できます。 ;
クエリ速度が大幅に最適化されました。解決できると信じていますので、方法を考え続けてください

$result= "SELECT lastname FROM a WHERE firstname='".$name."'";
and $result= "SELECT lastname FROM a WHERE firstname='" .$ name."' 制限 0,1"; 意味が違います!


前者は、複数の行が取り出される可能性があることを意味します
後者は、行が何行あっても、最初に遭遇した行のみが取り出されることを意味します

いわゆる速度を追求する場合、本来の意図さえも歪められます。では、「最適化」とは何を意味するのでしょうか?

水平または垂直テーブルパーティショニング、またはマルチデータベースパーティショニングを通じて。

サブデータベースとサブテーブルのことです。 。 。

md5(名+姓)、異なるデータベーステーブルにハッシュされます。

上記で言ったことには何か間違っていると思いますが、where ステートメントに基づくと、サブデータベースとサブテーブルの依存関係は md5(firstname) であるはずです、申し訳ありません

$result= "SELECT lastname FROM a WHERE firstname='".$name ."'";

$result= "SELECT lastname FROM a WHERE firstname='".$name."' limit 0,1";

は意味が異なります。


前者は、複数の行が取り出される可能性があることを意味します
後者は、行が何行あっても、最初に遭遇した行のみが取り出されることを意味します

いわゆる速度を追求する場合、本来の意図さえも歪められます。では、「最適化」とは何を意味するのでしょうか?
データベースに重複しているものがいくつかあるため、申し訳ありません。それらの 1 つを取り出すだけです


上記の記述に何か問題がありますが、where ステートメントに基づくと、サブデータベースとサブテーブルの依存関係は md5 (firstname) であるはずだと思います。ごめんなさい

そうですね、まだ理解していないかもしれません。インデックスを作成します。次に、サブデータベースとテーブル

株式先物に似た高同時実行マッチングシステムがあります。誰でも作ることができますか?


13816210664までご連絡ください
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。