LoginSignup
0
0

More than 3 years have passed since last update.

sqliteによるデータ書き込み

Last updated at Posted at 2017-10-26

普通にファイル保存するよりも小さいBLOBに限ってはDBにぶっ込んだ方が早いそうな。
排他とか色々あるから遅いと思ってたのですが、、、、、

それだけ性能上がってるなら普通のテーブルも高速に保存できるのか?
と思ったので検証

環境

  • mac(結構前)
  • go言語
  • SQLite version 3.16.0 2

でsqlite3 VS json VS csv による出力でどれが早いかやってみますか。

jsonはその配列をデコードで出力するだけ、他は1レコード毎にする。
これでcsvより早ければそれはそれで価値があるってことね。

とりあえずsqlite3の勝利で終われば非常に楽だなぁ。

条件

  • テーブルは以下にする
    1. ID(int)
    2. Title(string)
    3. value(int)
  • 1000件のレコード書き込みを10セット実施する。

結果

DB追加 CSV json
1.028847秒 0.004198秒 0.005193秒
0.882089秒 0.003451秒 0.000538秒
0.753490秒 0.002792秒 0.000565秒
0.781892秒 0.003049秒 0.000592秒
0.785775秒 0.006175秒 0.000909秒
0.709185秒 0.002781秒 0.000600秒
0.696319秒 0.003531秒 0.000613秒
1.247061秒 0.003052秒 0.000569秒
0.774548秒 0.002544秒 0.000595秒
0.977571秒 0.002651秒 0.000593秒

予想通り、やはり特定条件だけですね。
なんとなくDBの性能による副産物な感じがします。
セミオープン状態になってるとでもいいますかね。

そして、この際NoSQLでも試してみますかね。

改定

改めて時間ができたのでエントリーをみたところ、トランザクション閉じてないってことね。ということでやって見ました結果以下のようになりました。
graf.png

一番時間がかかっているのが、本エントリーの最初のやつです。
変更した結果、このスケールのグラフだとほぼ変わらんところまで行きました。
それをやったあと、気づいたのはブロブ保存でそこそこのVARCHARを保存しないとダメじゃないかと思ったけど、本件については一旦完了と言うことで。

0
0
3

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
0
0