63. 高トラフィックウェブサイトで、”トランジション” 機能をより速く動かすには ?
※注 この記事は Piwik1.8~2.17のアーカイブ情報です
トランジションは、Piwik の非常に便利な機能の 1 つです。この機能は、他のほとんどの Piwik レポートと根本的に異なります。前処理レポートへのアーカイブを使用せず、代わりにその情報ディレクトリーをログから受け取ります。これは、トランジションレポートはより多くのトラフィックがあるウェブサイトにロードするのに数秒かかるものの、トランジションは前処理が不要で、さらにアーカイブのパフォーマンスにも影響しないということを意味します。
私たちのテストでは、トランジションは複数の 100.000 ページビュー以上を含む期間を処理することができます。数百もの情報処理には時間が必要です。ただし、パフォーマンスは一般的にはあなたのデータベースサーバーとトラフィックパターンなど、その他の要因によりかかるパワーに大きく左右されます。
さらに、初めてページのトランジションを開いたときは、連続的な呼び出しよりもかなり遅い可能性があります。これは、最初の呼び出し後、データベースキャッシュが熱く、クエリーがより速く実行されるためです。
もしたくさんのトラフィックがあるサイトを持っている場合、あまりにも長期間のトランジションは開かないほうがいいかもしれません。しかし最も重要なことは、統計的に代表的な結果を得るために十分なデータを持つことです。この大量のデータをアーカイブする場合、1、2 日程度を費やす必要があるかもしれません。
一旦データベースで集約が発生すると、MySQL テーブルにいくつかのインデックスを追加して調整することができます。
ページ URL のトランジション速度を速めるために、次のインデックスを作成できます。
ALTER TABLE `piwik_log_link_visit_action` ADD INDEX `transitions_url` ( `idaction_url` , `idsite` , `server_time` ); ALTER TABLE `piwik_log_link_visit_action` ADD INDEX `transitions_url_ref` ( `idaction_url_ref` , `idsite` , `server_time` ); ALTER TABLE `piwik_log_visit` ADD INDEX `transitions` ( `visit_entry_idaction_url` , `idsite` , `visit_last_action_time` );
私たちは、これらのインデックスがトラフィック全体のかなり低いシェアを持ったページに対するパフォーマンスを劇的に改善することを確認しました。新しいログを挿入するとき、彼らはほんのすこし余計な複雑さを増しますが、トランジション速度の向上により、さらに速い速度でシステムを外へ出すクエリーを持つことになり、トラッキングのパフォーマンスによい影響をもたらします。これらのインデックスは、すべて必要ではありませんが、トランジションのパフォーマンスをみながら順番にインデックスを追加することができます。
注意 : これらのインデックスを追加することは、ページオーバーレイレポートのパフォーマンスも向上させます。