ĐĂNG KÝ ĐỂ NHẬN THÔNG TIN MỚI NHẤT

So sánh hiệu năng Truncate và Delete | Tối ưu câu lệnh SQL

Bài viết này tôi sẽ giúp anh em hiểu rõ bản chất câu lệnh Truncate và Delete, từ đó giải thích được trường hợp nào nên dùng Truncate, trường hợp nào nên dùng Delete

 

1. Trường hợp được xem xét trong bài toán này:

  • Giả sử bạn cần xóa toàn bộ dữ liệu trong một bảng (có 10 triệu bản ghi chẳng hạn), bạn đang phân vân giữa Truncate và Delete thì nên lựa chọn câu lệnh nào?
  • Ưu/ nhược điểm của từng loại là gì?
  • Tại sao khi dùng Truncate thì thời gian thực hiện lại nhanh hơn sử dụng Delete?

2.  Tìm hiểu bản chất của Truncate và Delete

2.1. Cơ sở dữ liệu phải làm gì khi gặp lệnh Delete

Trong trường hợp chúng ta muốn xóa toàn bộ dữ liệu của bản (trong ví dụ trên: bảng có 10 triệu bản ghi).

Câu lệnh Delete gửi tới hệ thống như sau:

DELETE FROM TRANSACTION_TABLE

Hệ thống không thực hiện xóa ngay các bản ghi như chúng ta nghĩ.

Trước khi thực hiện xóa các dữ liệu trong bảng, hệ thống cần đưa toàn bộ những dữ liệu này sang một “nơi lưu trữ mới”, gọi là UNDO.

Sau khi việc lưu trữ giữ liệu trong UNDO thành công, hệ thống mới thực hiện công việc “xóa” các dữ liệu trong bảng.

Tại sao lại vậy?

Cơ sở dữ liệu cần thực hiện việc chuyển sang UNDO để phục vụ cho mục đích ROLLBACK.

Sau khi bạn thực hiện câu lệnh DELETE thành công, nếu bạn muốn quay lại trạng thái của TABLE lúc trước khi DELETE, hệ thống sẽ lấy dữ liệu từ đâu để thực hiện việc này? Aha, nó sẽ dùng Undo.

2.2. Cơ sở dữ liệu phải làm gì khi gặp lệnh TRUNCATE

Câu lệnh TRUNCATE thuộc nhóm các lệnh DDL.

Khi chúng ta thực hiện câu lệnh thuộc nhóm DDL, chúng ta không thể thực hiện ROLLBACK.

Chính vì không cần thiết ROLLBACK, hệ thống xử lý lệnh TRUNCATE nhanh hơn rất nhiều lần so với lệnh DELETE (không phải chuyển bất kỳ dữ liệu nào sang vùng UNDO cả).

3. Nếu bạn muốn biết thêm việc tối ưu các câu lệnh DML (Insert, Update, Delete) hoặc câu lệnh Query (Select)

4. Nếu bạn muốn xem video phân tích, demo của tôi

Bạn có thể theo dõi Series phân tích tối ưu SQL của tôi trên kênh youtube: https://www.youtube.com/@tranquochuywecommit/shorts

5. Nếu bạn muốn biết câu trả lời cho câu hỏi “Tối ưu SQL bắt đầu từ đâu”?

Bạn có thể xem Video tôi chia sẻ về vấn đề này.

Trong phần chia sẻ này bạn sẽ biết được:

  • Các thách thức phải đối mặt khi bạn muốn làm chủ kỹ năng tối ưu SQL
  • Những sai lầm phổ biến
  • Và các bí mật 

Bạn có thể xem chi tiết tại đây: Click vào đây.

6. Nếu bạn là DEV và muốn toàn bộ những kinh nghiệm về tối ưu SQL của tôi, để trở nên KHÁC BIỆT so với các đồng nghiệp trên thị trường?

Hãy đọc về chương trình “Từ điển tối ưu 100x hiệu năng” tại đây: Click vào đây để tìm hiểu chương trình.

7. Thông tin tác giả

Chào các bạn, tôi là Trần Quốc Huy – Founder Wecommit và đồng thời là tác giả của chương trình Từ điển tối ưu 100x hiệu năng.

Tôi chỉ tập trung vào 1 lĩnh vực duy nhất hơn 10 năm nay: Tối ưu cơ sở dữ liệu.

Các bạn có thể liên hệ với tôi qua các kênh sau

Facebook cá nhân của tôi: https://www.facebook.com/tran.q.huy.71/

Youtube: https://www.youtube.com/channel/UCtsYzL7iN7rBCPnkjYp4XYw

 

Views: 1556





    Câu hỏi bảo mật

    Trả lời

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    Ask ChatGPT
    Set ChatGPT API key
    Find your Secret API key in your ChatGPT User settings and paste it here to connect ChatGPT with your Tutor LMS website.