ααααΈαααααααα»αααΆαααααΆααα’αααααΈαααα αααααααΎααΌααααααααααααΆα
#1. ααΆααααα αα
α’αααααα’αααΈαααα αα·αααΌαα ααα»αααααΆααΆαααααααααα
α
"α’αααΈαααΆα αααΎαααααααααααα»ααα ... "
ααααΌαα‘αΎα ααΌα ααΆ MVP ααΆαα½α ααααααααααααΎαααΆαα αΆααααααΎααα αααααααααα»αααααααΆααα½α - ααΆααααα½ααα·αα·αααααααΌαααΆαα’αα»αααααααααΆαααααααΆαααΈαααααααΆαααα ααα½α 10 ααα»ααααα ααΆααΆαααΆααα’ααααΆαααααααααΌα α ααα’αα... ααα»ααααααΌαααα α ααα½ααααΆαααΈααααααΆααααα½ααα·αα·αααααΆααααααΆαααΆααααα αααΎαα‘αΎααα α αΎαααΆααααΈαααααααααΎαααΆαααααΆααΆαααααΎα’αααΈαα½αααΆαα½ααα½αα ααΆααΆαααα α 1.5TBααΎαααΆαααΉαααΆ αααααΈααΆααΆα’αΆα αα αα½α αααα»αααΆαααααααααα ααααααααααα ααΆαα·αααΆαα·ααΆαααααΆααααΆααα
αααααααΆααΊααααΎαααααΌα
ααΆααααααΈαααΆα αααααααααααααΆαα PostgreSQL 9.x ααΊααΆααααααα ααΌα
ααααααΆααααα
ααααΆααα’ααααααΌαααααΎ "ααααα" - ααΆαααα ααΆααΆααααα αα·αααα ααΉαααΆαααΆαα½αααΆααααα EXECUTE
.
αααααβααααΆαβααΆβααααααβααΆαβααααβααααΆαβααΆβαααβαααααααααΆααβαααβααΆβα’αΆα
βααααΌαβααΆαβααααααβαα
βαααααβααΆααΆαα
- ααΆααΆααα "ααααααΆ" αααααααΌαααΆααααααΆα ααααα·αααααΆααΆααα’ααα αα·αα·αααα αα·ααααααΉαα αΆαααΆα α.
- αααααααααΆααΆαααααααααααα’αα·αα·ααααααΌαααΆαααααΎα‘αΎααα
αααα»αααΆααΆα "α«α" αα·αααΆαααααΎααααΆααααΆααααα»α αααααΉαααΆαααααΌα
BEFORE INSERT
αααααααααΆααααΌαααΆααααα αΌα "ααΆαααΆα" αα αααα»αααααααααααααΌαααΆαα ααΎαα·αααΆααααΆαααΏααααααααα ααΎαα αΆααααΆαααααΈααΎααααα αΎα... - β¦ αααααααΎ
ααααΌαααΆααααααΎαα‘αΎααααααα’ααααΎααααΌααααΆααΆααα αααααααΆαα½αααΉαααΆαααΉααααααΉαααΎααΆαααα·α αααααααα ααααΆαααΌα αααααα αααααααα·ααααααααααΌαααΆαααΆααα ααΆαα’αΆαααααΌαααΆαα’αα»αααααααα αααα»αααΆααα»ααααααCREATE TABLE ... (LIKE ... INCLUDING ...)
PG10: ααΆαααα»ααααααααΌα
ααα»ααααααΆααααα ααααΆαααααααα ααΆαααααααααΆαααααααα·ααΆααααααα·αααααααααΉαααΆααααααααΆαααΆαα½αααααααΈααααααααααα α¬ααΆαααΆααα»ααΆααα½αα ααα½ααααααααα α§ααΆα ααα α’αααα’αΆα α αΆαααΆ αααα½ααααααααΆααααααΆααααΆαααααΎαααΎαααααααααααααΌαααΆα ααΆααααα»αααααΆααα½ααααα»αααΆααΆααααΎαααΆαααΆαα½α 100+ ααααα α’ααααααααΈαααα...
αα
αααα»α PG10 ααααΆαααΆααααααααΌαααΆαααααΎα±αααααααΎαα‘αΎααααΆαααααΆαααααααΆαα’αα»ααααααΆαααΆαααα
ααΌα αααααΆααΆαααααααααΆααααααΆααααΈααΈαααΆααααααααα αα ααΆααΆααααα ααααΎααα αααα»ααααααααααΊα
- αα·αααΆααααααΆααα·αααααΆααααααααα
- αα·αααΆααααααΆαααααα ααΎααΆα
- αα·αα’αΆα ααΆ "ααΌαα α " ααααααααΆααααΆααα‘αΎα
- αα·αααΆαααα
INSERT ... ON CONFLICT
- αα·αα’αΆα αααααΎαααααααααααααααααααααα·ααΆαααα
αααααΆαααα½αααΆαααΆαααααααΊα αΆαααα ααααΆααααααααΎαα»ααα½α ααΎαααΆαααΉαααΆ ααΆαα·αα’αΆα αα αα½α αααααα»αααΆαααααΎαααααααΆαααΆααααααααααααα·ααΈ α αΎαααΆααααααΆααααααΆαααααΆαααααΆαααααααααααααααααΆααα½αααα
PG10: α±ααΆαααΈααΈα
ααΌα αααα ααΎαβα αΆααβααααΎαβαααβααααΆαβαααα αΆβαααβααΎαβα‘αΎαβααααβαα½ααα
- αααααααα αα·α
ON CONFLICT
ααΎαααΆαααααΎαααΆααΎααα ααααααΌαααΆααα½ααααα ααΈααα αα·αααΈααα ααΌα ααααα αΎαααΎαααΆααααααΎαααααΆααααΆαααααα·ααααααααΎααααΈαααααααΆααα½αααα ααΆααΆαααααΌααααΈ. - αααα
αΆαα "ααααΌα" αα
αααα»ααααααΉα - αααααΊααΈ
EXECUTE
. - αα½αααααΆαααααΆα αααααα‘ααααΈααααΆα ααΆααΆαααααΌααΆαα½ααααααααααααΆααα’αααααΌα αααααα½ααααα·αααΆαααΌααααΈαααα αααα»αααΆααΆαααααΌααααΈα
ααΆα
α»αααααα αααααΆααααΈα’αααΈαααΆααα’ααααα ααΎαααΆααααα
ααααΆααΆαααα ααΆαβαααααΎαβαααααβααααΈβαα
βααβααααααβαα»αβααΌαβαααα·ααΆαβααααβαααααα·ααΈα
αα ααΆαα»αααα "Sawing"
ααΌα
αα
αααα»ααααααααααα·ααΆαααΆαα½α ααΎαααααΆααααα "ααΆααα·α" αα·α "ααΆαααΆαα" (αα
ααΆαα»αααα) α αααα»αααααΈααααααΎα αααα»ααααααααΆαααα αα½αααααΆαααααΎαααααααΆαα§ααΆα αααα
"ααΆααα·α" ααααΌαααΆααααα αααααααααααΆααΌαααΆααααα αΎα ααΌα ααααααΎαααΆααα»αααααααααα α½αααααααααααααααααΆαα α αΎααα½ααααα·αααααΆαααΎααα (αααααα ααα»!) ααα»ααααααΆααααα αΆααΆαα½ααα ααΆαα»αααα ...
αα·αααααα·ααΆαααΆααΆαα αααΎααα ααα»αααααααα αα 100TB αα "ααΆααα·α" αααααΆαα±ααααΆααα ααΆαα»αααα 2.5TB. α’αααβαα·αβα’αΆα βαα»αβα’αααΈβααΆαβαααΆαβααΆαβαααα½αβααΈβααΆααΆαβαααβααα α’αααβαα·αβα’αΆα βαααα αΆααβααΆβαααα»αβαααβαααααααααΆααβααΆαβαα α αΎαβααΆαβαααααβαα βααΆβααΊαβααααα·α βαααααα
ααΌα ααΆαα ααΆαα»αααα... αα αααα»αααΆ ααΆαα»ααΈαα½αααα½ααααααα αΆααααα... α αΎααααααΆααΆαααααΉαααααΌα ααα»αααα!.. ααααΆαααααΆααααΆααααΆααΆααααΎαααΈααΆαααΆα αα ααΆαα»ααααααΆα ααααα‘αααααααΆααααααααΈαα½αα! ααΆα/α αΆα ααΆααΆαααααΌαααΆααα·αααΌα ααααΆααΆααααΆαα ααα»ααααααΆα’αα»ααααΆαα
- ααααα / α’αΆαααΏαααΆααα»α αααααΆαααααα ααααααααΌα ααΆα
- ααααΎααααΆααααΆαα αα αΆααα·α αααααααΎααΆαααΆαα½ααααααααααααααα½αααΆααααα αααΎα
- αααααΆαα»ααα·αααααααα·α αααααΆααααααααααΆααααα»αααΆαααα ααα α½ααααααααΆαααΆαααα αα
ααΆααααααααααΆααααα»αααααΆαααΆααααΌααααα·ααΆαααΆα ααΆααααα»ααααΈααΈααΌααα α»α ~ 30%, ααΆααααα»αααΆα ~ 50%:
αααα»ααααααΆαα½αααααΆααα ααΎαααΆααααααααααααΌα
ααααΆαααΆααα·αααααΆαααα
αααα»αααΌαααααΆααα·αααααα αααααααΆαααααααα»ααα·α
α
#α’. ααΆααα·ααααααααΌαααααΆααα·αααααα αα·αααΆααααααα’α‘αΎααα·α
ααΌα
ααααβααΎαβααΆαβααΆααβα
α·αααβααΎβα’αααΈβαααβααΎαβααΆα ααΆαααααΆααααααααΆααααααααααΆαααααα½α ααΆαα½ααα·ααααααα ααΆααα·ααα
CHECK (dt = '2018-10-12'::date)
β α αΎαβααΆαβααβα
ααβααΆαβαα·αβααααααααβαααααΆααβαααααβααααΆβααααΆααβα
αΌαβαα
βαααα»αβαααααβααΆααααΆααα
αααααΆααααΆαααΆαααααΆααα’αααα αααα»αααααΆααααααααααΎαααααΌαααΆααααααΎαα‘αΎααααα»αααα·ααααααΆαααα·α ααααααΆααααΆαααα½α ααααααααααααααΆαααα½αααα αΆααααΆααααΈ "αααααααΆαα·ααααα αα" ααΆααααααααααααα (αααΆαααΈααα, ααΆαααα·α αααα, ααααΌαααααΆα), (αααΆαααΈααα, ααΆαααα·α αααα, ααααΆαααααααΆα), (ααΆαααα·α ααααααααΆααααα α»α αααΆαααΈααα)...
ααα»ααααα₯α‘αΌαααααα½αααααααα αααααααααα α αααΆααα ααααααααα’αααα αα·αα·ααααααααααααΈαα½αα... α αΎααα αααα»ααααααααΈαα½αα ααΆαααα·α ααααααΊααα... ααΆααααααΆα₯α‘αΌααααααΎααααα·ααα αααα»ααααααααααααααααααΈαα½αα ααααΆαααααααα αΌααααααααα ααΆααΆααα½ααααα»αα ααααααΆα ααααααααΎαααΆααααα·ααΆαααααααΆ αα·ααααααααΆααααααααααααΆααααΆ ααα»αααααα·αααΆαααααΌαααααααααΆαα½αα‘αΎαα ααβαα»αβαα»αααΈαβα²ααβαααα½αβα―α α’αΌα...
αα·ααα
ααααΆααααααΎαααααα·αααααΆαααΊααΆααααααα - ααΆαααα ααααΆαααΆαααα·α
ααααα
ααααΈαααααααααααΆααα’ααα αα
ααΎααΆααΆααααα
ααα ααααα·αααΈααα·ααΆαααααααΎα ααΆαααΎαα‘αΎαααΊαααα αα 1TB/αααααΆα α!
α₯α‘αΌααααααΌαααααααααΆααααΆ terabyte ααααα ααααααΌααααααααΆααΆαααααααΆαα½αα αααααΊααΎααααααα α₯α‘αΌααααααΆααα½ααααααα»ααα·α ! ααΌαααΆαααααααα αΆααααΆαα αααΆααααΈααααα·αααααΆααααααα½αααΆαααΈααΆααααα’αΆα αααααΎαααααααααα»ααα½ααααααΆα αα
#α£. "ααΆαααΈαααΆαααΆα" ααααα»αααααααααα»α
αααα αΆαααα½ααααααααααααααα»αααΊ ααΆαααααΎααααΆαααααααααααααααΌαααΆα ααααα·ααααα·ααΆααα½αα ααα½αααααα·αααααΌαααΆαααΆα ααααααα "αααααΆααααα½ααααα·αααΆαααααααααΆαα" αα½αααΆα "ααΆααΆααααα½αααΆααα·ααΈααα" ααα»αααααα·αααΌααα·αααΆααα’αααααααΌααααααα αΆααααΆα
ααΌαβαααααΈαβααΌαααΆαβαα»αβααΉαβααΎαβααΆβααΎαβααΆαβααΆα "ααΌα" αα αααααααααα»αααΆαα½αααΉαααα ααααααα αααΆαααααΌααααα ααΆααααααΆ αααα αααΆααααΆ "αααα·αα·" αα·ααα½αααΎαα‘αΎαααΆαα½αααΉαααααα·ααααα·ααΆααα½αα ααα½αααααααααα
ααααα·αααΆααΆααααα½ααααα»αααΆααααααα
ααΆαα ααΎαααΆαα
αΆααααααΎααααα½ααα·αα·ααααα½α
α αΎα αααΆαααΈααααα·α 1000ααΈαα½ααααααΌαααΆαααααΎαααΆαααααααααααα‘αΆαα‘αΌααΈααααΆα
ααααα‘αα α αΎααααααααα‘αΆαααΈαα½αααααααα‘αΎααα·αααΌαααααααΆαααααααααααααΌααααααΌααα
ααΌαααααΆααα·αααααααα
αααααααααΆααααΆαααα½α α’αααΈαα½αααΌα
αααα
setInterval(sendToDB, interval)
αααα αΆαα ααΈαααααΊα αααΆααααΆαααα αααα»αααΆααα·ααααα ααααααΆααα’ααα αΆααααααΎααα αααααΌα ααααΆααΌα αααααααααααΆαααααΌααααααα½αααααααΎααααααααααααααααΆ "αααα ααα»α " α α’αΌα #2...
ααΆααααΆαααα’ ααααα·αααΆααΆααααα½ααααα»αααΆααα½ααα»α ααααααααΆαααα "α ααααα" ααΆααααααααΆα
setInterval(sendToDB, interval * (1 + 0.1 * (Math.random() - 0.5)))
#α€. ααΎααα»αα’αααΈαααααΎαααααΌαααΆα
αααα αΆαααα»ααααααααααααααααΈααΈααΈααΊ ααααΆαααααΆαααααααΆαα ααΎααΆαααα α―ααΆ α’αΆα ααααΆαααΆα
α§ααΆα ααα ααΎαααΆαααααΎα±ααααΆα’αΆα
ααααΎααΆααα·ααΆαααΆααααααΉαααααΆαααααααΆα (ααΆααα’ααααα Seq Scan on users
) ααα»αααααα·αααααΆααααΆαα½αααααΆαα
αααΎαααΌα
ααααΆ - αα½αααααααα
α
ααααΆααΆααα·αααΆααααααΆαα’αααΈααααΌαααΆαααααααα
ααΌαααααΆααα·ααααααααααααααα αααααΆααααααΆα
ααααααΉαααΆαα½α INSERT ... ON CONFLICT DO NOTHING
. ααα»αααααα·ααααααααααα
αααα
αααααΌαααααΆααα·αααααα α αΎαααΆαα·αα
αΆαααΆα
αααα ααΆαα’αΆαααΎααααΈαα·αα·αααααΎααααααα ααααΌαααβααααΎα α’αΌα #3...
ααΆααα»αααααΆααα ααα½ααααααααααΆαααααΆαααααΎαα ααΌαααααΆααα·αααααααα»α/αααααΆααααΈααΆαααΎαααααΆαααααααΆααααΊααΆαααααααα
α αΎαβαααβααΆβααΆαβααααΆααβα
α»αβααβααΆαβαααα»αβαααβα’αβααβααΆαα½αα
ααα»α
"Terabyte-αααα»ααα½ααααα" ααααΆααααααααΆαααα αα½αα±ααααααΆα α ααααα·αααΎα’αααααααΎα’αααΈααααααααΆαααααΉαααααΌα αααααααΆααααααΆααΆαααα»αααααα 2^40 αα / 86400 αα·ααΆααΈ = ~12.5MB/sαααααΌααααΈααααΈα IDE αααααα»ααααΌαααΆαααΆααα π
ααα»ααααααααααααα ααΌααααΈααααΆαα½αααΉαααααα»αααααααα ααααααα α’αααα’αΆα αααααααΆααααααααΆααααα SSDs ααααΎαααΆααααΆαααΆααααα½αα
ααααα: www.habr.com