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

Giải đáp tối ưu SQL: Các dự án toàn sử dụng Soft Delete, điều này có thật không?

Đây là chuỗi bài viết giải đáp các vấn đề liên quan đến tối ưu SQL. Bài viết này sẽ giải đáp câu hỏi liên quan đến kỹ thuật sử dụng Soft Delete của các anh em lập trình.

1. Đây là các câu hỏi sau khi các bạn đọc về bài “So sánh hiệu năng Truncate và Delete”

Link bài viết trước anh em có thể xem tại đây: https://wecommit.com.vn/so-sanh-truncate-va-delete/

Hai câu hỏi gửi tới tôi:

  • Câu hỏi 1: “Làm dev toàn sử dụng soft delete chứ có bao giờ được phép xóa dùng Delete đâu”? (ý của bạn là: trong quá trình phát triển dự án, chúng ta không sử dụng lệnh DELETE, mà thay đó sẽ sử dụng một kỹ thuật khác – bên dưới tôi sẽ phân tích chi tiết hơn)
  • Câu hỏi 2: Sử dụng TRUNCATE thì có bị mất Index trên bảng không

 

2. Câu hỏi : “Làm dev toàn sử dụng soft delete chứ có bao giờ được phép xóa dùng Delete đâu”?

Trả lời:

Để tất cả mọi người có thể hình dung được rõ bối cảnh và nội dung câu hỏi, tôi có một số thông tin thêm.

2.1. Soft Delete là gì?

Soft Delete là một cách thức xóa dữ liệu của anh em lập trình. Bản chất các bản ghi không đề được xóa (khác hoàn toàn với việc dùng câu lệnh DELETE), mà chúng sẽ được cập nhật một trạng thái để “ứng dụng” có thể hiểu rằng bản ghi đó đã bị xóa.

Ví dụ:

Tôi có một bảng lưu thông tin  tên là EMPLOYEES như sau

ID NAME SALARY ADD
100 Tran Quoc Huy 5000 Ha Noi
101 Wecommit 10000 Ha Noi
102 Tran Dinh Huy 4500 Nam Dinh
103 Tran Duc Tuan 4000 Ha Nam

Khi thực hiện giải pháp Soft Delete, chúng ta sẽ thực hiện thêm 1 cột vào bảng bên trên (cột này với mục tiêu đánh dấu các bản ghi bị xóa). Giả sử cột đánh dấu thông tin này gọi là IS_DELETE. Cột này bình thường giá trị sẽ là 0 (nếu bản ghi không bị xóa), và nhận giá trị 1 khi bản ghi đó bị đánh dấu là đã xóa.

Bảng dữ liệu của chúng ta bây giờ như sau

ID NAME SALARY ADD IS_DELETE
100 Tran Quoc Huy 5000 Ha Noi 0
101 Wecommit 10000 Ha Noi 0
102 Tran Dinh Huy 4500 Nam Dinh 0
103 Tran Duc Tuan 4000 Ha Nam 0

 

Khi chúng ta muốn xóa bản ghi ID =102, ứng dụng sẽ thực hiện lệnh UPDATE, thay vì sử dụng lệnh DELETE. (Sử dụng cách thức Soft Delete)

UPDATE EMPLOYEES SET IS_DELETE=1 WHERE ID=102

Dữ liệu trong bảng lúc này như sau

ID NAME SALARY ADD IS_DELETE
100 Tran Quoc Huy 5000 Ha Noi 0
101 Wecommit 10000 Ha Noi 0
102 Tran Dinh Huy 4500 Nam Dinh 1
103 Tran Duc Tuan 4000 Ha Nam 0

 

2.2. Các dự án toàn sử dụng Soft Delete, có phải không?

Với các hệ thống lớn, tôi thường thiết kế chiến lược vòng đời dữ liệu để đảm bảo tính an toàn và hiệu năng.

Trong các hệ thống này thực hiện việc XÓA CỨNG (DELETE hoặc TRUNCATE đối với Partition Table) chứ không sử dụng Soft Delete.

Các bạn có thể xem danh sách những dự án mà tôi đã trực tiếp thực hiện tối ưu tại đây: https://wecommit.com.vn/du-an/

2.3. Chiến lược vòng đời dữ liệu là gì và thực tế chúng được sử dụng như thế nào?

Đây là một phần trong các kiến thức dành riêng cho các học viên nhóm đặc quyền.

Các bạn quan tâm có thể tìm hiểu chương trình Từ điển tối ưu 100x hiệu năng của chúng tôi tại đây: https://wecommit.com.vn/tu-dien-toi-uu-100x-hieu-nang/

3. Câu hỏi: Sử dụng TRUNCATE thì các Index trong bảng có bị xóa đi không?

Trả lời:

  • Khi sử dụng TRUNCATE: các Index của bảng vẫn còn nguyên

4. Nếu bạn muốn biết thêm việc về tối ưu SQL:

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. 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: 487





    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.