Bài viết
Tăng tốc mysql
Bài này hướng dẫn một số cách tăng tốc mysql khi bạn dùng xampp, các thiết lập này chủ yếu ảnh hưởng lên quá trình truy xuất CSDL của MySQL.
innodb_flush_log_at_trx_commit = 2
Thêm table_cache 512 (ít nhất 256) nếu chưa có.
Áp dụng sau cho innoDB:
innodb_buffer_pool_size = 2048M (ít nhất 64MB, muốn nhanh set = nửa số RAM)
innodb_log_file_size = 512M (ít nhất 32MB, có thể set = 25% của innodb_buffer_pool_size)
innodb_flush_log_at_trx_commit
biến này đặc biệt, độ an toàn của nó giảm (và tỉ lệ nghịch với tốc độ) từ 1 > 2 > 0, trong đó 1 là an toàn + chậm nhất, 2 nhanh hơn nhưng sẽ khiến CSDL crash nếu HĐH crash hoặc máy cúp điện, và 0 là nhanh nhất, nhưng sẽ khiến CSDL crash nếu chỉ cần XAMPP crash (mất an toàn nhất). (xem giải thích chuyên môn tại: http://dba.stackexchange.com/questions/12611/is-it-safe-to-use-innodb-flush-log-at-trx-commit-2 )
Nếu chỉnh tham số này, thì xóa 2 file ib_logfile0 và ib_logfile1 ở /xampp/mysql/data, khi start XAMPP lại nó sẽ build file log mới
Xử lý khi MySQL bị crash
Thực tế đã bị crash nhiều lần nhỏ (mất bảng CSDL) và lần không thể start MySQL lên. Điều này diễn ra có thể do tinh chỉnh innodb_flush_log_at_trx_commit rồi sau đó stop MySQL không đúng cách.
Để xử lý, cần cài 1 bản XAMPP mới, rồi sau đó chép folder mang tên CSDL nằm trong
/xampp/mysql/data
vào bản XAMPP này. Sau đó xóa file
ib_logfile0
và
ib_logfile1
của bản mới đi (nếu có) rồi start MySQL để nó build file log mới. Nếu chưa được, thử dùng lại file
ibdata1
(và thậm chí cả 2 file log cũ) xem sao.
5 quy tắc tăng tốc độ xử lý CSDL của MySQL
Quy tắc 1: Giảm thiểu sự kết nối tới MySQL Server.
Khi kết nối tới MySQL, chúng ta thường sử dụng hàm kết nối là mysql_connect() và hàm mysql_pconnect().
Theo lý thuyết, mỗi lần sử dụng hàm mysql_connect(), hệ thống sẽ khởi tạo một kết nối mới tới CSDL, còn khi sử dụng hàm mysql_pconnect(), hệ thống sẽ tận dụng kết nối đã được thiết lập trước đó. Nếu ứng dụng của chúng ta gọi nhiều lần trong một khoảng thời gian ngắn, hàm mysql_connect() sẽ là yếu tố làm cho hệ thống chạy rất chậm vì nó chiếm một lượng đáng kể tài nguyên của hệ thống . Vì vậy, khi cần hãy cố gắng sử dụng hàm kết nối mysql_pconnect() thay cho mysql_connect().
Quy tắc 2: Chấp nhận thừa dữ liệu để có thể đổi lấy tăng tốc độ truy vấn
Ngày xưa khi dung lượng là một điều xa xỉ thì ngày nay nó là một điều không còn quan trọng đối với một ứng dụng. Một thiết kế dữ liệu theo dạng chuẩn có thể dễ nhìn, dễ hiểu đơn giản, nhưng khi truy vấn dữ liệu, đôi khi chúng ta sẽ phải đau đầu với việc phải liên kết rất nhiều bảng quan hệ(JOIN) có khi chỉ để lấy ra một record. Vì vậy, trong một số trường hợp, chúng ta hãy phá bỏ tính đẹp đẽ trong thiết kế dữ liệu để tăng tốc độ truy vấn.
Chú ý : truy vấn trên một bảng sẽ nhanh hơn rất nhiều lần khi truy vấn trên nhiều bảng quan hệ.
Quy tắc 3: Thiết lập các trường index và truy vấn dữ liệu thông qua các điều kiện dựa trên chỉ số.
Khi còn học có một số môn mà chúng ta phải đau đầu nhức óc nhiều khi không biết sử dụng nó vào đâu, thì khi ra thực tế mới biết có rất nhiều trường hợp vận dụng nó sẽ làm cho chúng ta rất ư là pro ^^ Điển hình là môn Cấu trúc dữ liệu và giải thuật, đối với thằng này thì hẳn chúng ta cũng phải nhớ đến các giải thuật tìm kiếm nhanh với cách tìm dựa trên bảng băm hoặc trên mảng đã sắp xếp (thuật toán tìm kiếm nhị phân). Các trường được thiết lập ở dạng index sẽ được sắp xếp trên một file riêng, khi chúng ta truy vấn dữ liệu thông qua các trường index, các giải thuật tìm kiếm sẽ phát huy tính hiệu quả của nó, đặc biệt là các trường index dạng int. Vì vậy, hãy tận dụng các index này triệt để nhá.
Quy tắc 4: Chỉ lấy đúng và đủ dữ liệu cần thiết
Nhiều người chắc là làm biếng ^^, thường sử dụng dấu (*) trong select. Việc này là một điều cấm kỵ trong việc lấy dữ liệu nó sẽ làm cho hệ thống làm việc một cách hết công suất, vì phải lấy dữ liệu toàn bộ các trường trong bảng. Khi dữ liệu của chúng ta lớn thì nó sẽ là trở ngại cho việc tối ưu hiệu suất của ứng dụng. Vì vậy, thay vì select *, hãy chỉ select những trường cần thiết.
Một vấn đề nữa là khi sử dụng hàm mysql_fetch_array(), nhiều người thường bỏ qua các tham số tuỳ chọn. Lời khuyên là hãy sử dụng tham số mysql_assoc(), khi đó hệ thống sẽ trả về một mảng với chỉ số là tên trường, như vậy các bạn sẽ dễ hình dung và đỡ tốn bộ nhớ.
Quy tắc 5: Giải phóng bộ nhớ ngay sau khi sử dụng xong
Sau khi thực hiện các truy vấn và thực hiện xong các phép tính toán với các dữ liệu lấy được, hãy sử dụng mysql_free_result() để nó giải phóng bộ nhớ đệm.
(tổng hợp)
Có thể bạn quan tâm:
Fix lỗi "Could not open database connection" của kloxo
Hướng Dẫn Backup Và Restore Database Mysql Dung Lượng Lớn ...
Hàng trăm triệu tài khoản email đăng nhập hàng triệu website ...
Đổi mật khẩu admin, mysql Kloxo qua SSH
Top Free and Open Source Email Marketing Software
Tối ưu giải pháp cho các công ty bảo hiểm
SSale Hệ thống quản lý phân phối, bán hàng, chăm sóc khách hàng ...
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>