1

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] });

しかし、これも役に立ちませんでした。

何か案は?

4

1 に答える 1