Itan ti piparẹ awọn igbasilẹ miliọnu 300 ni ti ara ni MySQL

Ifihan

Pẹlẹ o. Mo jẹ ningenMe, olupilẹṣẹ wẹẹbu.

Gẹgẹbi akọle ti sọ, itan mi jẹ itan ti piparẹ awọn igbasilẹ 300 milionu ti ara ni MySQL.

Mo nifẹ ninu eyi, nitorinaa Mo pinnu lati ṣe olurannileti kan (awọn ilana).

Ile - Itaniji

Olupin ipele ti Mo lo ati ṣetọju ni ilana deede ti o gba data oṣu to kọja lati MySQL lẹẹkan ni ọjọ kan.

Nigbagbogbo ilana yii ti pari laarin bii wakati kan, ṣugbọn ni akoko yii ko pari fun awọn wakati 1 tabi 7, ati pe itaniji ko dẹkun yiyo soke…

Wiwa idi kan

Mo gbiyanju lati tun ilana naa bẹrẹ ati wo awọn akọọlẹ, ṣugbọn Emi ko rii ohunkohun ti ko tọ.
Ibeere naa jẹ itọka daradara. Ṣugbọn nigbati Mo ronu nipa ohun ti n ṣẹlẹ, Mo rii pe iwọn data data tobi pupọ.

hoge_table | 350'000'000 |

350 million igbasilẹ. Titọka dabi ẹni pe o n ṣiṣẹ ni deede, o kan lọra pupọ.

Gbigba data ti o nilo fun oṣu kan fẹrẹ to awọn igbasilẹ 12. O dabi pe aṣẹ ti o yan gba akoko pipẹ ati pe idunadura naa ko ṣiṣẹ fun igba pipẹ.

DB

O jẹ pataki tabili ti o dagba nipa awọn titẹ sii 400 ni gbogbo ọjọ. Data data yẹ ki o gba data nikan fun oṣu to kọja, nitorinaa, o nireti pe yoo duro ni deede iye data yii, ṣugbọn, laanu, iṣẹ yiyi ko pẹlu.

Yi database a ko ni idagbasoke nipasẹ mi. Mo gba lati ọdọ olupilẹṣẹ miiran, nitorinaa o tun lero bi gbese imọ-ẹrọ.

Ojuami kan wa nigbati iwọn data ti a fi sii lojoojumọ di nla ati nikẹhin de opin rẹ. O ti ro pe nigbati o ba n ṣiṣẹ pẹlu iru iye nla ti data, yoo jẹ pataki lati ya wọn sọtọ, ṣugbọn eyi, laanu, ko ṣe.

Ati lẹhinna Mo wa sinu iṣe.

Atunse

O jẹ onipin diẹ sii lati dinku iwọn data funrararẹ ati dinku akoko fun sisẹ rẹ ju lati yi imọ-jinlẹ funrararẹ.

Ipo naa yẹ ki o yipada ni pataki ti o ba paarẹ awọn igbasilẹ miliọnu 300, nitorinaa Mo pinnu lati ṣe bẹ… Eh, Mo ro pe eyi yoo ṣiṣẹ dajudaju.

Iṣe 1

Lẹhin ti o ti pese afẹyinti igbẹkẹle, Mo bẹrẹ nikẹhin fifiranṣẹ awọn ibeere.

"Firanṣẹ ibere kan"

DELETE FROM hoge_table WHERE create_time <= 'YYYY-MM-DD HH:MM:SS';

"..."

"..."

“Hmm... Ko si idahun. Boya ilana naa gba akoko pipẹ? ” — Mo ro, sugbon o kan ni irú, Mo wò ni grafana ati ki o si ri pe awọn disk fifuye ti dagba gan ni kiakia.
“O lewu,” Mo ro lẹẹkansi ati lẹsẹkẹsẹ da ibeere naa duro.

Iṣe 2

Lẹhin itupalẹ ohun gbogbo, Mo rii pe iwọn didun data ti tobi ju lati pa ohun gbogbo rẹ ni ẹẹkan.

Mo pinnu lati kọ iwe afọwọkọ kan ti o le pa awọn igbasilẹ bii 1 rẹ ati ṣe ifilọlẹ.

"Mo ṣe imuse iwe afọwọkọ naa"

“Bayi eyi yoo dajudaju ṣiṣẹ,” Mo ro.

