Pale ea ho hlakola lirekoto tse limilione tse 300 ho MySQL

Selelekela

Lumela. Ke ningenMe, moqapi oa marang-rang.

Joalokaha sehlooho se bolela, pale ea ka ke pale ea ho hlakola lirekoto tse limilione tse 300 ho MySQL.

Ke ile ka thahasella sena, kahoo ke ile ka etsa qeto ea ho etsa khopotso (litaelo).

Lehae - Tlhokomeliso

Seva ea batch eo ke e sebelisang le ho e boloka e na le ts'ebetso e tloaelehileng e bokellang lintlha tsa khoeli e fetileng ho tsoa ho MySQL hang ka letsatsi.

Hangata ts'ebetso ena e phethoa nakong ea hora e ka bang 1, empa lekhetlong lena ha ea ka ea qeta lihora tse 7 kapa 8, mme tlhokomeliso ha ea ka ea emisa ho hlaha ...

Ho fumana lebaka

Ke ile ka leka ho qala ts'ebetso hape le ho sheba lifate, empa ha kea ka ka bona letho le phoso.
Potso e ngotsoe ka nepo. Empa ha ke nahana ka se etsahalang, ke ile ka hlokomela hore boholo ba database bo boholo haholo.

hoge_table | 350'000'000 |

Rekoto tse limilione tse 350. Indexing e ne e bonahala e sebetsa hantle, butle haholo.

Pokello ea lintlha tse hlokahalang ka khoeli e ne e le lirekoto tse ka bang 12. Ho bonahala eka taelo ea khetho e nkile nako e telele mme transaction ha ea ka ea etsoa nako e telele.

DB

Ha e le hantle ke tafole e holang ka likenyelletso tse ka bang 400 letsatsi le leng le le leng. Database e ne e lokela ho bokella lintlha feela bakeng sa khoeli e fetileng, ka hona, ho ne ho lebeletsoe hore e tla mamella hantle palo ena ea data, empa, ka bomalimabe, ts'ebetso ea ho potoloha e ne e sa kenyelletsoa.

Database ena ha ea ntlafatsoa ke 'na. Ke e nkile ho tsoa ho moqapi e mong, ka hona e ne e ntse e utloa eka ke molato oa tekheniki.

Ho ile ha fihla ntlha ha palo ea data e kentsoeng letsatsi le leng le le leng e ile ea e-ba kholo 'me qetellong ea fihla moeling oa eona. Ho nahanoa hore ha u sebetsa le palo e kholo ea data, ho tla hlokahala ho ba arola, empa sena, ka bomalimabe, ha sea ka sa etsoa.

Mme yaba ke kena ketsong.

Khalemelo

Ho ne ho utloahala ho fokotsa boholo ba database ka boeona le ho fokotsa nako ea ho e sebetsa ho feta ho fetola logic ka boeona.

Boemo bo lokela ho fetoha haholo haeba u hlakola lirekoto tse limilione tse 300, kahoo ke entse qeto ea ho etsa joalo ... Eh, ke ne ke nahana hore sena se tla sebetsa.

Ts'ebetso ea 1

Ha ke se ke lokiselitse bekapo e tšepahalang, qetellong ke ile ka qala ho romela likopo.

"Ho romela kopo"

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

"…"

"…"

“Hmm... Ha ho karabo. Mohlomong ts'ebetso e nka nako e telele?" - Ke ne ke nahana, empa feela haeba ho ne ho ka etsahala, ke ile ka sheba grafana 'me ka bona hore mojaro oa disk o ntse o hōla ka potlako haholo.
“Ho kotsi,” ke ile ka nahana hape ’me hang-hang ka emisa kōpo eo.

Ts'ebetso ea 2

Ka mor'a ho hlahloba ntho e 'ngoe le e' ngoe, ke ile ka hlokomela hore palo ea data e ne e le khōlō haholo ho hlakola ntho e 'ngoe le e' ngoe ka nako e le 'ngoe.

Ke nkile qeto ea ho ngola mongolo o ka hlakolang lirekoto tse ka bang 1 mme ka e qala.

"Ke kenya script"

