Một anh em hỏi tôi rằng: các kiến thức tối ưu SQL mà tôi chia sẻ, có áp dụng được cho Database Game Server được không? Bài viết này sẽ giải đáp thắc mắc của anh em nhé
1. Có thể áp dụng kiến thức tối ưu SQL vào Database Game Server được không?
Tối ưu bản chất là Tư Duy, và anh em hoàn toàn có thể áp dụng các kỹ thuật tối ưu SQL trong những nội dung mà tôi đã chia sẻ vào Database Game Server.
Dưới đây là một số trường hợp ví dụ cụ thể
1.1. Hiểu rõ về Lock để giải quyết tranh chấp tài nguyên khi xử lý những Transaction trong Database
Anh em có thể đối mặt với hiện tượng Lock, Dead Lock ảnh hưởng tới hiệu năng hoạt động của Database.
Để giải quyết triệt để vấn đề này thì chúng ta cần hiểu rất rõ những kiến thức sau:
- Lock là gì?
- Có mấy loại Lock?
- Lock Conflict là gì?
- Dead Lock là gì?
- Anh em DEV cần làm gì khi có Lock Conflict?
- Anh em DEV cần làm gì khi có Dead Lock?
Lưu ý ở đây rằng: Chúng ta không thể xử lý Lock bằng phương án tăng tài nguyên của phần cứng (dù ở hạ tầng On-premise hoặc hạ tầng Cloud).
Anh em có thể đọc bài viết về Lock mà tôi đã chia sẻ tại đây: Xử lý tranh chấp tài nguyên – SQL Lock Conflict là gì?
1.2. Hiểu rõ về cách thức hoạt động của câu lệnh SQL
Cách thức một câu lệnh SQL hoạt động hoàn toàn khác với cách mà chúng ta viết câu lệnh SQL.
Ví dụ: nhìn từ phía lập trình viên, chúng ta sẽ có một số kiểu JOIN như sau:
- INNER JOIN
- LEFT OUTER JOIN
- RIGHT OUTER JOIN
- FULL OUTER JOIN
Tuy nhiên, cách thức mà Database hoạt động, chúng lại sử dụng “những thứ Join khác”, tôi gọi là “Physical Join” (Giải thuật thật sự để Database Server có thể so khớp dữ liệu và thực hiện đúng yêu cầu của Logical Join – các loại Join mà tôi kể tên bên trên).
Khi xử lý một câu lệnh SQL bị chậm, chúng ta cần biết về 6 bước sẽ thực hiện của hệ thống kể từ khi nhận được “yêu cầu”, cho tới khi trả kết quả cho người dùng.
Trong 6 bước trên, các một nội dung đặc biệt quan trọng cần hiểu rõ, đó là: Chiến lược thực thi của một câu lệnh SQL.
Tôi đã từng chia sẻ một số bài viết về tối ưu, dựa trên việc hiểu rõ các bước thực hiện của một câu lệnh, anh em có thể đọc các bài viết này tại đây:
- Tối ưu câu lệnh SQL giảm 97% bằng một chấm nhẹ như thế nào?
- Không viết lại câu lệnh nhưng vẫn tối ưu SQL cải thiện 163% như thế nào?
1.3. Hiểu về những sai lầm ảnh hưởng đến hiệu năng khi dữ liệu tăng trưởng
Thông thường, các hệ thống sẽ bị chậm “dần dần” sau một thời gian hoạt động, Database Game Server cũng không phải ngoại lệ.
Việc chậm dần này có rất nhiều yếu tố:
- Do dữ liệu các table tăng trưởng, nêu thời gian thực hiện của hệ thống cũng lâu hơn
- Do chiến lược thực thi của câu lệnh bị thay đổi (mà anh em DEV không biết hoặc không phát hiện ra)
- Do các objects bị phân mảnh
- Do cấu hình các tham số của database chưa phù hợp
- Và nhiều lý do khác nữa
Tôi từng có bài viết về vấn đề bảng bị phân mảnh, dẫn tới tường hợp hiệu năng ảnh hưởng cực kỳ tệ.
Các anh em có thể đọc bài viết này tại đây: Tối ưu câu lệnh từ 9s còn vài mili giây như thế nào?
1.4. Hiểu về các kỹ thuật thay đổi chiến lược thực thi, tối ưu SQL trong các trường hợp đặc biệt
Kỹ thuật tối ưu SQL này, anh em có thể tìm đọc các bài viết về HINT của tôi trước đây
- Sử dụng HINT trong tối ưu SQL
- Sử dụng HINT RESULT CACHE giúp cải thiện câu lệnh về 0s ngay lập tức dựa trên nguyên lý gì?
1.5. Hiểu về những vấn đề hiệu năng của câu lệnh DML
Trong cơ sở dữ liệu, có nhiều kỹ thuật để tăng tốc khi thực hiện mục tiêu (thêm, sửa, xóa) một lượng lớn dữ liệu.
Anh em có thể xem một số bài vTiết, demo của tôi tại đây:
- Demo về tối ưu câu lệnh Insert
- So sánh hiệu năng của câu lệnh TRUNCATE và DELETE
- Có nên sử dụng Soft Delete không?
1.6. Rất nhiều những kỹ thuật tối ưu SQL khác nữa
2. 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.
3. 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.
4. Thông tin tác giả
Tác giả: Trần Quốc Huy – Founder & CEO Wecommit.
Facebook: https://www.facebook.com/tran.q.huy.71
Youtube: https://www.youtube.com/channel/UCtsYzL7iN7rBCPnkjYp4XYw
Zalo: 0888549190
Email: huy.tranquoc@wecommit.com.vn
