MySQL Shell for VS Code: Quản lý Database và Vẽ ERD ‘Xịn’ như Workbench ngay trên Editor

MySQL tutorial - IT technology blog
MySQL tutorial - IT technology blog

Tại sao nên đưa MySQL vào thẳng VS Code?

Nếu bạn đang làm Web hay Backend, chắc hẳn đã quá quen với cảnh màn hình tràn ngập cửa sổ. Một bên là VS Code để gõ code, bên kia là MySQL Workbench hoặc DBeaver để check dữ liệu. Cứ mỗi lần Alt+Tab để copy-paste query, sự tập trung của bạn lại “rơi rụng” một ít. Chưa kể, chạy thêm một app Java nặng nề có thể ngốn thêm 500MB RAM, khiến máy giật lag khi đang mở hàng chục tab Chrome.

Mình từng quản lý một hệ thống e-commerce chạy MySQL 8.0 với database nặng khoảng 50GB. Trước đây, mỗi lần debug, mình phải mở Workbench, chờ nó load rồi mới bắt đầu truy vấn. Từ ngày Oracle tung ra MySQL Shell for VS Code, mình đã dẹp hẳn các công cụ rời rạc. Mọi thao tác từ viết query, xem cấu trúc bảng đến vẽ ERD đều nằm gọn trong một giao diện duy nhất.

Tiện ích này không chỉ là một SQL client thông thường. Nó kết hợp sức mạnh của MySQL Shell (hỗ trợ SQL, Python, JavaScript) với sự linh hoạt của VS Code. Bạn có thể lưu script dưới dạng Notebook. Điều này cực kỳ hữu ích khi cần làm báo cáo hoặc viết tài liệu hướng dẫn cho team DevOps.

Cài đặt và thiết lập kết nối đầu tiên

Để bắt đầu, bạn mở mục Extensions (Ctrl+Shift+X), tìm từ khóa “MySQL Shell for VS Code” và nhấn Install. Hãy ưu tiên chọn bản chính chủ từ Oracle để đảm bảo tính ổn định và bảo mật cao nhất.

Bước 1: Kết nối tới Server

Cài xong, bạn sẽ thấy biểu tượng MySQL ở thanh Activity Bar bên trái. Nhấn vào đó và chọn “Add Connection”.

# Các thông số cần chuẩn bị:
Hostname: localhost (hoặc IP server)
Port: 3306
User: root
Password: ********

Nếu làm việc với server remote, extension này hỗ trợ SSH Tunnel rất mượt. Mình thường dùng nó để kết nối thẳng vào database nội bộ mà không cần mở port 3306 ra ngoài Internet. Cách này vừa tiện vừa đảm bảo an toàn tối đa cho dữ liệu dự án.

Sử dụng Notebook: Cách làm việc thông minh hơn

Notebook là tính năng đáng giá nhất của extension này. Thay vì gõ vào một file .sql thô kệch, bạn có thể tạo MySQL Shell Notebook (đuôi .mynb). Nó hoạt động tương tự như Jupyter Notebook trong giới Data Science.

Tại sao Notebook lại lợi hại?

  • Đa ngôn ngữ: Bạn thoải mái chuyển đổi giữa SQL, JavaScript và Python trong cùng một file.
  • Trực quan: Kết quả truy vấn hiển thị ngay dưới cell code. Bạn có thể xuất ra JSON hoặc CSV chỉ với một cú click.
  • Ghi chú Markdown: Bạn có thể giải thích logic câu query phức tạp ngay tại chỗ để đồng nghiệp đọc là hiểu ngay.

Ví dụ, khi cần lọc top 10 khách hàng chi tiêu mạnh nhất trong database 50GB, mình sẽ viết như sau:

-- Lấy danh sách khách hàng VIP
SELECT 
    u.username, 
    SUM(o.total_amount) as total_spent
FROM users u
JOIN orders o ON u.id = o.user_id
GROUP BY u.id
ORDER BY total_spent DESC
LIMIT 10;

Bảng dữ liệu sẽ hiện ra sạch đẹp ngay phía dưới. Nếu muốn dùng kết quả này để xử lý logic bằng Python? Bạn chỉ cần chuyển mode sang Python và gọi biến last_result. Mọi thứ diễn ra liền mạch, không cần export/import thủ công.

Thiết kế và xem sơ đồ ERD (Entity Relationship Diagram)

Nhiều người vẫn bám trụ với MySQL Workbench chỉ vì tính năng vẽ ERD. Tuy nhiên, MySQL Shell for VS Code xử lý việc này thậm chí còn nhanh và mượt hơn nhiều.

Sau khi kết nối, bạn chỉ cần chuột phải vào Schema và chọn “Add to Dashboard”. Tại đây, hãy chọn tính năng ER Diagram. Hệ thống sẽ tự động quét các Foreign Keys để vẽ ra bản đồ quan hệ giữa các bảng.

Kinh nghiệm của mình khi xử lý hệ thống có hàng trăm bảng là: Đừng vẽ tất cả lên một màn hình. Extension này cho phép bạn chọn lọc từng nhóm bảng để tạo sơ đồ nhỏ (Sub-diagrams). Cách này giúp team dễ hình dung luồng dữ liệu mà không bị ngợp bởi ma trận quan hệ chồng chéo.

Tối ưu quy trình phát triển (Dev Workflow)

Từ khi dùng extension này, quy trình làm việc của mình thay đổi rõ rệt. Thay vì gửi file SQL qua Slack, mình push luôn các file .mynb vào Git repository của dự án.

Mỗi khi có migration mới hoặc cần tối ưu query, mình sẽ tạo một Notebook mô tả chi tiết:

  1. Điểm nghẽn của query cũ (kèm screenshot execution plan).
  2. Cách query mới đã được tối ưu.
  3. Kết quả benchmark thực tế trên môi trường staging.

Cách làm này chuyên nghiệp hơn hẳn việc quăng một đoạn code SQL không đầu không đuôi. Với các dự án DevOps, việc này giúp quản lý hạ tầng database theo phong cách “code-centric” hiện đại.

Mẹo nhỏ cho bạn:

Nếu database có hàng triệu dòng, hãy vào Settings và giới hạn số lượng record trả về (mặc định là 1000). Điều này giúp tránh treo VS Code nếu bạn lỡ tay chạy SELECT * trên một bảng quá lớn.

Kết luận

Đưa MySQL Shell vào VS Code không chỉ đơn thuần là sự tiện lợi. Nó giúp đồng bộ tư duy giữa việc viết code và quản lý dữ liệu. Bạn sẽ thấy tốc độ làm việc tăng lên đáng kể khi mọi công cụ đều nằm trong tầm tay.

Nếu bạn vẫn đang dùng các công cụ rời rạc, hãy dành 15 phút để cài đặt thử extension này. Chắc chắn nó sẽ giúp trải nghiệm làm việc với database của bạn “sướng” hơn nhiều. Chúc bạn tối ưu database thành công!

Share: