Trino SQL Bài học 3: Sử dụng Trino CLI và giao diện Web UI
Mục tiêu bài học:
-
Nắm vững cách thao tác với Trino thông qua công cụ dòng lệnh (CLI).
-
Hiểu cách đọc các thông số hiệu năng và giám sát quá trình thực thi truy vấn trên Trino Web UI.
-
Kết hợp cả hai công cụ để tối ưu hóa luồng công việc kiểm thử câu lệnh SQL.
1. Trino CLI (Giao diện dòng lệnh)
Trino CLI là công cụ chính thức dựa trên Java, cho phép bạn kết nối trực tiếp đến cụm Trino (Coordinator) để gửi các câu lệnh SQL và nhận kết quả ngay trên terminal. Công cụ này hỗ trợ tự động hoàn thành cú pháp (autocomplete), cuộn trang kết quả và định dạng đầu ra.
Cách 1: Chạy CLI thông qua Docker (Tiếp nối Bài 2)
Vì bạn đã khởi chạy Trino qua Docker ở bài trước, CLI đã được tích hợp sẵn bên trong container. Đây là cách nhanh nhất để bắt đầu:
Bash
docker exec -it trino-server trino
Khi vào được giao diện lệnh (dấu nhắc trino>), bạn đang kết nối ẩn danh với server tại localhost:8080.
Cách 2: Tải và chạy CLI độc lập (Standalone)
Nếu bạn muốn đặt CLI ở máy cá nhân (host) để kết nối đến cụm Trino trên server khác, bạn cần tải file thực thi:
Bash
# Tải Trino CLI (thay đổi phiên bản nếu cần, hiện tại là bản mới nhất)
wget https://repo1.maven.org/maven2/io/trino/trino-cli/435/trino-cli-435-executable.jar -O trino
# Cấp quyền thực thi
chmod +x trino
# Kết nối đến server, chỉ định sẵn catalog và schema
./trino --server http://localhost:8080 --catalog tpch --schema tiny --user admin
Các lệnh nội bộ (Internal Commands) quan trọng
Khi đã ở trong giao diện trino>, hãy thử các lệnh siêu dữ liệu (metadata) sau để khám phá hệ thống:
-
SHOW CATALOGS;– Liệt kê tất cả các nguồn dữ liệu đang được kết nối (nhưtpch,memory,mysql). -
SHOW SCHEMAS FROM tpch;– Xem danh sách các database/schema bên trong catalogtpch. -
USE tpch.sf1;– Chọn catalog và schema mặc định cho phiên làm việc, để không phải gõ tiền tố dài dòng. -
SHOW TABLES;– Hiển thị các bảng trong schema hiện tại. -
DESCRIBE customer;– Xem chi tiết cấu trúc bảng (cột, kiểu dữ liệu, thông tin định tuyến). -
SHOW QUERIES;– Xem danh sách các truy vấn gần đây nhất của bạn kèm trạng thái (Running, Finished, Failed).
Mẹo định dạng đầu ra
CLI cho phép xuất kết quả theo nhiều định dạng (CSV, TSV, JSON) để dễ dàng tích hợp vào script bash:
Bash
# Chạy truy vấn từ bên ngoài và xuất kết quả ra file CSV
./trino --server localhost:8080 --execute "SELECT * FROM tpch.tiny.nation" --output-format CSV_HEADER > output.csv
2. Trino Web UI (Giao diện Quản trị & Giám sát)
Trino Web UI không được thiết kế để gõ câu lệnh SQL. Thay vào đó, nó đóng vai trò là bảng điều khiển (Dashboard) giúp Data Engineer hoặc Quản trị viên theo dõi sức khỏe của hệ thống và "bắt bệnh" các truy vấn chậm.
Bố cục tổng quan (Cluster Overview)
Truy cập http://localhost:8080 trên trình duyệt. Màn hình chính sẽ cung cấp cái nhìn toàn cảnh:
-
Active Workers: Số lượng node đang tính toán. Nếu con số này tụt xuống (hoặc bằng 0), cụm Trino đang có vấn đề mạng hoặc sập node.
-
Running/Queued/Blocked Queries: Tình trạng nghẽn cổ chai. Nếu số truy vấn xếp hàng (Queued) quá cao, hệ thống đang cạn kiệt tài nguyên (CPU/RAM).
-
Cluster Memory & CPU: Tổng lượng RAM và CPU đang được hệ thống tiêu thụ theo thời gian thực.
Giám sát chi tiết một truy vấn (Query Details)
Khi bạn chạy một câu SQL phức tạp trên CLI, Trino sẽ cấp cho nó một mã định danh duy nhất (Query ID, ví dụ: 20261010_123456_00001_aBcDe). Nhấp vào Query ID này trên Web UI, bạn sẽ thấy:
-
Resource Utilization: Truy vấn này ngốn bao nhiêu RAM? Nếu nó vượt ngưỡng cấu hình
query.max-memory, truy vấn sẽ bị đánh dấuFAILED(Lỗi Out of Memory). -
Execution Time (Wall Time vs CPU Time):
-
Wall Time: Thời gian thực tế tính từ lúc nhấn Enter đến lúc có kết quả.
-
CPU Time: Tổng thời gian các lõi CPU cộng dồn lại để xử lý. Nếu CPU Time cao hơn nhiều so với Wall Time, chứng tỏ truy vấn đang được xử lý song song (parallel) rất tốt trên nhiều Worker.
-
Phân tích Live Plan
Đây là tính năng đáng giá nhất của Trino Web UI. Bằng cách chuyển sang tab Live Plan, bạn sẽ thấy một cây đồ thị mô tả chính xác cách Coordinator chia nhỏ câu SQL thành các Fragment.
-
Bạn có thể xem Fragment nào đang thực thi việc
JOIN, Fragment nào đang quét dữ liệu (Table Scan). -
Các đường chéo thể hiện sự luân chuyển dữ liệu (Data Exchange) giữa các Worker. Nút cổ chai (Bottleneck) thường xuất hiện ở các nút có lượng dữ liệu truyền tải bất thường (Data Size lớn, Rows trích xuất cao).
All rights reserved