Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
100万レコード超えそう その2
Slide 2
Slide 2 text
自己紹介 名前:ミヤワキ 個人開発&受託開発 組込からスマホアプリまでやります 好きな言語はKotlin 山を走るのが趣味
Slide 3
Slide 3 text
とある家計簿アプリのお話です
Slide 4
Slide 4 text
基本スタンドアローンで動きますが、 家計簿の同期はサーバ経由です
Slide 5
Slide 5 text
現在、登録ユーザ1700人→4000人程度で 24万→87万レコードのテーブルがあります 収入・支出履歴テーブルのレコード数の推移
Slide 6
Slide 6 text
このまま順調にいくと 100万レコードを超えるかも!
Slide 7
Slide 7 text
100万レコードを超えると パフォーマンスの劣化が顕著になるらしい 実際、1回の同期に5,6秒かかる ケースもでてきた
Slide 8
Slide 8 text
でも安易にサーバ増強するとか 富豪的アプローチはとりたくない t3.microで頑張りたい! ※ t3.micro: vCPU2個 メモリ1GB
Slide 9
Slide 9 text
4個の施策 ・手動で同期してもらう ・古いデータをS3に逃がす ・Bulk Insertを使う ・パーティショニング
Slide 10
Slide 10 text
S3 EC2 RDS 年1の移動 ユーザ登録・ログイン 古いデータをS3に逃がす 2年分だけ保存
Slide 11
Slide 11 text
1万レコードの挿入(MariaDB) Bulk単位 処理時間(msec) Bulkなし 2,440 1000 410 10000 259 1万レコードの挿入(SQLite) Bulk単位 処理時間(msec) Bulkなし 44,189 10 2,839 100 1,537 200 1,867 500 2,967 t3.micro Huawei P20lite Android9 Bulk Insertを使う
Slide 12
Slide 12 text
ここまでやって、現在は1回の同期が 平均90ms未満、最大3秒
Slide 13
Slide 13 text
100万レコード超えて パフォーマンスが劣化したらやってみます 乞うご期待! パーティショニング