An sgeulachd mu bhith a’ cuir às gu corporra 300 millean clàr ann am MySQL

Ro-ràdh

Halò. Is mise ningenMe, leasaiche lìn.

Mar a tha an tiotal ag ràdh, is e an sgeulachd agam an sgeulachd mu bhith a’ cuir às gu corporra 300 millean clàr ann am MySQL.

Ghabh mi ùidh ann an seo, agus mar sin chuir mi romhpa cuimhneachan a dhèanamh (stiùireadh).

Dachaigh - Alert

Tha pròiseas cunbhalach aig an fhrithealaiche batch a bhios mi a 'cleachdadh agus a' cumail suas a bhios a 'tional dàta na mìos mu dheireadh bho MySQL uair san latha.

Mar as trice bidh am pròiseas seo air a chrìochnachadh taobh a-staigh timcheall air 1 uair, ach an turas seo cha do chrìochnaich e airson 7 no 8 uairean, agus cha do stad an rabhadh bho bhith a ’nochdadh ...

A ’lorg adhbhar

Dh’ fheuch mi ris a’ phròiseas ath-thòiseachadh agus coimhead air na logaichean, ach chan fhaca mi dad ceàrr.
Chaidh a’ cheist a chlàradh gu ceart. Ach nuair a smaoinich mi air na bha a’ dol ceàrr, thuig mi gu bheil meud an stòr-dàta gu math mòr.

hoge_table | 350'000'000 |

350 millean clàr. Bha coltas gun robh clàr-amais ag obair ceart, dìreach gu math slaodach.

Bha an cruinneachadh dàta riatanach gach mìos timcheall air 12 clàr. Tha e coltach gun tug an àithne taghte ùine mhòr agus cha deach an gnothach a chuir gu bàs airson ùine mhòr.

DB

Is e clàr a th’ ann gu bunaiteach a bhios a’ fàs le timcheall air 400 inntrigeadh gach latha. Bha còir aig an stòr-dàta dàta a chruinneachadh a-mhàin airson a’ mhìos a chaidh, mar sin, bhathas an dùil gun seasadh e an ìre seo de dhàta, ach, gu mì-fhortanach, cha deach an obair cuairteachaidh a thoirt a-steach.

Cha deach an stòr-dàta seo a leasachadh leam. Ghabh mi thairis e bho leasaiche eile, agus mar sin bha e fhathast a’ faireachdainn mar fhiachan teicnigeach.

Thàinig àm nuair a dh’ fhàs an tomhas de dhàta a chaidh a chuir a-steach gach latha mòr agus mu dheireadh ràinig e a chrìoch. Thathas a 'gabhail ris, nuair a bhios tu ag obair le uiread de dhàta, gum biodh e riatanach an sgaradh, ach, gu mì-fhortanach, cha deach seo a dhèanamh.

Agus an uairsin thàinig mi gu gnìomh.

Ceartachadh

Bha e nas reusanta meud an stòr-dàta fhèin a lughdachadh agus an ùine airson a ghiullachd a lughdachadh na bhith ag atharrachadh an loidsig fhèin.

Bu chòir don t-suidheachadh atharrachadh gu mòr ma sguabas tu às 300 millean clàr, agus mar sin chuir mi romhpa sin a dhèanamh... Eh, shaoil ​​​​mi gun obraicheadh ​​​​seo gu cinnteach.

Gnìomh 1

Às deidh dhomh cùl-taic earbsach ullachadh, thòisich mi mu dheireadh a’ cur iarrtasan.

‘A’ cur iarrtas’

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

"…"

"…"

“Hmm... Gun fhreagairt. Is dòcha gun toir am pròiseas ùine mhòr? ” - bha mi a’ smaoineachadh, ach gun fhios nach, choimhead mi air grafana agus chunnaic mi gu robh an luchd diosc a’ fàs gu math luath.
“Cunnartach,” smaoinich mi a-rithist agus chuir mi stad air an iarrtas sa bhad.

Gnìomh 2

Às deidh dhomh a h-uile càil a mhion-sgrùdadh, thuig mi gu robh an tomhas de dhàta ro mhòr airson a h-uile càil a dhubhadh às aig an aon àm.

Cho-dhùin mi sgriobt a sgrìobhadh a dh’ fhaodadh timcheall air 1 clàr a dhubhadh às agus a chuir air bhog.

‘Bidh mi a’ cur an sgriobt an gnìomh’

