ReadPreference
レプリカセットから読み取るためのストラテジーに設定します。受容される値は、primary、primaryPreferred、secondary、secondaryPreferred、およびnearest です。
Possible Values
primary, primaryPreferred, secondary, secondaryPreferred, nearestデータ型
string
デフォルト値
"primary"
解説
このプロパティを使用すると、プライマリメンバー以外のレプリカセット内のメンバにクエリを実行できるようになります。受容される値は次のとおりです。
- primary:すべてのSELECT クエリが、プライマリサーバーに対して実行されます。
- primaryPreferred:プライマリサーバーが利用できない場合、SELECT クエリはセカンダリサーバーに対して実行されます。
- secondary:すべてのSELECT クエリは、セカンダリサーバーに対して実行されます。
- secondaryPreferred:セカンダリサーバーが利用可能な場合、セカンダリサーバーにSELECT クエリが実行されます。そうでない場合は、プライマリサーバーに対して実行されます。
- nearest:SELECT クエリは、レイテンシが最小のサーバーに対して実行されます。
ReadPreference を使用するタイミング
このプロパティを設定すると、書き込み操作がセカンダリマシンにまだレプリケートされていない場合、最新の変更がクエリ結果に反映されないことがあります。 ReadPreference を使用すると、connector が古いデータを返すリスクはありますが、次のことを達成できます。
- フェイルオーバークエリの設定:プライマリサーバーが利用できない場合、このプロパティを"primaryPreferred" に設定すると、オンラインでクエリを実行し続けることができます。
- 地理的に分散したレプリカセットに対してより高速にクエリを実行:デプロイメントで複数のデータセンターが使用されている場合、ReadPreference を"nearest" に設定すると、connector はレイテンシが最小のレプリカセットメンバーに対してSELECT クエリを実行するためクエリの処理速度が向上します。
connector にSELECT ステートメントをセカンダリサーバーに実行させる場合は、SlaveOK も設定する必要があります。そうしないと、connector はエラー応答を返します。