おすすめ: 「PHP ビデオ チュートリアル 」
One by 1 億の注文テーブルを 5 つのテーブルに分割できるため、各テーブルには 2,000 万のデータのみが含まれ、元のテーブルの圧力が共有されます。サブテーブルは、特定の条件に従って分割する必要があります。ここで、テーブルは次のようにできます。必要なデータを見つけるためにどのテーブルに移動するかを制御するミドルウェア。
ミドルウェア: メインテーブルの自動インクリメント ID をミドルウェアとして使用します (どのフィールドがミドルウェアに適していますか? 一意である必要があります)
配布方法は?メイン テーブルに挿入した後、ID が返され、この ID とテーブルの数に基づいて剰余が取得され、残りがどちらかのテーブルにデータが挿入されます。
注: サブテーブルの ID はメイン テーブルの ID と一致している必要があります。
将来的には、挿入操作のみがメイン テーブルを使用します。変更、削除、読み取りには使用する必要はありません。
1. メッセージ キューとは何ですか?
メッセージ伝播プロセス中にメッセージを保存するコンテナ
2、メッセージ キューが生成される歴史的な理由
メッセージ キューの特徴: まず、 first out
実行された SQL ステートメントは、最初にメッセージ キューに保存され、その後、スムーズかつ非同期でデータベースに順次挿入されます。
アプリケーション: Sina、最初にインスタント コメントをメッセージ キューに入れてから、SQL を挿入します。スケジュールされたタスクを通じてメッセージ キュー内のステートメントを順番に変更します。データベース
Operationサブテーブルに移動して変更します。
#この変更には問題があり、メインテーブルとサブテーブルのデータに不整合が生じます。メインテーブルとサブテーブルのデータを整合させるにはどうすればよいですか? #Redis キューはメイン テーブルとサブテーブルのデータの一貫性を保ちます変更が完了すると、メイン テーブルのデータが変更され、 redis キュー次に、Linux スケジュールされたタスク (contble) がループして、redis キュー内の SQL ステートメントを実行し、メイン テーブルの内容を同期的に更新します。
MySQL 分散サブテーブル (クエリ、削除)
クエリはサブテーブルのみをクエリする必要があり、テーブル全体をクエリする必要はありません削除、最初に ID に基づいてオブジェクトを検索します。サブテーブルを削除してから削除し、SQL ステートメントをプッシュしてテーブルのデータ全体をメッセージ キューに削除します
その後、スケジュールされたタスクを実行してテーブルの合計データを削除します#タイミング タスク:
# mysql 分散データベースの分割
データベースの分割に関するアイデア
注: データベースを操作した後は、データベース接続を閉じる必要があります。そうしないと、mysql はデータベースが常に接続されていると認識します。同じデータベース
またはモジュラスを取得して、どの構成ファイルをロードしてどのデータベースに接続するかを決定します
原理は新しい
削除
実行キュー
#情報を編集した後はキャッシュを削除する必要があります。そうしないと、変更されたデータではなく、常にキャッシュされたデータが読み取られます。
以上がPHP と MySQL を組み合わせることで数千万のデータ処理を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。