“A-nis obraichidh seo gu cinnteach,” smaoinich mi.

Gnìomh 3

Dh'obraich an dàrna dòigh, ach thionndaidh e a-mach gu robh e gu math saothair.
Gus a h-uile càil a dhèanamh gu faiceallach, gun nerves neo-riatanach, bheireadh e timcheall air dà sheachdain. Ach fhathast, cha do choinnich an suidheachadh seo ri riatanasan seirbheis, agus mar sin bha againn ri gluasad air falbh bhuaithe.

Mar sin seo na cho-dhùin mi a dhèanamh:

Dèan lethbhreac den chlàr agus ath-ainmich e

Bhon cheum roimhe, thuig mi gu bheil cuir às do uiread de dhàta a’ cruthachadh eallach a cheart cho mòr. Mar sin chuir mi romhpa clàr ùr a chruthachadh bhon toiseach a’ cleachdadh cuir a-steach agus gluais an dàta a bha mi a’ dol a sguabadh às.

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

Ma nì thu am bòrd ùr den aon mheud ris gu h-àrd, bu chòir don astar giollachd dàta a bhith 1/7 nas luaithe cuideachd.

Às deidh dhomh am bòrd a chruthachadh agus ath-ainmeachadh, thòisich mi ga chleachdadh mar phrìomh bhòrd. A-nis ma leigeas mi sìos am bòrd le 300 millean clàr bu chòir a h-uile dad a bhith ceart gu leòr.
Fhuair mi a-mach gu bheil truncate no drop a’ cruthachadh nas lugha de chosgais na sguab às agus cho-dhùin mi an dòigh seo a chleachdadh.

Coileanadh

‘A’ cur iarrtas’

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

"…"
"…"
"Em…?"

Gnìomh 4

Bha mi den bheachd gun obraicheadh ​​​​am beachd roimhe, ach às deidh dhomh an t-iarrtas cuir a-steach a chuir a-steach, nochd grunn mhearachdan. Chan eil MySQL a’ toirt maitheanas.

Bha mi cho sgìth mu thràth is gun do thòisich mi a’ smaoineachadh nach robh mi airson seo a dhèanamh tuilleadh.

Shuidh mi agus smaoinich mi agus thuig mi gur dòcha gu robh cus cheistean cuir a-steach ann airson aon turas ...
Dh’ fheuch mi ri iarrtas cuir a-steach a chuir a-steach airson na tha de dhàta a bu chòir don stòr-dàta a phròiseasadh ann an 1 latha. Thachair!

Uill, às deidh sin cumaidh sinn oirnn a’ cur iarrtasan airson an aon uiread de dhàta. Leis gu feum sinn luach mìos de dhàta a thoirt air falbh, bidh sinn ag ath-aithris an obrachaidh seo timcheall air 35 tursan.

Ag ath-ainmeachadh clàr

An seo bha fortan air mo thaobh: chaidh a h-uile càil gu rèidh.

Tha an rabhadh air chall

Tha astar giollachd baidse air a dhol suas.

Roimhe seo thug am pròiseas seo timcheall air uair a thìde, a-nis bheir e timcheall air 2 mhionaid.

Às deidh dhomh a bhith cinnteach gun deach na duilgheadasan uile fhuasgladh, leig mi sìos 300 millean clàr. Chuir mi às don bhòrd agus bha mi a’ faireachdainn ath-bhreith.

Geàrr-chunntas

Thuig mi gu robh giullachd cuairteachaidh a dhìth ann an giullachd baidse, agus b’ e sin am prìomh dhuilgheadas. Tha an seòrsa mearachd ailtireachd seo a’ leantainn gu caitheamh ùine.

A bheil thu a’ smaoineachadh air an luchd aig àm ath-riochdachadh dàta nuair a sguabas tu às clàran bhon stòr-dàta? Na cuir cus cus air MySQL.

Gu cinnteach cha tig an fheadhainn a tha eòlach air stòran-dàta air a leithid de dhuilgheadas. Airson a’ chòrr agaibh, tha mi an dòchas gun robh an artaigil seo feumail.

Tapadh leibh airson an leughadh!

Bidh sinn glè thoilichte ma dh’innseas tu dhuinn an do chòrd an artaigil seo riut, a bheil an t-eadar-theangachadh soilleir, a bheil e feumail dhut?

Source: www.habr.com

Cuir beachd ann