แแฎแแแฎแแ แแแแฎแแ แแ, แ แแแแ , แกแขแแแแแ แขแฃแแ แ แแชแแแขแแแแก แแแแแงแแแแแแ
#1. แแแแงแแคแแแแแ
แกแขแแขแแ แแแแก แจแแกแแฎแแ, แแฃ แ แแแแ แแ แ แแขแแ แฆแแ แก แแ แแแแแแแแ
"แแแกแฃแแ แแฆแแแแ..."
แแแแแแแแ แแแแแ, แ แแแแ แช แแแแแกแแแแ แ MVP, แฉแแแแ แแ แแแฅแขแแช แกแแแแแแ แแกแฃแแฃแฅแ แแแขแแแ แแแแ แแแแฌแงแ - แแแแแขแแ แแแแ แแแแฎแแ แชแแแแแ แแฎแแแแ แแแ แงแแแแแแ แแ แแขแแแฃแแ แกแแ แแแ แแกแแแแก, แงแแแแ แชแฎแ แแแ แจแแแแ แแแแ แแแแแแฅแขแฃแ แ แแงแ... แแแแ แแ แ แแช แแ แ แแแแแแแ, แแแแแขแแ แแแแแก แแฅแแแ แฐแแกแขแแแแก แ แแแแแแแแ แกแฃแ แฃแคแ แ แแ แฃแคแ แ แแแ แแแแแแ. แแ แแแแแ แแ แแฎแแ แจแแแแชแแแแ แ แแแแ แแแแแแแแแแแแแ แแ แ-แแ แแแแ แแแแแแแแ 1.5 แขแ แแแแแก, แแแแฎแแแแ, แ แแ แแแฃแฎแแแแแแ แแแแกแ, แ แแ แจแแแซแแแแแแ แแกแ แชแฎแแแ แแแ แแแแแ แซแแแแแแแ, แซแแแแแ แแแฃแฎแแ แฎแแแแแ แแงแ.
แแ แ แแแแฅแแแก แแแแแฃแ แแแ แแแแก แฐแแแแแ, PostgreSQL 9.x-แแก แกแฎแแแแแกแฎแแ แแแ แกแแ แแงแ แแฅแขแฃแแแฃแ แ, แแแแขแแ แงแแแแ แแแแแงแแคแ แฃแแแ แแแแฎแแแ แแงแ โแฎแแแแโ - แแแจแแแแแแ แชแฎแ แแแแก แแแแแแแแ แแแแ แแ แขแ แแแแ แแแ แแแ แจแ แฃแขแแ แแแ แแแแแแแฃแ แแ EXECUTE
.
แจแแแแแแ แแแฆแแแฃแแ แแแแแกแแแแแ แกแแแแแ แแกแแ แฃแแแแแ แกแแแฃแ แ แแฆแแแฉแแแ, แ แแ แแแกแ แแแ แแแแ แงแแแแ แชแฎแ แแแแ แจแแแซแแแแแแ:
- แแแแแชแฎแแแแ แชแแ แแแแ โแกแแแแฃแ แแกโ แแจแแแแแ แชแฎแ แแแ, แ แแแแแแช แแฆแฌแแ แแ แงแแแแแคแแ แก แกแแญแแ แ แแแแแฅแกแแแ แแ แขแ แแแแ แแแ.
- แแแแแแขแแก แแแแแกแแแ แแกแแ แฉแแแแฌแแ แ แแแแแแแ โแซแแ แแฃแแโ แชแฎแ แแแจแ แแ แจแแแ แแแแแงแแแแแแ แแแ แจแ แฃแขแแแแชแแแก แขแ แแแแ แ
BEFORE INSERT
แฉแแแแฌแแ แ "แคแแแแแฃแ แแ" แแงแ แฉแแกแแฃแแ แกแแญแแ แ แแแแงแแคแแแแแแจแ. แแกแแแ แ แแ แฏแแ แ แแ แแ แแงแ, แแแแแแแแแแกแ แแแแแญแแ แแ แแ... - โฆ แแแแแงแแแแแแ
แจแแแฅแแแ แแจแแแแแ แชแฎแ แแแแก แจแแแแแแแก แกแแคแฃแซแแแแแ แแแแงแแคแแแแแ แกแแกแฃแ แแแ แแแ แแฆแแ แจแแแฆแฃแแแแแแกแ, แ แแ แแแแแชแแแแแแก แแแแแแแแแกแแก แฌแแแแแฎแแ แแฎแแแแ แแแกแจแ แจแแกแ แฃแแแแก.CREATE TABLE ... (LIKE ... INCLUDING ...)
PG10: แแแ แแแแ แแชแแแแแแ
แแแแ แแ แแแแแแแแ แแแแแ แแแงแแคแ แแกแขแแ แแฃแแแ แแ แแงแ แแแ แแแ แแแ แแแแฃแแ แฉแแฌแแ แแก แแฅแขแแฃแ แแแแแแแแ แแ แแแแจแแแ แแแแแงแแคแแแแก แแแ แ แแแแแแแแแกแแแ. แแแแแแแแแ, แจแแแแซแแแแ แแแแฎแกแแแแ, แ แแ แกแแญแแ แ แแแแงแแคแแแแแแก แแ แฉแแแแก แแแแแ แแแแ แฐแฅแแแแ แแแแแ แแขแฃแแ แกแแ แแฃแแ100+ แแแแงแแคแแแแแแ แ แแ แแฃแจแแแแก, แแฅแแแ แแแแแแ แฎแแแแแแ แ แแแแ ...
PG10-แจแ แแก แกแแขแฃแแชแแ แแแแแ แแแขแแแแแแ แแแฃแแ แแงแ แแฎแแ แแแญแแ แแก แแแแฎแแ แชแแแแแแแ
แ แแแแ แช แกแแฎแแแแซแฆแแแแแแแก แแแแฎแ แแแแก แจแแแแแ แแแแ แแแ, แแ แแแ แกแแแจแ แแฃแแแแ แแแแ แแแงแแคแแแ แชแฎแ แแแ แแ แแก:
- แแ แแฅแแก แแแแแฅแกแแก แแฆแฌแแ แแแแแแแแก แแฎแแ แแแญแแ แ
- แแแกแแ แขแ แแแแ แแแแก แแฎแแ แแแญแแ แ แแ แแฅแแก
- แแ แจแแแซแแแแ แแงแแก แแแแแแก "แจแแแแแแแแแแ"
- แแ แแแฃแญแแ แแก แแฎแแ แ
INSERT ... ON CONFLICT
- แแแแงแแคแแแแแแก แแแขแแแแขแฃแ แแ แแแแแ แแ แแแ แจแแฃแซแแแแแแแ
แจแฃแแแแ แแขแแแแแแฃแแ แแแ แขแงแแ แ แแ แแแแแฆแแ, แแแแฎแแแแ, แ แแ แจแแฃแซแแแแแแ แแฅแแแแแแ แแแแแชแฎแแแแก แจแแชแแแแก แแแ แแจแ แแ แจแแแแแแแ แแแแแแ แแฅแแกแ แแแแ แแแแแแแแ.
PG10: แแแแ แ แจแแแกแ
แแกแ แ แแ, แฉแแแ แแแแแฌแงแแ แกแแแแแแแ แฌแแแแญแ แแแ แแ แแแแแแแแแก แแแแแแ แแแ:
- แ แแแแแ แแฌแแแแก แแ
ON CONFLICT
แแฆแแแแแฉแแแแ, แ แแ แแกแแแ แฏแแ แแแแแ แแแญแแ แแแแแแ แแฅแแ-แแฅแแ, แแแแขแแ แจแฃแแแแแฃแ แ แแขแแแ แแแแแแแแแ แแแ แแแกแแแฃแจแแแแแแแ แแแ แแแแแขแฃแแ แแแแแแ. - แแแแแแแแกแฃแคแแแ "แแแ แจแ แฃแขแแแแชแแแกแแแ" แแแแแแฌแแแแแแจแ - แแแฃ แแแ
EXECUTE
. - แชแแแแ แแแแแแขแแแแก แจแแแแแแแก แชแฎแ แแแ แงแแแแ แแแแแฅแกแแแแกแ, แ แแ แแแ แแแแแขแฃแ แชแฎแ แแแจแแช แแ แแ แแแงแแคแแแแแ.
แกแแแแแแแ, แแ แงแแแแแคแ แแก แจแแแแแ, แแแแแแ แ แชแฎแ แแแ แแจแแแแแฃแ แแ แแแแงแแแแ. แแฎแแแ แแแแงแแคแแแแแแก แจแแฅแแแ แแแแแ แแแแแแแชแแแก แกแแแแแกแแแ แแแ แฉแแแแแ.
แแแฅแกแแแแแแแ "แกแแฎแแแแ".
แ แแแแ แช แแแแแกแแแแ แแแแแแขแแแฃแ แกแแกแขแแแแจแ, แฉแแแแช แแแฅแแแแ "แคแแฅแขแแแ" แแ "แแแญแ แแแ" (แแแฅแกแแแแแแแ). แฉแแแแก แจแแแแฎแแแแแจแ, แแ แคแฃแแฅแชแแแ แแกแแแ แแแฅแแแแแแแแแ, แแแแแแแแแ,
"แคแแฅแขแแแ" แฃแแแ แแแแ แฎแแแแ แแงแ แแแงแแคแแแ แแฆแแกแแ, แแแแขแแ แแจแแแแแ แฌแแแจแแแแ แแแซแแแแแแฃแแ แกแแฅแชแแแแ แแ แแกแแแ แแ แแแแฌแฃแฎแแแแแแ (แแแแแแแ!). แแแแ แแ แแแฅแกแแแแแแแแก แแ แแแแแแ แแงแ...
แแ แแแฅแแ, แ แแ แแแแ แ แแงแ, แแแแ แแ แแแแฎแแแแแแ 100 แขแแแแขแ โแคแแฅแขแแแแกโ แจแแแแแแ แจแแแฅแแแ 2.5 แขแ แแแฅแกแแแแแ. แแกแแแ แชแฎแ แแแแแแ แแแฎแแ แฎแแแฃแแแ แแแ แแคแแ แก แฌแแจแแ, แแแแแแแขแฃแ แแ แแก แแแ แจแแแฃแแจแแ แแ แแแกแแ แฌแแ แ แแแแแแแแ แแแแแแแ.
แแแฅแกแแแแแแก แแกแแแแกแแ... แแแกแจแ แงแแแแแ แฉแแแแฌแแ แ แแฃแกแขแแ แแ แแฎแแ แฃแแแ แแงแแก แฌแแ แแแแแแแแแ... แแ แแก แแแ แแแแแ, แแแแ แแ!.. แแ แแแแ แแแแจแแแก แฎแแแก แชแแแแ แแแฅแกแแแแแ แแแแแแฃแแ แแฆแแกแแแแก! แแแแฎ, แแแแก แแแแฅแแก แแแ แแแแฃแแ แญแแ แแ แ แแแแแแแแ, แแแแ แแ แแก แกแแจแฃแแแแแแก แแซแแแแ:
- แฌแแ แ/แแแแฎแแ แฃแคแ แ แกแฌแ แแคแแ แแแแงแแคแแแแแแก แแชแแ แ แแแแแก แแแแ
- แแแแฎแแแ แแ แแแแแแ แแแฎแกแแแ แแแแก แฃแคแ แ แแแแแแฅแขแฃแ แแแแแฅแกแแแแแ แแฃแจแแแแแ
- แจแแแแแฎแแ แแแแแแแ แแแแแชแแแแแ แแแซแแแแแแฃแแ แกแฌแ แแคแแ แแแแฆแแแแก แจแแกแแซแแแแแแแแก แแแแ
แฆแแแแกแซแแแแแแแก แแแแแ แแแแแแแฅแกแแก แจแแแแแแ แแ แแชแแกแแ แแก แแแขแแแ แแแ แจแแแชแแ แแ ~30%-แแ, แแแกแแแก แแแขแแแ แแแ ~50%-แแ:
แแแแแแ แแฃแแแ, แฉแแแ แแแแแแ แซแแแแ แแฃแกแขแแ แแแแแแก แฉแแฌแแ แ แแแแแชแแแแ แแแแแจแ, แแฎแแแแ แแแแแแแ แแแขแแแ แแแแ.
#2. แแแแแชแแแแ แแแแแก แแแแแฃแชแแ แแ แ แแคแแฅแขแแ แแ แแแ
แแกแ แ แแ, แฉแแแ แแแแ แฉแแ แแแแแ, แ แแช แแแแฅแแก แแแแแแฃแ แแฆแแก แแฅแแก แแแแแกแ แแแแงแแคแแแแแ แแแแแชแแแแแแ. แ แแแแฃแ แแ, CHECK (dt = '2018-10-12'::date)
โ แแ แแ แแก แแแแแงแแคแแก แแแกแแฆแแแ แแ แแแ แแแ, แ แแ แฉแแแแฌแแ แ แแแฎแแแแก แแแแแ แแขแฃแ แแแแงแแคแแแแแแจแ.
แแแแก แแแแ, แ แแ แฉแแแแก แกแแ แแแกแจแ แงแแแแ แแแฎแกแแแแแ แแแแแฃแแแ แแแแแ แแขแฃแแ แแแ แแฆแแก แแแแขแแฅแกแขแจแ, แแแแแแแก แแแแแฅแกแแแ โแแ แแแแแแฌแแแแแฃแแ แแ แแแแแโ แงแแแแ แขแแแแก แแงแ. (แกแแ แแแ แ, แแแ แแฆแแแแแแแก แจแแแแแแ), (แกแแ แแแ แ, แแแ แแฆแ, แแแแแแก แแแแแซแ), (แแแ แแฆแ, แจแแชแแแแแก แแแแกแ, แกแแ แแแ แ), ...
แแแแ แแ แแฎแแ แแกแแแ แงแแแแ แแแแแแแแแแ แชแฎแแแ แแแแ แแฅแแแแ แแกแแแแ แงแแแแแ แแกแแแ แแแแแฅแกแ... แแ แงแแแแแ แกแแฅแชแแแก แคแแ แแแแแจแ แแแ แแฆแ แแฃแแแแแแ... แงแแแแ แแกแแ แแแแแฅแกแจแ แแฎแแ แแแ แ แแฃแ แแ แฃแแ แแแแ แจแแแงแแแแแ แแฃแแแแแ แ แแแแ แช แแ แ-แแ แแ แแแแ, แ แแแแแแช แแ แแแก แ แแแแ แช แแแก แแแชแฃแแแแแก, แแกแแแ แแแก แซแแแแแก แแ แแก, แแแแ แแ แแ แแแแแแ แจแแแแแก แแ แแแแฅแแก. แกแแแแแแกแแ แแแแแกแแแแก แแแขแแแแก, แฃแค...
แแแขแแแแแแชแแแก แแแแแ แแฃแแแแ แแจแแแ แแ - แแแ แขแแแ แแแแแฆแแ แแแ แแฆแแก แแแแ แงแแแแ แแแแแฅแกแแแแ แแแแแฌแแแ แแแฃแ แแแแแแแแแ. แฉแแแแ แแแชแฃแแแแแก แแแแแแแแกแฌแแแแแแ, แแแแแแ แแแแฎแแแแแแ 1 แขแ/แแแแ แแจแ!
แแฎแแ แแฆแแแแจแแแ, แ แแ แแก แขแแ แแแแแขแ แแแแแช แฃแแแ แฉแแฌแแ แแแแงแ แ แแแแ แแ. แแแฃ แฉแแแแช แแฎแแ แแแกแแ แแแแแแแแ แฃแแแ แแแแขแแแ แแแก! แแก แกแฃแ แแแ แแแแแแ แแฉแแแแแแก แแแกแฃแคแแแแแแแก แจแแแแแแ แแแฆแแแฃแ แแคแแฅแขแก, แ แแแแแกแแช แฉแแแ แแ แแ แแแแ แ แแแแฃแแแแ:
#3. แแแแฃแ แ แแแขแแแ แแแแก "แแแแ แชแแแแแ".
แแแขแแแ แแฃแแ แกแแกแขแแแแแแก แแ แ-แแ แแ แแแแ แแ แแแแแแแ แแแแแแขแ แกแแแฅแ แแแแแแชแแ แแแแแแ แแ แแแแ แแชแแ, แ แแแแแแช แแ แกแแญแแ แแแแก แแแก. แฎแแ "แ แแแแแ แแแ แแแฉแแแแแแแ", แฎแแ "แแกแ แฃแคแ แ แแแแแแ แแงแ", แแแแ แแ แแแ แ แแฃ แแแแแ แฃแแแ แแแแจแแ แ.
แแแแแ แแแแแแแแแ แฌแแแ แกแฃแ แแแ แแ แแแแฎแแ, แ แแ แแแแฅแแก แแแกแแ "แขแฃแแแแแแ" แแแขแแแ แแแแก แฅแแแจ แแ แแแแ แแแแแแขแฃแแแ แแแแแแแแ แ แแแแฃแจแแแก แจแแ แแก, แ แแช แแจแแแ แแ โแกแขแแขแแกแขแแแฃแ แแโ แแ แฃแแแ แแแฎแแแก แแกแแแ แ แแแแแแแแแก แแแแ แแชแแแแแก แแ แแก:
แแแแก แแแฆแฌแแแ แกแแแแแแ แแแ แขแแแแ. แฉแแแ แฃแแแ แแแแแฌแงแแ แแแแแขแแ แแแแ แแแแฅแแแก 1000 แกแแ แแแ แ, แแแแแแฃแแ แแฃแจแแแแแแ แชแแแแแฃแแ แแแแแแฃแ แ แซแแคแแ แแ แแแแแแฃแแ แซแแคแ แแฆแแแแแแก แแแแ แแแแ แแแคแแ แแแชแแแก แแแแแชแแแแ แแแแแจแ แแแกแแแแแแแแ แแแ แแแแฃแแ แกแแฎแจแแ แแ, แแแแฎแแแแแแ แแกแแแ:
setInterval(sendToDB, interval)
แแ แแแแแแ แแฅ แแแแแแแ แแแแก แแฃแกแขแแ แแแแจแ, แ แแ แงแแแแ แแแแ แแฌแงแแแ แแแแฎแแแแแแ แแ แแกแ แแ แแแแแ แแ แแก, แแกแ แ แแ, แแแแ แแแแแแแแแก แแ แ แแแแฅแแแก แงแแแแแแแแก แแแแฎแแแแ โแกแแฅแแแแโ. แฃแ #2...
แกแแแแแแแแ แแ, แแแแก แแแแแกแฌแแ แแแ แกแแแแแแ แแแ แขแแแแ, "แจแแแแฎแแแแแแ" แแแจแแแแแก แแแแแขแแแ แแ แแแ:
setInterval(sendToDB, interval * (1 + 0.1 * (Math.random() - 0.5)))
#4. แฉแแแ แฅแแจแแ แแแ แแแแก, แ แแช แแแญแแ แแแแ
แแแกแแแ แขแ แแแแชแแฃแแ แแแฆแแแ แแแขแแแ แแแแก แแ แแแแแแแ แแ แแ แแก แฅแแจแ แกแแแแช แแก แแ แแก แจแแแซแแ แงแแคแแ.
แแแแแแแแแ, แฉแแแ แจแแแซแแแแ แแแแแแแ แแแแแแก แแแแแซแแแแก แแแแแกแแแ แแกแแ (แแก แงแแแแแคแแ แ Seq Scan on users
), แแแแ แแ แแแจแแแแ แแคแแฅแ แแ, แ แแ แแกแแแ, แฃแแแขแแกแฌแแแแ, แแแแแแ - แแแแแแฌแงแแแ.
แแ แ, แ แ แแฅแแ แฃแแแ, แแกแแ แแ แแคแแ แ แแฌแแ แแแ แแแแแชแแแแ แแแแแจแ, แแก แฌแงแแแขแก แขแ แแแแ แก INSERT ... ON CONFLICT DO NOTHING
. แแแแ แแ แแก แแแแแชแแแแแ แแแแแ แแฆแฌแแแก แแแแแชแแแแ แแแแแก แแ แแก แแ แแกแแญแแ แแ แแแแฎแแ แแแแคแแแฅแขแแก แจแแกแแแแฌแแแแแแ แฃแแแ แแแแแแแแ. แฃแ #3...
แแแแกแฎแแแแแแ แแแแแชแแแแ แแแแแจแ แแแแแแแแแแ แฉแแแแฌแแ แแแแก แ แแแแแแแแแจแ แฅแแจแแ แแแแก แฉแแ แแแแแแ/แจแแแแแ, แแจแแแ แแ:
แแ แแก แแ แแก แจแแแแฎแแแก แแแขแแแ แแแแก แแแแแฎแแแแ แแแ แแแ:
แกแแแ แแ แฏแแแจแ
"แขแแ แแแแแขแ แแฆแแจแ" แฃแแ แแแแ แกแแจแแแแแ แแฆแแ แก. แแฃ แงแแแแแคแแ แก แกแฌแแ แแ แแแแแแ, แแแจแแ แแก แฃแแ แแแแ 2^40 แแแแขแ / 86400 แฌแแแ = ~ 12.5 แแ/แฌแแ แแ แแแกแแขแแแแก IDE แฎแ แแฎแแแแแช แแ แแญแแ แ. ๐
แแแแ แแ แกแแ แแแแฃแแแ, แแฃแแแแช แแฆแแก แแแแแแแแแแแจแ แแแขแแแ แแแแก แแแฏแแ "แแแฎแ แแแแแแ", แแฅแแแ แจแแแแซแแแแ แแแ แขแแแแ แจแแฎแแแแ แแแแแแแแ แแแ SSD-แแแแก แจแแกแแซแแแแแแแแแก.
แฌแงแแ แ: www.habr.com