ホームページ  >  記事  >  バックエンド開発  >  PHP と MySQL を組み合わせることで数千万のデータ処理を実現

PHP と MySQL を組み合わせることで数千万のデータ処理を実現

藏色散人
藏色散人転載
2020-11-18 15:10:495029ブラウズ

おすすめ: 「PHP ビデオ チュートリアル

mysql サブテーブルのアイデア


One by 1 億の注文テーブルを 5 つのテーブルに分割できるため、各テーブルには 2,000 万のデータのみが含まれ、元のテーブルの圧力が共有されます。サブテーブルは、特定の条件に従って分割する必要があります。ここで、テーブルは次のようにできます。必要なデータを見つけるためにどのテーブルに移動するかを制御するミドルウェア。
ミドルウェア: メインテーブルの自動インクリメント ID をミドルウェアとして使用します (どのフィールドがミドルウェアに適していますか? 一意である必要があります)
配布方法は?メイン テーブルに挿入した後、ID が返され、この ID とテーブルの数に基づいて剰余が取得され、残りがどちらかのテーブルにデータが挿入されます。
注: サブテーブルの ID はメイン テーブルの ID と一致している必要があります。
将来的には、挿入操作のみがメイン テーブルを使用します。変更、削除、読み取りには使用する必要はありません。

PHP 结合 MySQL 千万级数据处理

redis メッセージ キュー

1. メッセージ キューとは何ですか?
メッセージ伝播プロセス中にメッセージを保存するコンテナ
2、メッセージ キューが生成される歴史的な理由

PHP 结合 MySQL 千万级数据处理

メッセージ キューの特徴: まず、 first out
実行された SQL ステートメントは、最初にメッセージ キューに保存され、その後、スムーズかつ非同期でデータベースに順次挿入されます。
アプリケーション: Sina、最初にインスタント コメントをメッセージ キューに入れてから、SQL を挿入します。スケジュールされたタスクを通じてメッセージ キュー内のステートメントを順番に変更します。データベース

Modify

Operationサブテーブルに移動して変更します。

#この変更には問題があり、メインテーブルとサブテーブルのデータに不整合が生じます。メインテーブルとサブテーブルのデータを整合させるにはどうすればよいですか?

PHP 结合 MySQL 千万级数据处理

#Redis キューはメイン テーブルとサブテーブルのデータの一貫性を保ちます

変更が完了すると、メイン テーブルのデータが変更され、 redis キュー

次に、Linux スケジュールされたタスク (contble) がループして、redis キュー内の SQL ステートメントを実行し、メイン テーブルの内容を同期的に更新します。

PHP 结合 MySQL 千万级数据处理

MySQL 分散サブテーブル (クエリ、削除) PHP 结合 MySQL 千万级数据处理

クエリはサブテーブルのみをクエリする必要があり、テーブル全体をクエリする必要はありません

削除、最初に ID に基づいてオブジェクトを検索します。サブテーブルを削除してから削除し、SQL ステートメントをプッシュしてテーブルのデータ全体をメッセージ キューに削除します

その後、スケジュールされたタスクを実行してテーブルの合計データを削除します

PHP 结合 MySQL 千万级数据处理

#タイミング タスク:

PHP 结合 MySQL 千万级数据处理

# mysql 分散データベースの分割

PHP 结合 MySQL 千万级数据处理

データベースの分割に関するアイデア

サブライブラリの図:

PHP 结合 MySQL 千万级数据处理

##

mysql 分散ブランチ データベース (増加)

PHP 结合 MySQL 千万级数据处理
注: データベースを操作した後は、データベース接続を閉じる必要があります。そうしないと、mysql はデータベースが常に接続されていると認識します。同じデータベース

またはモジュラスを取得して、どの構成ファイルをロードしてどのデータベースに接続するかを決定します

PHP 结合 MySQL 千万级数据处理

mysql分散ブランチライブラリ(変更)

原理は新しい

PHP 结合 MySQL 千万级数据处理

mysql 分散ブランチ ライブラリ (チェック、削除)# と同様です。 ##原理は同様です

削除PHP 结合 MySQL 千万级数据处理

実行キューPHP 结合 MySQL 千万级数据处理

mysql分散キャッシュ(memcache) ) applicationデータベースのオーバーヘッドを節約するために、データをキャッシュに入れます。まずキャッシュを確認します。存在する場合は直接取り出します。存在しない場合は、データベースを確認してからキャッシュに保存します。

#情報を編集した後はキャッシュを削除する必要があります。そうしないと、変更されたデータではなく、常にキャッシュされたデータが読み取られます。PHP 结合 MySQL 千万级数据处理

以上がPHP と MySQL を組み合わせることで数千万のデータ処理を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。