Một bản dump cơ sở dữ liệu production có thể dễ dàng đạt tới hàng chục gigabyte. Ngay khi bạn thử mở nó trong một trình soạn thảo văn bản thông thường, quạt của Mac rú lên, con trỏ xoay xuất hiện, và cuối cùng ứng dụng thoát — đôi khi kéo theo cả công việc chưa lưu ở các cửa sổ khác.
Vì sao trình soạn thảo bị nghẹt với dump lớn
VS Code, TextEdit, Sublime Text và các bạn cùng loại được thiết kế để nạp toàn bộ file vào bộ nhớ nhằm cuộn, tìm kiếm và tô sáng cú pháp tức thì. Điều đó ổn với một file mã nguồn 2 MB. Với một dump 40 GB, nó nghĩa là trình soạn thảo cố cấp phát 40 GB (cộng thêm phần dôi cho các cấu trúc dữ liệu nội bộ) trong RAM.
Mac của bạn có 16 hay 32 GB. Trước khi file được nạp xong từ lâu, hệ thống đã cạn bộ nhớ vật lý, bắt đầu swap ra đĩa, và ì ạch tới mức đứng hình. Đa số trình soạn thảo cũng từ chối thẳng: VS Code giới hạn file ở khoảng 50 MB cho trình soạn thảo đầy đủ rồi chuyển sang chế độ rút gọn, TextEdit đơn giản là treo, còn Sublime cấp phát cho tới khi crash. Kể cả nếu mở được file, việc tô sáng cú pháp và tìm kiếm sẽ quét lại hàng gigabyte trên mỗi lần gõ phím.
Vấn đề cốt lõi: các công cụ này giả định truy cập ngẫu nhiên vào toàn bộ tài liệu. Một dump không cần điều đó — nó là một danh sách các lệnh theo tuần tự. Bạn chỉ cần đọc theo luồng qua nó.
Cách dùng dòng lệnh
Các công cụ Unix trên Mac của bạn vốn đã đọc theo luồng, nên chúng không bao giờ nạp cả file. Đó là phương án đầu tiên kinh điển:
# Xem qua vài dòng đầu và cuối mà không mở cả file head -n 50 dump.sql tail -n 50 dump.sql # Chia dump thành các mảnh 100 MB tên part_aa, part_ab, ... split -b 100m dump.sql part_ # Trích khối của một bảng nằm giữa hai dấu mốc sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql
Cách này có tác dụng, nhưng nó mong manh và nhọc nhằn. split -b cắt theo ranh giới byte thô, nên nó sẽ xẻ ngang giữa một lệnh INSERT — các mảnh kết quả tự thân không phải là SQL hợp lệ. Mẹo dùng khoảng của sed phụ thuộc vào chính xác các dấu mốc mà một công cụ dump cụ thể tình cờ phát ra; đổi phiên bản MySQL hoặc chuyển sang PostgreSQL là mẫu không còn khớp nữa. Và chẳng cách nào cho bạn thấy thực sự có gì trong file — bạn phải đoán bảng nào là bảng 30 GB trước khi có thể nhắm tới nó.
Mở và lọc nó với DumpCleaner
DumpCleaner được xây dựng đúng cho kích thước file này. Nó đọc dump theo luồng như dòng lệnh, nhưng hiểu cấu trúc SQL, nên bạn có được danh sách bảng thực sự và đầu ra an toàn, nhận biết theo lệnh:
- Kéo file vào. DumpCleaner mở dump bằng cách đọc theo luồng từng mảnh ~1 MB — một file 50 GB mở ra với chừng 50 MB RAM, nên không có gì bị đơ.
- Xem mọi bảng. Nó quét dump và liệt kê từng bảng cùng kích thước, nên bạn lập tức thấy bảng nào đang làm phình file.
- Bỏ chọn những gì bạn không cần. Bỏ tích các bảng log, session hay analytics khổng lồ. DumpCleaner giữ nguyên vẹn các lệnh — không có INSERT bị cắt dở.
- Export. Ghi ra một file
.sqlmới, nhỏ hơn, cuối cùng cũng mở và import thoải mái. File gốc của bạn không bao giờ bị chỉnh sửa.
Vì nó xử lý các dump 50 GB trở lên với bộ nhớ không đổi, bạn hoàn toàn không phải bận tâm về RAM của Mac. Và vì nó đọc nguồn rồi ghi ra một đầu ra riêng biệt, dump bạn khởi đầu vẫn giữ nguyên như cũ.
Mở những dump mà trình soạn thảo của bạn không mở nổi
DumpCleaner đọc theo luồng các SQL dump kích thước bất kỳ với bộ nhớ không đổi — không crash, không swap, không chờ đợi. Kéo vào một file 50 GB, bỏ các bảng bạn không cần, export một file nhỏ hơn. Ứng dụng macOS & iPadOS gốc, mua một lần.
Tải trên App StoreCâu hỏi thường gặp
DumpCleaner xử lý được SQL dump lớn tới đâu?
Không có giới hạn cố định. Nó xử lý file dưới dạng luồng theo từng mảnh nhỏ, nên các dump 50 GB trở lên chạy như dump nhỏ — kích thước bị giới hạn bởi đĩa của bạn, không phải RAM.
DumpCleaner có nạp toàn bộ file vào RAM không?
Không. Khác với trình soạn thảo văn bản, nó đọc dump theo từng mảnh nhỏ và giữ bộ nhớ gần như không đổi ở khoảng 50 MB, dù file là 200 MB hay 50 GB.
Tôi có thể chia một dump theo bảng không?
Có. Thay vì split cắt mù theo ranh giới byte, DumpCleaner hiểu cấu trúc bảng. Bỏ chọn các bảng bạn không muốn và export một file gọn gàng chỉ với những bảng bạn giữ.
DumpCleaner có sửa file gốc của tôi không?
Không. Dump nguồn chỉ được đọc — DumpCleaner luôn ghi ra một file mới, nên bản gốc của bạn vẫn nguyên vẹn.
Đừng vật lộn với trình soạn thảo nữa
Kéo dump khổng lồ vào, bỏ các bảng bạn không cần, export một file thực sự mở được. DumpCleaner xử lý mọi kích thước với bộ nhớ không đổi.
Tải trên App Store