NetScaler 9 (v10) で導入された新しい DataStream 機能を使用して、コンテンツの切り替えを行います ( http://support.citrix.com/proddocs/topic/netscaler/ns-dbproxy-wrapper-con. html )。いくつかの読み取り専用 MySql スレーブ間でバランスをとる読み取り専用仮想サーバーがあります。コンテンツ スイッチングを使用して、すべての「選択」を読み取り専用サーバーに送信します。
ポリシーは次のように構成されます。
mysql.req.query.command.contains("select")
ユーザーはマルチパート クエリをデータベース サーバーに送信します。ほとんどの場合、次のように単純です。
use database;
select col1 from table1;
クエリの先頭にコメントを入れることもあります。例えば:
-- this is my query
select col1 from table1;
私たちが見つけたのは、クエリが選択で始まるだけの場合、すべてがスムーズに機能することです。ただし、クエリの前に use ステートメントまたはコメントがある場合、コンテンツ スイッチャーはこれが選択クエリであることを検出できず、読み取り専用の仮想サーバーをバイパスします。
私はすべての開発者に、すべてのクエリですべてのテーブルを完全にエイリアスし、use ステートメントを避ける必要があること (はい、これはとにかく良いことです)、また SQL でコメントを使用できないこと (それはばかげています) を伝えようとしています。
コメントを無視してステートメントを使用するようにNetScaler DataStreamコンテンツスイッチングを構成する方法を知っている人はいますか?