“Joale ka sebele sena se tla sebetsa,” ke ile ka nahana.

Ts'ebetso ea 3

Mokhoa oa bobeli o ile oa sebetsa, empa ho ile ha bonahala e le o boima haholo.
Ho etsa ntho e 'ngoe le e' ngoe ka hloko, ntle le methapo e sa hlokahaleng, ho ne ho tla nka libeke tse peli. Empa leha ho le joalo, boemo bona bo ne bo sa finyelle litlhoko tsa tšebeletso, kahoo re ile ra tlameha ho tloha ho bona.

Joale ke seo ke nkile qeto ea ho se etsa:

Kopitsa tafole 'me u e rehe bocha

Ho tloha mohato o fetileng, ke ile ka hlokomela hore ho hlakola palo e kholo ea data ho baka mojaro o moholo ka ho lekana. Kahoo ke nkile qeto ea ho theha tafole e ncha ho tloha qalong ke sebelisa ho kenya le ho tsamaisa data eo ke neng ke tla e hlakola ho eona.

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

Haeba u etsa hore tafole e ncha e be boholo bo lekanang le bo kaholimo, lebelo la ts'ebetso ea data le lona le lokela ho ba 1/7 kapele.

Kamora ho theha tafole le ho e reha lebitso, ke ile ka qala ho e sebelisa joalo ka tafole e kholo. Joale haeba ke theola tafole ka lirekoto tse limilione tse 300 tsohle li lokela ho ba hantle.
Ke fumane hore truncate kapa drop ha e theohe ho feta ho hlakola mme ka etsa qeto ea ho sebelisa mokhoa ona.

Ho phethahala

"Ho romela kopo"

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

"…"
"…"
"Em…?"

Ts'ebetso ea 4

Ke ne ke nahana hore khopolo e fetileng e tla sebetsa, empa ka mor'a ho romela kopo ea ho kenya, liphoso tse ngata li ile tsa hlaha. MySQL ha e tšoarele.

Ke ne ke se ke khathetse hoo ke ileng ka qala ho nahana hore ha ke sa batla ho etsa sena.

Ke ile ka lula ke nahana 'me ka hlokomela hore mohlomong ho na le lipotso tse ngata haholo ka nako e le' ngoe ...
Ke lekile ho romella kopo ea ho kenya palo ea data eo database e lokelang ho e sebetsa ka letsatsi le le leng. Ho etsahetse!

Hantle, ka mor'a moo re tsoela pele ho romela likopo tsa palo e lekanang ea data. Kaha re hloka ho tlosa data ea khoeli, re pheta ts'ebetso ena ka makhetlo a ka bang 35.

Ho reha tafole bocha

Mona mahlohonolo a ne a le lehlakoreng la ka: tsohle li tsamaile hantle.

Temoso ha e yo

Lebelo la ho sebetsa ka bongata le eketsehile.

Pejana ts'ebetso ena e ne e nka hora, joale e nka metsotso e ka bang 2.

Ka mor'a hore ke be le bonnete ba hore mathata 'ohle a rarollotsoe, ke ile ka lahla lirekoto tse limilione tse 300. Ke ile ka hlakola tafole 'me ka ikutloa ke tsoaloa hape.

Kakaretso

Ke ile ka hlokomela hore ts'ebetso ea potoloho e ne e le sieo ts'ebetsong ea li-batch, 'me ke eona bothata bo boholo. Phoso ea mofuta ona ea meralo e lebisa tšenyo ea nako.

Na u nahana ka mojaro nakong ea phetisetso ea data ha u hlakola lirekoto ho database? Ha re se keng ra tlatsa MySQL haholo.

Ba nang le tsebo e ntle ea li-database ba ke ke ba kopana le bothata bo joalo. Bakeng sa lōna kaofela, ke tšepa hore sehlooho sena se ne se le molemo.

Re leboha ho bala!

Re tla thaba haholo ha u ka re bolella hore na u ratile sehlooho sena, hore na phetolelo e hlakile, hore na e ne e le molemo ho uena?

Source: www.habr.com

Eketsa ka tlhaloso