Tootmisandmebaasi tõmmis võib kergesti ulatuda kümnetesse gigabaitidesse. Niipea kui proovid seda tavalises tekstiredaktoris avada, hakkab su Maci ventilaator keerlema, ilmub keerlev pall ja lõpuks rakendus sulgub — mõnikord viies kaasa salvestamata töö teistes akendes.
Miks redaktorid suurte tõmmiste peale ummistuvad
VS Code, TextEdit, Sublime Text ja sarnased on loodud laadima kogu faili mällu, et saaks kohe kerida, otsida ja esile tõsta. See sobib 2 MB lähtefaili jaoks. 40 GB tõmmise puhul tähendab see, et redaktor üritab RAM-i eraldada 40 GB (pluss lisakulu oma sisemistele andmestruktuuridele).
Su Macil on 16 või 32 GB. Ammu enne faili täielikku laadimist saab süsteemil füüsiline mälu otsa, hakkab kettale saalima ja jääb kinni. Enamik redaktoreid keeldub ka otse: VS Code piirab failid umbes 50 MB-le täisredaktori puhul ja lülitub piiratud režiimi, TextEdit lihtsalt hangub ja Sublime eraldab mälu, kuni jookseb kokku. Isegi kui saad faili lahti, skannib süntaksi esiletõstmine ja otsing igal klahvivajutusel uuesti läbi gigabaidid.
Põhiprobleem: need tööriistad eeldavad suvapöördust kogu dokumendile. Tõmmis seda ei vaja — see on lausete jadaline loend. Sul on vaja seda lihtsalt voogedastada.
Käsurea viis
Sinu Maci Unixi tööriistad juba voogedastavad, seega ei laadi nad kunagi kogu faili. Need on klassikaline esimene abinõu:
# Piilu esimesi ja viimaseid ridu ilma kogu faili avamata head -n 50 dump.sql tail -n 50 dump.sql # Tükelda tõmmis 100 MB tükkideks nimega part_aa, part_ab, ... split -b 100m dump.sql part_ # Tõmba välja ühe tabeli plokk kahe markeri vahelt sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql
See toimib, kuid on habras ja tüütu. split -b lõikab toorbaitide piiridel, seega lõikab see otse läbi INSERT-lause keskkoha — saadud tükid pole eraldiseisvana kehtiv SQL. sed-i vahemikutrikk sõltub täpsetest markeritest, mida konkreetne tõmmisetööriist juhtub väljastama; muuda MySQL-i versiooni või mine üle PostgreSQL-ile ja muster ei sobi enam. Ja miski neist ei anna sulle ülevaadet sellest, mis failis tegelikult on — sa arvad ära, milline tabel on see 30 GB oma, enne kui saad seda üldse sihtida.
Ava ja filtreeri see DumpCleaneriga
DumpCleaner on ehitatud just selle failisuuruse jaoks. See voogedastab tõmmist samamoodi nagu käsurida, kuid mõistab SQL-i struktuuri, seega saad tõelise tabeliloendi ning turvalise, lauseteadliku väljundi:
- Lohista fail sisse. DumpCleaner avab tõmmise, voogedastades seda ~1 MB tükkidena — 50 GB fail avaneb umbes 50 MB RAM-iga, nii et miski ei tardu.
- Näe iga tabelit. See skannib tõmmise ja loetleb iga tabeli koos suurusega, nii et märkad kohe, milline neist faili paisutab.
- Eemalda märge sellelt, mida sa ei vaja. Võta märge maha hiiglaslikelt logi-, seansi- või analüütikatabelitelt. DumpCleaner hoiab terved laused tervikuna — ei mingeid pooleks lõigatud INSERT-e.
- Ekspordi. Kirjuta uus, väiksem
.sql-fail, mis lõpuks mugavalt avaneb ja imporditakse. Sinu algset faili ei muudeta kunagi.
Kuna see töötleb 50 GB ja suuremaid tõmmiseid konstantse mäluga, ei pea sa oma Maci RAM-i peale üldse mõtlema. Ja kuna see loeb lähtefaili ning kirjutab eraldi väljundi, jääb tõmmis, millega alustasid, täpselt selliseks, nagu ta oli.
Ava tõmmiseid, mida su redaktor ei suuda
DumpCleaner voogedastab mis tahes suurusega SQL-tõmmiseid konstantse mäluga — ei mingit krahhi, saalimist ega ootamist. Lohista sisse 50 GB fail, viska välja tabelid, mida sa ei vaja, ekspordi väiksem. Natiivne macOS-i ja iPadOS-i rakendus, ühekordne ost.
Laadi alla App Store'istKorduma kippuvad küsimused
Kui suurt SQL-tõmmist DumpCleaner käsitseda suudab?
Kindlat piiri pole. See töötleb faili voona väikeste tükkidena, seega 50 GB ja suuremad tõmmised toimivad nagu väikesed — suuruse piirab su ketas, mitte RAM.
Kas DumpCleaner laadib kogu faili RAM-i?
Ei. Erinevalt tekstiredaktorist loeb see tõmmise väikeste tükkidena ja hoiab mälu enam-vähem konstantsena umbes 50 MB juures, olgu fail 200 MB või 50 GB.
Kas ma saan tõmmise tabelite kaupa tükeldada?
Jah. Selle asemel et split lõikaks pimesi baitide piiridel, mõistab DumpCleaner tabeli struktuuri. Eemalda märge tabelitelt, mida sa ei taha, ja ekspordi puhas fail ainult nendega, mille alles jätad.
Kas DumpCleaner muudab minu algset faili?
Ei. Lähtetõmmist ainult loetakse — DumpCleaner kirjutab alati uue faili, nii et su algne fail jääb puutumata.
Lõpeta oma redaktoriga võitlemine
Lohista sisse hiiglaslik tõmmis, viska välja tabelid, mida sa ei vaja, ekspordi fail, mis tõesti avaneb. DumpCleaner käsitseb mis tahes suurust konstantse mäluga.
Laadi alla App Store'ist