7. TODAYS AGENDA
というタイムライン機能を作るときの
SELECT * FROM contents WHERE user_id IN (
SELECT follow_id FROM follows WHERE user_id = xxx
)
ORDER BY create_date DESC LIMIT 20
CRAZY SLOW!!
を、解決するためのREST APIのおはなしです。
#mongodbcasual
21. THE WORLD OF CRAZY SCHEMA
普通には作れないので設定を変更
# Specify .ns file size for new databases.
- nssize = 16
+ nssize = 800
コレクション数上限:2.4万 => 120万(足りない)
#mongodbcasual
22. THE WORLD OF CRAZY SCHEMA
[SERVER-84] when replicating capped collection, _id
index is created at the target
capped collectionでPrimaryにないインデックスが
Secondaryに作られるバグ
コレクション数上限:120万 => 60万 (超足りない)
(fixed by 2.0.3)
#mongodbcasual
23. THE WORLD OF CRAZY SCHEMA
そこで・・・
NSSIZEはデータベースごとなので
上限に達したら新たなデータベースを作る
コレクション数上限:60万 => infinity(足りる!)
#mongodbcasual
24. THE WORLD OF CRAZY SCHEMA
すぐSWAPしちゃう
RESTART RESTART RESTART
RESTART RESTART RESTART RESTART
RESTART
#mongodbcasual
25. THE WORLD OF CRAZY SCHEMA
mongoコンソールがすぐ落ちる
SECONDARY> use timeline-01
SECONDARY> db.
TAB
exception:
SECONDARY> db.exception: invoke failed:
exception
$
#mongodbcasual
26. THE WORLD OF CRAZY SCHEMA
コレクションの削除で止まる
GLOBAL LOCK!
#mongodbcasual
27. THE WORLD OF CRAZY SCHEMA
削除すると断片化して止まる
[rsSync] warning: slow scan in allocFromFreeList (in
write lock) FRAGMENTATION
[rsSync] warning: newExtent 127729 scanned
build index timeline-db02.home_tl535861 { _id: 1 }
[rsSync] build index done 68 records 8.9 secs
GLOBAL LOCK!
global lock マジ xxxxxx
#mongodbcasual
28. THE WORLD OF CRAZY SCHEMA
応答時間が安定しない
SPIKY!
#mongodbcasual