An scéal maidir le 300 milliún taifead a scriosadh go fisiciúil i MySQL

Réamhrá

Dia dhuit. Is ningenMe mé, forbróir gréasáin.

Mar a deir an teideal, is é mo scéal ná an scéal maidir le 300 milliún taifead a scriosadh go fisiciúil i MySQL.

Tháinig suim agam i seo, agus mar sin chinn mé meabhrúchán a dhéanamh (treoracha).

Baile - Airdeall

Tá próiseas rialta ag an bhfreastalaí baisc a úsáidim agus a chothaíonn mé a bhailíonn sonraí na míosa seo caite ó MySQL uair amháin sa lá.

De ghnáth cuirtear an próiseas seo i gcrích laistigh de thart ar 1 uair an chloig, ach an uair seo níor chríochnaigh sé ar feadh 7 nó 8 uair an chloig, agus níor stop an foláireamh ag teacht suas ...

Ag cuardach ar chúis

Rinne mé iarracht an próiseas a atosú agus breathnú ar na logaí, ach ní fhaca mé aon rud mícheart.
Innéacsaíodh an cheist i gceart. Ach nuair a smaoinigh mé ar cad a bhí mícheart, thuig mé go bhfuil méid an bhunachair shonraí sách mór.

hoge_table | 350'000'000 |

350 milliún taifead. Bhí an chuma ar an scéal go raibh an t-innéacsú ag obair i gceart, ach an-mhall.

Ba é an bailiú sonraí riachtanach in aghaidh na míosa ná thart ar 12 taifead. Is cosúil gur thóg an t-ordú roghnaithe go leor ama agus níor cuireadh an t-idirbheart i gcrích ar feadh i bhfad.

DB

Go bunúsach is tábla é a fhásann thart ar 400 iontráil gach lá. Bhí an bunachar sonraí ceaptha chun sonraí a bhailiú le haghaidh na míosa seo caite amháin, dá bhrí sin, bhíothas ag súil go seasfadh sé go díreach méid seo sonraí, ach, ar an drochuair, ní raibh an oibríocht uainíochta san áireamh.

Níor fhorbair mise an bunachar sonraí seo. Thóg mé anonn é ó fhorbróir eile, agus mar sin bhraith sé fós cosúil le fiachas teicniúil.

Tháinig pointe nuair a tháinig méadú mór ar an méid sonraí a cuireadh isteach go laethúil agus ar deireadh shroich sé a theorainn. Glactar leis, agus tú ag obair le méid chomh mór sonraí, go mbeadh sé riachtanach iad a scaradh, ach, ar an drochuair, níor rinneadh é seo.

Agus ansin tháinig mé i ngníomh.

Ceartú

Bhí sé níos réasúnaí méid an bhunachair sonraí féin a laghdú agus an t-am lena phróiseáil a laghdú ná an loighic féin a athrú.

Ba cheart go n-athródh an scéal go suntasach má scriosann tú 300 milliún taifead, mar sin shocraigh mé é sin a dhéanamh... Eh, shíl mé go n-oibreodh sé seo go cinnte.

Gníomh 1

Tar éis dom cúltaca iontaofa a ullmhú, thosaigh mé ag seoladh iarratais ar deireadh.

‌Iarratas á sheoladh‍

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

"…"

"…"

“Hmm... Gan freagra. B’fhéidir go dtógann an próiseas tamall fada?” - Shíl mé, ach ar eagla na heagla, d'fhéach mé ar grafana agus chonaic mé go raibh an t-ualach diosca ag fás go han-tapa.
“Contúirteach,” shíl mé arís agus stop mé láithreach leis an iarratas.

Gníomh 2

Tar éis anailís a dhéanamh ar gach rud, thuig mé go raibh an méid sonraí ró-mhór chun gach rud a scriosadh ag an am céanna.

Chinn mé script a scríobh a d'fhéadfadh thart ar 1 taifead a scriosadh agus seoladh é.

‘Cuirim an script i bhfeidhm’

