Postgres で準備されたステートメントを使用すると、はるかに遅いクエリがいくつかあります (これは既知の問題です。 http://www.postgresql.org/docs/current/static/sql-prepare.htmlを参照してください)。したがって、これらのクエリのステートメント準備をオフにしたいと考えています。
DBIx::Class では、connect_info でパラメータ「pg_server_prepare => 0」を渡すことにより、データベースに接続するときにプリペアド ステートメントをグローバルにオフにすることができます。しかし、既存の接続に対してこれを変更する方法がわかりません。DBIx::Class::Schemaが与えられたので、私はこれを試しました:
$schema->storage->connect_info->[0]->{'pg_server_prepare'} = 0;
その呼び出しの後に connect_info をログに記録すると、このパラメーターの新しい値が表示されますが、データベース ドライバーはまだプリペアド ステートメントを使用しています。私も切断して再接続しようとしました
$schema->storage->connect_info->[0]->{'pg_server_prepare'} = 0;
$schema->storage->disconnect;
$schema->connect(@{ $schema->storage->connect_info->[0] });
しかし、これも役に立ちませんでした。
何か案は?