Bir üretim veritabanı dump'ı kolaylıkla onlarca gigabayta ulaşabilir. Onu normal bir metin editöründe açmaya çalıştığınız anda Mac'inizin fanı hızlanır, dönen renkli top belirir ve sonunda uygulama kapanır — bazen diğer pencerelerdeki kaydedilmemiş çalışmanızı da beraberinde götürerek.
Editörler büyük dump'larda neden tıkanır
VS Code, TextEdit, Sublime Text ve benzerleri, anında kaydırma, arama ve vurgulama yapabilmek için tüm dosyayı belleğe yüklemek üzere tasarlanmıştır. Bu, 2 MB'lık bir kaynak dosya için sorun değil. Ama 40 GB'lık bir dump için editörün 40 GB (artı kendi iç veri yapıları için ek yük) ayırmaya çalışması demektir.
Mac'inizde 16 ya da 32 GB var. Dosya tamamen yüklenmeden çok önce sistem fiziksel bellek sınırına ulaşır, diske takas yapmaya başlar ve durma noktasına gelir. Çoğu editör ayrıca doğrudan reddeder: VS Code tam editör için dosyaları yaklaşık 50 MB ile sınırlar ve kırpılmış bir moda geçer, TextEdit basitçe donar ve Sublime çökene kadar bellek ayırır. Dosyayı açmayı başarsanız bile, sözdizimi vurgulama ve arama her tuş vuruşunda gigabaytları yeniden tarayacaktır.
Asıl sorun: bu araçlar tüm belgeye rastgele erişim olacağını varsayar. Bir dump'ın buna ihtiyacı yoktur — o, sıralı bir ifadeler listesidir. Sadece içinden akış halinde geçmeniz yeterlidir.
Komut satırı yolu
Mac'inizdeki Unix araçları zaten akış halinde çalışır, bu yüzden dosyanın tamamını asla belleğe yüklemezler. Bunlar klasik ilk çözümdür:
# Tüm dosyayı açmadan ilk ve son satırlara göz atın head -n 50 dump.sql tail -n 50 dump.sql # Dump'ı part_aa, part_ab, ... adlı 100 MB'lık parçalara bölün split -b 100m dump.sql part_ # İki işaretçi arasındaki bir tablonun bloğunu çekip çıkarın sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql
Bu işe yarar ama kırılgan ve zahmetlidir. split -b ham bayt sınırlarında keser, bu yüzden bir INSERT ifadesinin tam ortasından dilimler — ortaya çıkan parçalar tek başlarına geçerli SQL değildir. sed aralık hilesi, belirli bir dump aracının ürettiği tam işaretçilere bağlıdır; MySQL sürümünü değiştirin ya da PostgreSQL'e geçin, kalıp artık eşleşmez. Ayrıca hiçbiri size dosyanın içinde gerçekte ne olduğuna dair bir görünüm vermez — 30 GB'lık tablonun hangisi olduğunu hedefleyebilmek için önce tahmin etmeniz gerekir.
DumpCleaner ile açın ve filtreleyin
DumpCleaner tam olarak bu dosya boyutu için tasarlandı. Dump'ı komut satırının yaptığı gibi akış halinde işler ama SQL yapısını anlar, böylece gerçek bir tablo listesi ve güvenli, ifade duyarlı bir çıktı elde edersiniz:
- Dosyayı sürükleyip bırakın. DumpCleaner dump'ı ~1 MB'lık parçalar halinde akış olarak açar — 50 GB'lık bir dosya kabaca 50 MB RAM ile açılır, böylece hiçbir şey donmaz.
- Her tabloyu görün. Dump'ı tarar ve her tabloyu boyutuyla birlikte listeler, böylece dosyayı hangisinin şişirdiğini hemen fark edersiniz.
- İhtiyacınız olmayanların işaretini kaldırın. Devasa log, oturum veya analitik tablolarının işaretini kaldırın. DumpCleaner ifadelerin bütünlüğünü korur — yarım kesilmiş INSERT'ler olmaz.
- Dışa aktarın. Sonunda rahatça açılıp içe aktarılan, daha küçük yeni bir
.sqldosyası yazın. Orijinal dosyanız asla değiştirilmez.
50 GB ve daha büyük dump'ları sabit bellekle işlediği için Mac'inizin RAM'ini hiç düşünmenize gerek kalmaz. Kaynağı okuyup ayrı bir çıktı yazdığından, başladığınız dump tam olduğu gibi kalır.
Editörünüzün açamadığı dump'ları açın
DumpCleaner her boyuttaki SQL dump'ını sabit bellekle akış halinde işler — çökme yok, takas yok, bekleme yok. 50 GB'lık bir dosyayı sürükleyin, ihtiyacınız olmayan tabloları çıkarın, daha küçük bir dosya dışa aktarın. Yerel macOS & iPadOS uygulaması, tek seferlik satın alma.
App Store'dan indirSıkça sorulan sorular
DumpCleaner ne kadar büyük bir SQL dump'ını işleyebilir?
Sabit bir sınır yok. Dosyayı küçük parçalar halinde akış olarak işler, bu yüzden 50 GB ve daha büyük dump'lar küçükleri gibi çalışır — boyut RAM'inizle değil, diskinizle sınırlıdır.
DumpCleaner tüm dosyayı RAM'e yükler mi?
Hayır. Bir metin editörünün aksine, dump'ı küçük parçalar halinde okur ve dosya ister 200 MB ister 50 GB olsun belleği kabaca 50 MB civarında sabit tutar.
Bir dump'ı tabloya göre bölebilir miyim?
Evet. split'in bayt sınırlarında körü körüne kesmesi yerine DumpCleaner tablo yapısını anlar. İstemediğiniz tabloların işaretini kaldırın ve yalnızca tutmak istediklerinizi içeren temiz bir dosya dışa aktarın.
DumpCleaner orijinal dosyamı değiştirir mi?
Hayır. Kaynak dump yalnızca okunur — DumpCleaner her zaman yeni bir dosya yazar, böylece orijinaliniz dokunulmadan kalır.
Editörünüzle boğuşmayı bırakın
Devasa dump'ı sürükleyin, ihtiyacınız olmayan tabloları çıkarın, gerçekten açılan bir dosya dışa aktarın. DumpCleaner her boyutu sabit bellekle işler.
App Store'dan indir