Tăng tốc xử lý – tìm kiếm database với Mysql / PHP

Vấn đề chẳng là gì nếu ta sử dụng website với quy mô nhỏ , nhưng nếu ta sử dụng website với quy mô lớn , thì tốc độ chính là vấn đề cốt lõi , website chạy nhanh thì lượt truy cập cũng tăng nhanh. Vậy thiết kế làm sao , để tăng tốc website , khi website của chúng ta đã chạy ( và dĩ nhiên ta nhận thấy web mình chạy chậm hơn website khác ) ? :happy:

Và sau đây, là những cách mà theo mình biết , có thể tăng tốc xử lý – tìm kiếm database với Mysql / PHP :

1) Giảm sự kết nối đến với database :
Như ta đã biết hàm mysql_connect(…) của PHP là thiết lập connect đến database . Và dĩ nhiên , càng nhiều connect thì website của ta càng chậm .
Vậy ta sẽ giải quyết vấn đề trên bằng hàm mysql_pconnect(…) . Hàm này tương tự hàm trên , nhưng có chức năng nếu kết nối đã được thiết lập thì không cần kết nối nữa -> website của ta sẽ nhanh hơn đáng kể (đã test và thấy thực sự tốc độ tăng khá nhanh).

2) Sử dụng database ảo (virtual database) để truy xuất csdl nhanh hơn :

Thay vì mỗi lượt truy xuất , ta gọi đến bảng csdl cồng kềnh của chúng ta . Tại sao ta không đơn giản bản csdl đó đi , thành 1 bảng nhẹ hơn . Các kĩ thuật để ta đơn giản đi là : View hoặc XML .
+ Với kĩ thuật View , ta sẽ kết nối những bảng mà ta muốn lấy giá trị , thành 1 bảng chung , và khi truy xuất csdl , ta chỉ việc gọi đến View .
Thông tin về view có thể xem tại đây : http://dev.mysql.com/doc/refman/5.0/en/create-view.html
+ Với kĩ thuật XML , mỗi khi ta tương tác với databse (thêm , xóa , sửa…) sẽ gọi hàm và xuất ra file XML tương ứng với table mà ta muốn tăng tốc , và như thế , khi truy xuất , thay vì ta truy xuất tới table mà ta muốn , ta truy xuất gián tiếp thông qua file XML . Cách này nếu sử dụng tốc độ sẽ tăng nhanh hơn cách trên , vì ta sẽ không cần thiết lập kết nối đến database .:yikes:

3) Chấp nhận thừa bảng : Ngày nay , dung lượng database đã không còn là vấn đề lớn nữa , khi ổ cứng ngày nay đã lên tới hàng terabyte . Vì vậy , thay vì tạo cơ sở dữ liệu với nhiều bảng quan hệ relationship với nhau , ta hãy cố gắng tạo cơ sở dữ liệu cho sử dụng được trong 1 bảng thay vì nhiều bảng relationship với nhau (nếu có thể) . Vì như thế khi truy xuất , ta chỉ gọi đến 1 bảng và sẽ cảm thấy tốc độ tăng đáng kể .:zip:

4) Chỉ lấy những dữ liệu quan trọng : ở cách trên ,ta chấp nhận thừa dữ liệu , để lấy nhanh , còn ở cách này ta tập trung vào cách lấy đúng dữ liệu .
Ví dụ bảng product của chúng ta có rất nhiều field . Thay vì select * , ta nên select những field muốn lấy , như thế mảng(array) trả về sẽ nhẹ hơn bao giờ hết .

5) Giải phóng bộ nhớ sau khi sử dụng : Sau khi connect database và lấy được dữ liệu cần lấy , ta nên dùng hàm mysql_free_result() để giải phóng bộ nhớ , chuẩn bị cho việc lấy dữ liệu tiếp theo .:)

Tổng hợp : Trong các giải pháp trên , thì giải pháp 2 là dùng XML và View là 2 giải pháp mà hiện nay được dùng nhiều nhất và đem lại hiệu quả nhất vì nó dễ dàng sử dụng , không thay đổi cấu trúc database , code và tăng tốc CSDL 1 cách đáng kể .

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s