7 thủ thuật giúp tăng tốc độ cơ sở dữ liệu web MySQL

7 thủ thuật giúp tăng tốc độ cơ sở dữ liệu web MySQL
     

MySQL là hệ quản trị cơ sở dữ liệu web tự do nguồn mở phổ biến nhất thế giới và rất được ưa chuộng trong quá trình phát triển ứng dụng. Tuy nhiên do các ứng dụng web MySQL ngày càng nhiều làm tốc độ website cũng giảm theo. Hãy làm theo 7 thủ thuật dưới đây giúp tăng tốc MySQL và website của bạn.

MySQL là hệ quản trị cơ sở dữ liệu web tự do nguồn mở phổ biến nhất thế giới và rất được ưa chuộng trong quá trình phát triển ứng dụng. Tuy nhiên do các ứng dụng web MySQL ngày càng nhiều làm tốc độ website cũng giảm theo. Hãy làm theo 7 thủ thuật dưới đây giúp tăng tốc MySQL và website của bạn.

Một ngày kia bạn nhận ra rằng website của bạn chạy chậm đi, có thể là do đường truyền nhưng còn 1 nguyên nhân khác, đó là máy chủ server tính toán quá nhiều dẫn đến kết quả đưa ra chậm. Khi số lượng bài viết hay thành viên đăng ký trên [website] tăng lên, đồng nghĩa với việc cơ sở dữ liệu khi truy vấn (query) 1 yêu cầu phải duyệt qua tất cả các dữ liệu hiện có để tìm ra dữ liệu thích hợp. Điều này làm cho [MySQL] chậm kéo theo website cũng chậm.

Làm theo 7 thủ thuật dưới đây để giải quyết vấn đề nhé.

1. Chỉ SELECT những trường mà bạn cần

Tất cả các nhà thiết kế web thường sẽ SELECT - chọn tất cả các trường (fields) trong dòng dữ liệu. Tuy nhiên, bạn sẽ ngạc nhiên là một dòng SELECT có thể gây chậm khi chạy truy vấn, đặc biệt là trên các bảng dữ liệu lớn. Vì vậy, thay vì chọn tất cả mọi trường, chỉ cần chọn các trường bạn cần. Nó chiếm ít bộ nhớ trên máy chủ của bạn và do đó cho phép máy chủ cơ sở dữ liệu của bạn sử dụng bộ nhớ trống để xử lý các truy vấn và các tiến trình khác.

2. Sử dụng EXPLAIN để phân tích truy vấn

Đây có lẽ là một trong những khuyến nghị đầu tiên khi bạn đang cố gắng để tối ưu hóa truy vấn MySQL. EXPLAIN là lệnh hữu ích trong MySQL, nó có thể cung cấp một số chi tiết tuyệt vời về các truy vấn được chạy, những chỉ số được sử dụng, bao nhiêu hàng cần kiểm tra thông qua, bảng tạm thời và những điều khó chịu khác mà bạn muốn tránh.

Sử dụng EXPLAIN, trước hết tôi khuyên bạn nên tải MySQL Workbench, nó sẽ cung cấp cho bạn một trình duyệt truy vấn mà bạn có thể chạy các truy vấn và xem kết quả của chúng mà không cần PHP, vv

Nếu bạn thấy rằng truy vấn của bạn đang sử dụng một tập tin hay bảng tạm thời, bạn có thể tối ưu hóa truy vấn của bạn và do đó làm tăng tốc độ thời gian thực hiện.

3. Dùng COUNT(1) để đếm có bao nhiêu dữ liệu

Trong PHP có một hàm là mysql_num_rows(). Mục đích là để đếm số lượng kết quả trả về bởi một truy vấn. Trong khi điều này có vẻ như một ý tưởng thực sự tốt. Tuy nhiên, kinh nghiệm cho thấy rằng điều này sẽ tốn nhiều thời gian hơn nếu ta dùng COUNT(1) ngay trên MySQL.

4. Dùng index ở những trường(fields) hay dùng

Index giống như các tab. Họ làm cho nó nhanh hơn để bạn có thể tìm thấy những dữ liệu bạn cần phù hợp với một số tiêu chí nhất định. Để tạo chỉ mục tốt bạn cần phải suy nghĩ về cách bạn sẽ được truy vấn dữ liệu như thế nào. Khi bạn có thông tin này, bạn sẽ có thể tạo index và nó sẽ tăng tốc độ truy vấn của bạn ngay lập tức.

5. Dùng nhiều insert nếu có thể

Bạn có rất nhiều truy vấn INSERT để chạy cùng một lúc? Tại sao không gửi tất cả đến MySQL cùng lúc. Nó sẽ được thực hiện nhanh hơn rất nhiều. Điều đó đặc biệt hữu ích khi thực hiện nhập nhiều dữ liệu cùng lúc.

6. Sử dụng loại(type) trường(field) chính xác cho dữ liệu

Có rất nhiều các loại trường khác nhau có sẵn thông qua MySQL, nhưng tôi đề nghị nên dùng những loại quen thuộc với chuỗi(string) và số(numeric) là tốt nhất của dữ liệu của bạn. Ví dụ, nếu bạn chỉ lưu trữ các số 1, 2 và 3 trong một trường, hãy sử dụng TINYINT tốt hơn INTERGER. Nó chiếm ít không gian lưu trữ trên máy chủ của bạn.

7. Sử dụng đúng loại bảng để lưu trữ dữ liệu (engine type)

Nhiều người lựa chọn lưu trữ là MyISAM. Điều này không sai và có thể được thực sự nhanh chóng. Nhưng một khi bạn nhận được một cơ sở dữ liệu thực sự lớn và bạn đang chạy 100s có thể 1000s truy vấn mỗi giây thì nó sẽ bắt đầu khóa bảng. Đây là nơi mà MyISAM không tốt. Một bảng khóa sẽ xảy ra khi MyISAM cần chạy một truy vấn. Còn các truy vấn cần thiết để chạy bị khóa. Bởi vì điều này, các truy vấn khác sẽ phải chờ đợi cho truy vấn nó cần kết thúc và do đó gây tình trạng chờ đợi làm chậm trên trang web của bạn. Nếu bạn không cần loại FULLTEXT, tôi đề nghị sử dụng InnoDB. Nó có thể chậm hơn so với MyISAM, nhưng nó đáng tin cậy hơn và an toàn hơn rất nhiều trong trường hợp của một máy chủ bị hỏng.

Cơ sở dữ liệu web Mysql thật sự ảnh hưởng rất nhiều đến tốc độ website. Nên khi lập trình web, cần phải chú ý để tránh trường hợp website chạy như rùa và kéo thứ hạng website tụt hạng trên Google.

Xem thêm: 10 cách đơn giản tăng tốc độ website Wordpress