“Is cinnte go n-oibreoidh sé seo anois,” shíl mé.

Gníomh 3

D'oibrigh an dara modh, ach d'éirigh sé amach a bheith an-dian ar shaothar.
Chun gach rud a dhéanamh go cúramach, gan nerves gan ghá, thógfadh sé thart ar dhá sheachtain. Ach fós féin, níor chomhlíon an cás seo na riachtanais seirbhíse, agus mar sin bhí orainn bogadh uaidh.

Mar sin seo cad a chinn mé a dhéanamh:

Cóipeáil an tábla agus athainmnigh é

Ón gcéim roimhe seo, thuig mé go gcruthaíonn scriosadh a leithéid de líon mór sonraí ualach chomh mór. Mar sin chinn mé tábla nua a chruthú ón tús ag baint úsáide as cuir isteach agus bogadh na sonraí a bhí mé chun a scriosadh isteach ann.

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

Má dhéanann tú an tábla nua ar an méid céanna thuas, ba cheart go dtiocfadh an luas próiseála sonraí 1/7 níos tapúla freisin.

Tar éis an tábla a chruthú agus é a athainmniú, thosaigh mé á úsáid mar an tábla máistir. Anois má scaoilim an tábla le 300 milliún taifead ba chóir go mbeadh gach rud go breá.
Fuair ​​​​mé amach go gcruthaíonn teascadh nó titim níos lú lastuas ná mar a scriosadh agus chinn mé an modh seo a úsáid.

Feidhmíocht

‌Iarratas á sheoladh‍

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

"…"
"…"
"Em ...?"

Gníomh 4

Shíl mé go n-oibreodh an smaoineamh roimhe seo, ach tar éis an t-iarratas isteach a sheoladh, bhí earráidí iolracha le feiceáil. Níl MySQL maithiúnas.

Bhí mé chomh tuirseach cheana féin gur thosaigh mé ag smaoineamh nach raibh mé ag iarraidh é seo a dhéanamh a thuilleadh.

Shuigh mé agus smaoinigh mé agus thuig mé go mb'fhéidir go raibh an iomarca fiosruithe isteach le haghaidh aon am amháin ...
Rinne mé iarracht iarratas isteach a sheoladh ar an méid sonraí ba cheart don bhunachar sonraí a phróiseáil i 1 lá. Tharla!

Bhuel, ina dhiaidh sin leanaimid ag seoladh iarratais ar an méid céanna sonraí. Ós rud é go gcaithfimid luach míosa a bhaint de shonraí, déanaimid an oibríocht seo arís timpeall 35 uair.

Tábla á athainmniú

Anseo bhí an t-ádh ar mo thaobh: chuaigh gach rud go réidh.

Foláireamh imithe ar iarraidh

Tá méadú tagtha ar luas próiseála baisc.

Roimhe seo ghlac an próiseas seo thart ar uair an chloig, anois tógann sé thart ar 2 nóiméad.

Tar éis dom a bheith cinnte go raibh na fadhbanna go léir réitithe, thit mé 300 milliún taifead. Scrios mé an tábla agus bhraith mé reborn.

Achoimre

Thuig mé go raibh próiseáil uainíochta ar iarraidh i bpróiseáil bhaisc, agus ba é sin an phríomhfhadhb. Cuireann earráid ailtireachta den chineál seo cur amú ama.

An smaoiníonn tú ar an ualach le linn macasamhlú sonraí agus taifid á scriosadh as an mbunachar sonraí? Ná déanaimis ró-ualach ar MySQL.

Is cinnte nach dtiocfaidh fadhb den sórt sin ar dhaoine atá eolach ar bhunachair shonraí. Don chuid eile agaibh, tá súil agam go raibh an t-alt seo úsáideach.

Go raibh maith agat as léamh!

Beidh an-áthas orainn má insíonn tú dúinn ar thaitin an t-alt seo leat, an bhfuil an t-aistriúchán soiléir, an raibh sé úsáideach duit?

Foinse: will.com

Add a comment