-
Giới thiệu và khởi tạo môi trường MySQL
- Hướng dẫn cài đặt và cấu hình MySQL Server trên Windows cho kết nối từ xa
- Vận dụng tư duy phân tích dữ liệu với Mysql từ cơ bản đến nâng cao
- Vận dụng tư duy phân tích quản trị dữ liệu với MySQL
- Tối ưu hoá công việc quản trị với view và bảng tạm
- Tôi ưu hoá với thủ tục – procedure trong mysql
- Nhóm hàm windown
- Con trỏ và phân vùng trong mysql
- Làm việc với hàm tự tạo trong Mysql
- Làm việc với trigger trong Mysql
- Làm việc với giao dịch
- Tìm hiểu về truy vấn động
- Even – Sự kiện định kỳ trong Mysql
-
Quản trị dữ liệu trong doanh nghiệp
- Tổng quan về trục quản trị dữ liệu
- Quản trị & Giám sát hệ thống với cơ sở dữ liệu ảo information_schema
- Cấu hình và lưu trữ
- Cấu hình file my.ini
- An toàn và toàn vẹn dữ liệu – Bảo mật – Backup
- Hiệu năng và tối ưu hoá
- Đồng bộ và phục hồi
- Phân tích tối ưu hoá hiệu năng với dữ liệu bảng performance_schema
-
Chiến lược quản trị dữ liệu
Làm việc với giao dịch
“Giao dịch (Transaction)” là một phần quan trọng trong quản trị cơ sở dữ liệu, đặc biệt khi bạn làm việc với các nghiệp vụ cần đảm bảo tính toàn vẹn dữ liệu (consistency) như trong database quản trị ADMIN_DB.
🧩 1. Khái niệm giao dịch trong MySQL
🔹 Định nghĩa:
Giao dịch (Transaction) là một nhóm các thao tác SQL (INSERT, UPDATE, DELETE, v.v.) được coi là một đơn vị logic duy nhất.
Tất cả các thao tác trong giao dịch hoặc cùng thành công, hoặc cùng thất bại — không có trạng thái trung gian.
🔹 Tính chất của giao dịch — ACID
| Thuộc tính | Ý nghĩa |
|---|---|
| A — Atomicity | Tính nguyên tử: tất cả câu lệnh trong giao dịch được thực thi trọn vẹn hoặc không thực thi gì cả. |
| C — Consistency | Dữ liệu luôn trong trạng thái hợp lệ trước và sau khi giao dịch. |
| I — Isolation | Các giao dịch độc lập, không làm ảnh hưởng đến nhau khi chạy song song. |
| D — Durability | Kết quả giao dịch đã COMMIT được lưu vĩnh viễn trong hệ thống. |
⚙️ 2. Cú pháp cơ bản trong MySQL
START TRANSACTION; -- hoặc BEGIN;
-- Các câu lệnh SQL cần thực hiện
...
COMMIT; -- Xác nhận (lưu) giao dịch
-- hoặc:
ROLLBACK; -- Hủy toàn bộ thay đổi trong giao dịch
💡 Lưu ý:
- Chỉ những bảng sử dụng InnoDB mới hỗ trợ giao dịch.
- Trong MySQL, mặc định
autocommit = 1→ mỗi câu lệnh được tự động commit.
Để dùng giao dịch, bạn có thể tạm tắt:SET autocommit = 0;
🧱 3. Ví dụ thực hành trong CSDL quản trị ADMIN_DB
🎯 Bài toán:
Giả sử khi thêm mới một bản ghi sao lưu (backup), ta cần đồng thời:
- Ghi log vào bảng
backup_log - Cập nhật thời gian
last_synccho database tương ứng trongtbl_databases
Nếu một trong hai bước thất bại, toàn bộ phải rollback để tránh sai lệch dữ liệu.
✅ Cụ thể:
USE ADMIN_DB;
START TRANSACTION;
-- 1️⃣ Ghi log backup
INSERT INTO backup_log (db_name, backup_type, file_path, backup_size_mb, duration_sec, status)
VALUES ('sales_db', 'FULL', 'D:/backup/sales_db_full_2025-10-22.bak', 512.50, 120, 'SUCCESS');
-- 2️⃣ Cập nhật thời gian đồng bộ
UPDATE tbl_databases
SET last_sync = NOW()
WHERE db_name = 'sales_db';
-- Kiểm tra dữ liệu có lỗi không
-- Nếu mọi thứ OK:
COMMIT;
-- Nếu có lỗi:
-- ROLLBACK;
📋 Giải thích:
START TRANSACTION: bắt đầu một phiên giao dịch.- Nếu INSERT hoặc UPDATE lỗi (ví dụ database không tồn tại), ta gọi
ROLLBACK. - Nếu cả hai thành công →
COMMIT→ dữ liệu được lưu vĩnh viễn.
🧠 4. Ứng dụng thực tế trong quản trị ADMIN_DB
| Tình huống quản trị | Ứng dụng giao dịch |
|---|---|
| Sao lưu & cập nhật trạng thái hệ thống | Đảm bảo log và trạng thái đồng bộ. |
| Gán quyền cho user | Thêm bản ghi vào user_privileges đồng thời ghi user_audit_log. |
| Cập nhật dung lượng dữ liệu | Cập nhật bảng space_usage và growth_history cùng lúc. |
| Quản lý job tự động | Nếu job thất bại, rollback trạng thái trong job_definition. |
💡 5. Ví dụ nâng cao — Quản lý quyền người dùng (SECURITY)
USE ADMIN_DB;
START TRANSACTION;
-- 1️⃣ Cấp quyền cho người dùng
INSERT INTO user_privileges (user_id, db_name, privilege_type, is_grantable)
VALUES ('dba_01', 'sales_db', 'SELECT', 'YES');
-- 2️⃣ Ghi log hành động cấp quyền
INSERT INTO user_audit_log (user, host, action, object_name)
VALUES ('admin', 'localhost', 'GRANT SELECT', 'sales_db');
-- 3️⃣ Kiểm tra kết quả
-- Nếu tất cả OK:
COMMIT;
-- Nếu phát hiện lỗi:
-- ROLLBACK;
📌 Mục tiêu: tránh tình huống quyền đã được cấp mà không có log tương ứng.
🧾 6. Kiểm tra trạng thái giao dịch
Bạn có thể kiểm tra trạng thái hiện tại bằng:
SELECT @@autocommit;
Hoặc bật/tắt tự động commit:
SET autocommit = 0; -- tắt autocommit để chủ động dùng COMMIT/ROLLBACK
SET autocommit = 1; -- bật lại mặc định
📘 Tóm tắt cho tài liệu hướng dẫn
| Thành phần | Nội dung |
|---|---|
| Khái niệm | Nhóm lệnh SQL được thực hiện như 1 đơn vị logic, đảm bảo ACID. |
| Cú pháp chính | START TRANSACTION; ... COMMIT; hoặc ROLLBACK; |
| Ứng dụng trong ADMIN_DB | Backup log, user privilege, job automation, capacity tracking |
| Lưu ý kỹ thuật | Dùng InnoDB, tắt autocommit khi cần, rollback nếu lỗi |