したがって、マスター/スレーブ データベースの設計では、セッション関連のすべてのテーブルを特別に扱う必要があると思います。つまり、すべてのセッション データ テーブルを更新およびクエリできます。ユーザーがサイトにアクセスすると、ユーザーは指定されたデータベースにバインドされ、すべてのセッション アクセスおよびクエリ操作がこのデータベース上で実行されます。セッション テーブルは同期されず、他の非セッション更新もメイン データベースから更新されます。実際、これではセッション更新時のデータベース切り替えを避けることができないため、面倒な場合はセッションをテキストで保存することをお勧めします。
分割データベース設計により、パフォーマンスが数レベル向上する可能性があります。もちろん、1 回の実行の効率は単一データベースの効率よりも高くはなりません。結局のところ、データベースの切り替えには効率の問題があります。サブデータベースとマスター/スレーブ データベースの組み合わせは、データベースの同時実行性のボトルネックを改善するためのより良いソリューションです。原則: 大規模なデータ量、大規模なアクセス量、マスターとスレーブ。多くの場合、この 2 つは並行して動作します (この記事ではキャッシュについては説明しません)。
サブデータベースとマスター/スレーブ関係を実装したい場合、アプリケーション内で特定のサーバーに切り替えるのは非常に面倒な作業になると思います。変数名、たくさんありますか?より良い解決策を見つける方法がこの記事のテーマです。
まず第一に、サブデータベースによる多数のデータベースの問題があります。どのような状況でデータベースが分岐するのでしょうか?なぜデータベースを分割する必要があるのかまだ理解できない人もいるかもしれないので、私の経験と推測について簡単に話します。たとえば、ブログ プログラムは通常、ログ テーブルにログを保存するように設計されています。マルチユーザーブログであればuidを紐付けることになりますが、データ量が多くない場合はこの設計でも問題ありませんが、ログ量が膨大になると数十万件のログレコードが入力されます。アクセス数もかなり多くなると、すべてのユーザーがログ リストにアクセスして、数千万件のログ レコードを含むデータ テーブルからいくつかのエントリを見つけることは不可能だと思います。明らかです。現時点では、サブライブラリの問題を考慮する必要があります。分割方法は?非常に単純なテーブル分割方法があります。つまり、uid セグメントに従って各データベースにログを記録します。もちろん、ユーザー ログの分布は明らかに均一ではないため、この分布は過去の統計結果に基づいて調整する必要があります。 uid セグメントを設定し、uid に基づいて指定されたデータベース構成にインデックスを作成し、データベース オブジェクトを作成します。構成情報は次のとおりです:
コードをコピー コードは次のとおりです:
$configs['db_info'] ['ブログ'][ 0] = array(
'db_host' => '192.168.0.1',
'db_name' => 'ブログ',
'db_user' => 'root ',
' db_pass' => ',
);
$configs['db_info']['blog'][1] = array(
'db_host' => ' 192.168.0.2',
'db_name' => 'ブログ',
'db_user' => ',
); >$configs['db_info ']['blog'][2] = array(
'db_host' => '192.168.0.2',
'db_name' => 'ブログ',
'db_user' => 'root',
'db_pass' => '',
//...他にもたくさんあります。どのサーバーを選択するかは、uid に基づいて単純な一致を行うだけです。
マスター/スレーブ データベースについて話しましょう。マスター/スレーブ データベースをいつ使用するか?たとえば、有名人のブログには大量のアクセスがあり、そのデータを分割する方法がありません。この場合、マスター/スレーブ データベース サーバーを考慮し、トラフィックを迂回するために複数のデータベースを使用する必要があります。マスター/スレーブおよびサブデータベースに適用するには、上記の構成情報を若干変更する必要がある場合があります。
コードは次のとおりです:
$configs['db_info']['blog'][0]['master'] = array(
'db_host' => '192.168.0.1',
'db_name' => 'ブログ',
'db_user' => 'root',
'db_pass' => '',
);
$configs['db_info']['blog'][0]['slave'][0] = array(
'db_host' => '192.168.0.2',
'db_name' => 'ブログ',
'db_user' => 'root',
'db_pass' => '',
);
$configs['db_info']['blog'][0]['slave'][1] = array(
'db_host' => '192.168.0.3',
'db_name' => 'ブログ',
'db_user' => 'root',
'db_pass' => '',
);
$configs['db_info']['blog'][1]['master'] = array(
'db_host' => '192.168.0.4',
'db_name' => 'ブログ',
'db_user' => 'root',
'db_pass' => '',
);
$configs['db_info']['blog'][1]['slave'][0] = array(
'db_host' => '192.168.0.5',
'db_name' => 'ブログ',
'db_user' => 'root',
'db_pass' => '',
);
$configs['db_info']['blog'][1]['slave'][1] = array(
'db_host' => '192.168.0.6',
'db_name' => 'ブログ',
'db_user' => 'root',
'db_pass' => '',
);
$configs['db_info']['session'][0]['master'] = array(
'db_host' => '192.168.0.7',
'db_name' => 'セッション',
'db_user' => 'root',
'db_pass' => '',
);
$configs['db_info']['session'][1]['master'] = array(
'db_host' => '192.168.0.8',
'db_name' => 'セッション',
'db_user' => 'root',
'db_pass' => '',
);
ここに書きます、我想都应该知道どのようにデータテーブルを分割して割り当てますか、次去下我就来说一下轻松の读取この配置情報、どのようにこれらの配置を行うか
のデータベース ドライブに組み込まれています。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

WebStorm Mac版
便利なJavaScript開発ツール

SublimeText3 中国語版
中国語版、とても使いやすい

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
