LoginSignup
3
0

More than 3 years have passed since last update.

trdsqlの性能評価を行ってみた

Last updated at Posted at 2019-12-11

はじめに

先日のPHPカンファレンス2019にてtrdsqlなる便利ツールを知り、これ実業務に適用できたらログ調査とか楽になるかなーと思い触ってみました
実業務のログファイルは大変大きいファイルなのでどの程度まで耐えられるのか?
sqlと謳っているがindex的な概念はあるのか?
このあたりを調べてみました

phpcon参戦記事はこちら

trdsqlに関してはこちら

対象ログ

とあるログ

  • 126,945,759行(約1億2000万行)
  • 13.8GB
  • タブ区切り

フォーマットは以下の感じ

ipアドレス   実行したdatetime     ログID   実行したmsec

なるほど確かに重い
こいつに対してサクサク検索かけられたらめっちゃ強い

とりあえず試してみる

インストールはgithubに記載の通りでいけた

go get -d github.com/noborus/trdsql
cd $GOPATH/src/github.com/noborus/trdsql
make
make install

とりあえず1件取得
タブ区切りのファイルは以下の感じで指定するといける
ヘッダーはないのでc1とかc2とかでカラム指定をする

trdsql -id "\t" "SELECT c2 FROM test.tsv limit 1"
実行結果: 2019/12/10 00:00:00
実行時間: 7分40秒

あ…あれ…?
1件取得で既にこの実行時間…これはダメかもしれん…
大体やりたいのは時間による絞り込みなのでc2で一定期間のログを集計してみる

trdsql -id "\t" "SELECT count(*) FROM test.tsv where c2 between '2019/12/10 00:30:00' and '2019/12/11 00:35:00'"
実行結果: 30569145
実行時間: 9分20秒

うーん、思ったよりはマシだったがこのレベルだと普段の調査では使い物にはならなそう

まとめ

trdsqlは大変使い勝手の良いツールですが速度面で言うと、大きいファイルに対してはあまり有用ではなさそうでした
sqlライクにしているだけでindex的な概念もなさそう
結局lessしたりファイル分割したりして細かく見ていくしかないのか…

追記

そーだいさんからtwitterにてコメントをもらいました

スクリーンショット 2019-12-11 15.09.50.png

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0