THK Analytics が高速・低メモリな理由

2015年10月28日

高速・低メモリ

本ページでは、
THK Analytics が高機能であるにも関わらず、
高速・低メモリで動作する理由について書いております。

データを扱う役割を明確化

  • DB で出来ることは DB に
  • PHP でしか出来ないことは PHP に
  • javascript でしか出来ないことは javascript に

例えば、THK Analytics のベースとなった、Research Artisan Lite では、

「MySQL からデータを取得して、PHP で件数をカウントする」

といった挙動であるのに対し、THK Analytics では、

「MySQL でデータをカウントしてから、PHP でデータを取得する」

といった挙動になっています。

巨大なデータの扱いに関しては PHP よりも MySQL の方が圧倒的に速いため、
ベースの部分から大幅に変更しています。

また、データベースに対する SQL 文も、
可能な限り高速になるよう、その大半について変更と修正を行っています。

必要最低限のセッション情報のみを維持

Research Artisan Lite では、多くのデータを PHP のセッションとして保持しています。
しかし、これがメモリを大幅に圧迫(特に大量のドメイン情報やURL)。

THK Analytics では、解析ページを表示するために必要なセッションのみを維持するようにしているため、
メモリ消費量も大幅に削減しています

また、プログラム内での配列の扱い方なども、
Research Artisan Lite から、大部分の見直しと修正を行うことで、
高速・低メモリを実現しています。

データベースは、月ごとに1つのテーブルを作成

「月ごとに DB のテーブルを作成する」と言うこの仕様は、
Research Artisan Lite からの流用で、そのまま採用させていただきました。

MySQL のログデータは月単位でテーブルを作成しているため、
データ検索が高速です。

プログラムの最適化

THK Analytics の大半は PHP で作成されています。
PHP のプログラミングを最適化することで、大幅に高速化しています。

PHP プログラミングの高速化に関する詳細は、
ブログの方で書いていますので、こちら をご覧ください。

高機能化

THK Analytics では、Research Artisan Lite にはなかった
機能やグラフなどなど、
いくつかの機能が新たに搭載され、高機能化しています。

Research Artisan Lite に潜在的に存在していた細かなバグも修正済み。

これからも、さらに高機能化を目指していく予定です。