Iṣe 3

Ọna keji ṣiṣẹ, ṣugbọn o jade lati jẹ alaapọn pupọ.
Lati ṣe ohun gbogbo ni pẹkipẹki, laisi awọn ara ti ko wulo, yoo gba to ọsẹ meji. Ṣugbọn sibẹsibẹ, oju iṣẹlẹ yii ko pade awọn ibeere iṣẹ, nitorinaa a ni lati lọ kuro ninu rẹ.

Nitorinaa eyi ni ohun ti Mo pinnu lati ṣe:

Daakọ tabili naa ki o tun lorukọ rẹ

Lati igbesẹ ti tẹlẹ, Mo rii pe piparẹ iru iye nla ti data n ṣẹda ẹru ti o tobi deede. Nitorinaa Mo pinnu lati ṣẹda tabili tuntun lati ibere nipa lilo fi sii ati gbe data ti Emi yoo paarẹ sinu rẹ.

| hoge_table     | 350'000'000|
| tmp_hoge_table |  50'000'000|

Ti o ba ṣe tabili tuntun ni iwọn kanna bi loke, iyara sisẹ data yẹ ki o tun di 1/7 yiyara.

Lẹhin ṣiṣẹda tabili ati fun lorukọmii rẹ, Mo bẹrẹ lilo rẹ bi tabili titunto si. Bayi ti Mo ba sọ tabili silẹ pẹlu awọn igbasilẹ miliọnu 300 ohun gbogbo yẹ ki o dara.
Mo rii pe truncate tabi ju ṣẹda kere si oke ju piparẹ ati pinnu lati lo ọna yii.

Iṣe

"Firanṣẹ ibere kan"

INSERT INTO tmp_hoge_table SELECT FROM hoge_table create_time > 'YYYY-MM-DD HH:MM:SS';

"..."
"..."
"Emi...?"

Iṣe 4

Mo ro pe ero iṣaaju yoo ṣiṣẹ, ṣugbọn lẹhin fifiranṣẹ ibeere ifibọ, ọpọlọpọ awọn aṣiṣe han. MySQL kii ṣe idariji.

Ó ti rẹ̀ mí débi pé mo bẹ̀rẹ̀ sí í ronú pé mi ò fẹ́ ṣe èyí mọ́.

Mo joko ati ronu ati rii pe boya ọpọlọpọ awọn ibeere fi sii pupọ wa fun akoko kan…
Mo gbiyanju fifiranṣẹ ibeere ifibọ fun iye data ti data data yẹ ki o ṣiṣẹ ni ọjọ 1. O ṣẹlẹ!

O dara, lẹhin iyẹn a tẹsiwaju lati firanṣẹ awọn ibeere fun iye kanna ti data. Niwọn igba ti a nilo lati yọkuro iye data ti oṣu kan, a tun ṣe iṣẹ yii ni isunmọ awọn akoko 35.

Lorukọmii tabili kan

Nibi orire wa ni ẹgbẹ mi: ohun gbogbo lọ laisiyonu.

Itaniji ti sọnu

Iyara processing ipele ti pọ si.

Ni iṣaaju ilana yii gba to wakati kan, bayi o gba to iṣẹju 2.

Lẹhin ti Mo ni idaniloju pe gbogbo awọn iṣoro ti yanju, Mo fi awọn igbasilẹ 300 milionu silẹ. Mo ti paarẹ tabili ati ki o ro reborn.

Lakotan

Mo rii pe ṣiṣe iyipo ti sonu ni sisẹ ipele, ati pe iyẹn ni iṣoro akọkọ. Iru aṣiṣe ayaworan yii yori si egbin akoko.

Ṣe o ronu nipa fifuye lakoko isọdọtun data nigba piparẹ awọn igbasilẹ lati ibi ipamọ data? Jẹ ki a ko apọju MySQL.

Awọn ti o ni oye daradara ni awọn apoti isura infomesonu yoo dajudaju ko ba pade iru iṣoro bẹ. Fun awọn iyokù, Mo nireti pe nkan yii wulo.

O ṣeun fun kika!

A yoo dun pupọ ti o ba sọ fun wa boya o fẹran nkan yii, boya itumọ naa han, boya o wulo fun ọ?

orisun: www.habr.com

Fi ọrọìwòye kun