Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
100万レコード超えそう(その2)
Search
wakio
June 20, 2024
Programming
1
87
100万レコード超えそう(その2)
wakio
June 20, 2024
Tweet
Share
More Decks by wakio
See All by wakio
世界一流エンジニアの思考法を読んでみた
wakino
1
53
Other Decks in Programming
See All in Programming
Serving TUIs over SSH with Go
caarlos0
0
830
TSConfigからTypeScriptの世界を覗く
light_planck
2
1.1k
Doma で目指す ORM 最適解
nakamura_to
1
140
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
2
210
クラス設計の手順
akikogoto
0
150
Feature Flag 自動お掃除のための TypeScript プログラム変換
azrsh
PRO
4
480
開発者フレンドリーで顧客も満足?Platformの秘密
algoartis
1
280
OpenTelemetryで始めるベンダーフリーなobservability / Vendor-free observability starting with OpenTelemetry
seike460
PRO
0
150
TypeScript を活かしてデザインシステム MCP を作る / #tskaigi_after_night
izumin5210
3
290
コンポーネントライブラリで実現する、アクセシビリティの正しい実装パターン
schktjm
1
440
CQRS/ESのクラスとシステムフロー ~ RailsでフルスクラッチでCQRSESを組んで みたことから得た学び~
suzukimar
0
170
TypeScript製IaCツールのAWS CDKが様々な言語で実装できる理由 ~他言語変換の仕組み~ / cdk-language-transformation
gotok365
6
310
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
523
40k
Scaling GitHub
holman
459
140k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Speed Design
sergeychernyshev
30
950
Rebuilding a faster, lazier Slack
samanthasiow
81
9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.2k
It's Worth the Effort
3n
184
28k
KATA
mclloyd
29
14k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
105
19k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Transcript
100万レコード超えそう その2
自己紹介 名前:ミヤワキ 個人開発&受託開発 組込からスマホアプリまでやります 好きな言語はKotlin 山を走るのが趣味
とある家計簿アプリのお話です
基本スタンドアローンで動きますが、 家計簿の同期はサーバ経由です
現在、登録ユーザ1700人→4000人程度で 24万→87万レコードのテーブルがあります 収入・支出履歴テーブルのレコード数の推移
このまま順調にいくと 100万レコードを超えるかも!
100万レコードを超えると パフォーマンスの劣化が顕著になるらしい 実際、1回の同期に5,6秒かかる ケースもでてきた
でも安易にサーバ増強するとか 富豪的アプローチはとりたくない t3.microで頑張りたい! ※ t3.micro: vCPU2個 メモリ1GB
4個の施策 ・手動で同期してもらう ・古いデータをS3に逃がす ・Bulk Insertを使う ・パーティショニング
S3 EC2 RDS 年1の移動 ユーザ登録・ログイン 古いデータをS3に逃がす 2年分だけ保存
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を使う
ここまでやって、現在は1回の同期が 平均90ms未満、最大3秒
100万レコード超えて パフォーマンスが劣化したらやってみます 乞うご期待! パーティショニング