Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Mẹo điều chỉnh hiệu suất MySQL để tối ưu hóa cơ sở dữ liệu

Ngôn ngữ truy vấn có cấu trúc (SQL) là một ngôn ngữ lập trình có mục đích đặc biệt được sử dụng để lưu trữ, thao tác và truy xuất dữ liệu từ cơ sở dữ liệu. Nó đã tìm thấy các ứng dụng trong nhiều hệ thống cơ sở dữ liệu quan hệ bao gồm MySQL, Postgres, Oracle, SQL Server và các hệ thống khác.

Bằng cách sử dụng các câu lệnh SQL, các nhà phát triển dễ dàng thực hiện các hoạt động cơ sở dữ liệu chức năng khác nhau như tạo, cập nhật và xóa dữ liệu.

Khi khối lượng dữ liệu ngày càng tăng và công nghệ ngày càng trở nên phức tạp, điều quan trọng hơn là phải tối ưu hóa cơ sở dữ liệu MySQL đúng cách để mang lại trải nghiệm người dùng cuối và giảm chi phí cơ sở hạ tầng. Các công cụ điều chỉnh hiệu suất MySQL có thể giúp các chuyên gia cơ sở dữ liệu nhanh chóng xác định các nút thắt cổ chai, nhắm mục tiêu các hoạt động không đủ thông qua việc xem xét các kế hoạch thực thi truy vấn và loại bỏ bất kỳ trò chơi phỏng đoán nào.

Với sự phức tạp ngày càng tăng của khối lượng dữ liệu ngày càng tăng và khối lượng công việc luôn thay đổi, việc điều chỉnh hiệu suất cơ sở dữ liệu và tối ưu hóa truy vấn MySQL hiện là cần thiết để tối đa hóa việc sử dụng tài nguyên và hiệu suất hệ thống.

Có một số lý do khiến việc điều chỉnh SQL trở nên phức tạp đối với các nhà phát triển. Thứ nhất, nó đòi hỏi chuyên môn kỹ thuật sâu rộng để viết và hiểu các kế hoạch thực hiện khác nhau. Trong khi việc viết các câu lệnh SQL hoàn chỉnh và rõ ràng là trách nhiệm của người thu thập được kiến ​​thức sâu sắc về nó.

Bên cạnh sự phức tạp của nó, việc điều chỉnh rất tốn thời gian. Bởi vì khi bạn có một số lượng lớn các câu lệnh SQL cần sắp xếp, nó sẽ mang lại một chút không chắc chắn để tìm ra câu lệnh nào bạn phải điều chỉnh và câu lệnh nào bạn nên bỏ đi. Và mặc dù mọi tuyên bố đều khác nhau, nhưng cách tiếp cận điều chỉnh của chúng cũng khác nhau tùy theo chức năng tương ứng của chúng.


Sẵn sàng cho bản cập nhật Core Web Vitals

Ebook Tăng Tốc Trang Web Của Bạn Trước Khi Bạn Bắt Đầu Mất Lưu Lượng.

Cảm ơn bạn

Danh sách của bạn có trên Đường đến Hộp thư đến của bạn.


Trong hướng dẫn này, tôi sẽ thảo luận về cách cải thiện hiệu suất MySQL bằng cách sử dụng một số mẹo điều chỉnh hiệu suất hữu ích. Vì vậy, hãy xem chúng chi tiết bên dưới:

Lợi ích của Điều chỉnh Hiệu suất MySQL

Ưu điểm chính của việc xác định yếu tố thúc đẩy hiệu suất cho cơ sở dữ liệu cho phép bạn tránh cung cấp quá mức và giảm chi phí bằng cách định kích thước phù hợp cho các máy chủ của bạn. Nó cũng cung cấp cho bạn thông tin chi tiết về việc di chuyển lưu trữ dữ liệu hoặc tăng thêm dung lượng máy chủ có mang lại sự cải thiện về hiệu suất hay không và nếu có thì sẽ là bao nhiêu.

Cơ sở dữ liệu điều chỉnh để tối ưu hóa hiệu suất truy vấn MySQL không đi kèm với những thách thức nhạt. Tuy nhiên, một khi được điều chỉnh đúng cách, cơ sở dữ liệu sẽ cho kết quả hiệu suất đáng giá với các chức năng tuyệt vời. Nó không chỉ giảm tải tác vụ không mong muốn mà còn tối ưu hóa cơ sở dữ liệu MySQL để truy xuất dữ liệu nhanh hơn.

Bạn Cũng Có thể Thích: Mẹo hiệu suất PHP để tối ưu hóa trang web của bạn

Tối ưu hóa Truy vấn Với Nguyên tắc Tối ưu hóa Truy vấn MySQL

Làm theo các phương pháp hay nhất sau để điều chỉnh hiệu suất MySQL của bạn và tối ưu hóa tốc độ cơ sở dữ liệu.

Trước hết, hãy đảm bảo lập chỉ mục của tất cả các vị từ trong mệnh đề WHERE, JOIN, ORDER BY và GROUP BY. WebSphere Commerce nhấn mạnh mạnh mẽ vào việc lập chỉ mục các vị từ để tăng hiệu suất SQL. Bởi vì lập chỉ mục không đúng các truy vấn SQL có thể gây ra việc quét bảng, dẫn đến sự cố khóa và các vấn đề khác.

Do đó, tôi thực sự khuyên bạn nên lập chỉ mục tất cả các cột vị ngữ để cơ sở dữ liệu có thể trải nghiệm tối ưu hóa truy vấn MySQL.

Bạn Cũng Có thể Thích: Hướng dẫn tối ưu hóa hiệu suất của Laravel

Tránh sử dụng các hàm trong các vị từ

Cơ sở dữ liệu không sử dụng chỉ mục nếu nó có một số chức năng được xác định trước trong cột.

Ví dụ:

SELECT * FROM TABLE1 WHERE UPPER(COL1)='ABC'Copy

Do hàm UPPER (), cơ sở dữ liệu không sử dụng chỉ mục trên COL1. Nếu không có cách nào để tránh hàm đó trong SQL, bạn sẽ phải tạo chỉ mục dựa trên hàm mới hoặc phải tạo các cột tùy chỉnh trong cơ sở dữ liệu để cải thiện hiệu suất.

Tránh sử dụng ký tự đại diện (%) ở đầu vị ngữ

Vị từ LIKE '%abc' gây ra quá trình quét toàn bộ bảng. Ví dụ:

SELECT * FROM TABLE1 WHERE COL1 LIKE '%ABC'Copy

Trong hầu hết các trường hợp, việc sử dụng ký tự đại diện này mang lại những hạn chế lớn về hiệu suất.

Tránh các cột không cần thiết trong mệnh đề CHỌN

Thay vì sử dụng ‘SELECT *’, hãy luôn chỉ định các cột trong mệnh đề SELECT để cải thiện hiệu suất MySQL. Bởi vì các cột không cần thiết gây ra tải bổ sung trên cơ sở dữ liệu, làm chậm hiệu suất của nó cũng như toàn bộ quy trình có hệ thống.

Sử dụng liên kết bên trong, thay vì liên kết ngoài nếu có thể

Chỉ sử dụng nối ngoài khi cần thiết. Việc sử dụng nó không cần thiết không chỉ hạn chế hiệu suất cơ sở dữ liệu mà còn hạn chế các tùy chọn tối ưu hóa truy vấn MySQL, dẫn đến việc thực thi các câu lệnh SQL chậm hơn.

Chỉ sử dụng DISTINCT và UNION nếu cần

Việc sử dụng các toán tử UNION và DISTINCT mà không có bất kỳ mục đích chính nào gây ra việc sắp xếp không mong muốn và làm chậm quá trình thực thi SQL. Thay vì UNION, sử dụng UNION ALL mang lại hiệu quả hơn trong quy trình và cải thiện hiệu suất MySQL chính xác hơn.

Mệnh đề ORDER BY là bắt buộc trong SQL nếu bạn muốn nhận được kết quả được sắp xếp

Từ khóa ORDER BY sắp xếp tập hợp kết quả trong các cột câu lệnh được xác định trước. Mặc dù câu lệnh mang lại lợi thế cho quản trị viên cơ sở dữ liệu trong việc lấy dữ liệu đã được sắp xếp, nhưng nó cũng tạo ra một chút tác động về hiệu suất trong quá trình thực thi SQL. Bởi vì trước tiên truy vấn cần phải sắp xếp dữ liệu để tạo ra tập kết quả cuối cùng, gây ra một chút phức tạp trong quá trình thực thi SQL.

Bạn Cũng Có thể Thích: Cách tham gia hai bảng trong MySQL

Không sử dụng MySQL làm hàng đợi

Hàng đợi có thể ảnh hưởng đến hiệu suất cơ sở dữ liệu của bạn ngay từ lõi và có thể nhập vào cơ sở dữ liệu ứng dụng của bạn mà bạn không biết. Ví dụ:nếu bạn đang thiết lập trạng thái cho một mục cụ thể để 'quy trình liên quan' có thể truy cập vào nó, bạn đang vô tình tạo ra một hàng đợi. Những gì nó làm là tăng thêm thời gian tải để truy cập tài nguyên mà không có bất kỳ lý do chính nào.

Hàng đợi gây ra vấn đề vì hai lý do chính. Chúng tuần tự hóa khối lượng công việc của bạn, ngăn chặn việc hoàn thành các nhiệm vụ song song và chúng thường dẫn đến một bảng chứa công việc đang trong quá trình cũng như dữ liệu lịch sử từ các công việc đã hoàn thành. Nó không chỉ thêm độ trễ cho ứng dụng mà còn thêm cản trở trong việc điều chỉnh hiệu suất MySQL.

Bạn Cũng Có thể Thích: Cách sử dụng Redis để xếp hàng

Hiểu Bốn Tài nguyên Cơ bản

Bạn cần bốn tài nguyên cơ bản để tạo các chức năng cơ sở dữ liệu. CPU, đĩa, bộ nhớ và mạng. Nếu bất kỳ ai trong số này không hoạt động chính xác, điều đó cuối cùng sẽ ảnh hưởng đến máy chủ cơ sở dữ liệu và dẫn đến hiệu suất kém.

Để hiểu đúng các tài nguyên cơ bản, bạn cần tập trung vào hai lĩnh vực cụ thể, tức là chọn phần cứng phù hợp và khắc phục sự cố với nó.

Luôn đảm bảo sử dụng các thành phần hiệu suất toàn diện khi chọn phần cứng cho cơ sở dữ liệu MySQL. Không chỉ chọn thứ tốt nhất trong số các ngăn xếp mà còn đảm bảo rằng giữa chúng phải có sự cân bằng phù hợp. Chúng tôi thường thấy rằng các tổ chức có xu hướng chọn máy chủ có CPU nhanh và đĩa lớn, nhưng họ lại nhầm lẫn với bộ nhớ bị cạn kiệt, điều này cuối cùng giết chết hiệu suất.

Trong một số trường hợp, việc bổ sung bộ nhớ trở nên rất quan trọng để cải thiện hiệu suất khi nói đến mức độ lớn. Nó trông hơi phản trực giác, nhưng trong hầu hết các trường hợp, việc sử dụng quá mức của các đĩa ảnh hưởng trực tiếp đến hiệu suất cơ sở dữ liệu. Vì sự thiếu hụt đủ bộ nhớ để chứa dữ liệu của máy chủ chứng tỏ tốn kém trong việc chạy trật tự hiệu suất cơ sở dữ liệu.

Khi đề cập đến việc khắc phục sự cố, hãy luôn kiểm tra hiệu suất của cả bốn tài nguyên cơ bản. Xác nhận về mặt chất lượng rằng họ đang thực hiện theo nhu cầu cải tiến trong các chỉ tiêu. Việc xem xét thường xuyên việc đánh giá này sẽ nhanh chóng giải quyết các vấn đề lớn đang xảy ra.

Truy vấn phân trang

Các ứng dụng phân trang có xu hướng đưa máy chủ xuống. Khi hiển thị cho bạn một trang kết quả, với một liên kết để chuyển đến trang tiếp theo, các ứng dụng này thường nhóm và sắp xếp theo những cách không thể sử dụng chỉ mục và chúng sử dụng hàm LIMIT và bù đắp khiến máy chủ hoạt động nhiều tạo công việc, sau đó loại bỏ các hàng.

Bạn có thể tìm thấy các tối ưu hóa trong chính giao diện người dùng. Thay vì hiển thị số trang chính xác trong kết quả và các liên kết đến một trang riêng lẻ, bạn có thể chỉ hiển thị một liên kết đến trang tiếp theo. Bạn cũng có thể ngăn mọi người truy cập các trang không liên quan.

Về phía truy vấn, thay vì sử dụng LIMIT có bù trừ, bạn có thể chọn nhiều hàng hơn mức bạn cần và khi người dùng nhấp vào liên kết "trang tiếp theo", bạn có thể chỉ định hàng cuối cùng đó làm điểm bắt đầu cho tập kết quả tiếp theo . Ví dụ:nếu người dùng đã xem một trang có hàng từ 101 đến 120, bạn cũng sẽ phải chọn hàng 121; để hiển thị trang tiếp theo, bạn phải truy vấn máy chủ cho các hàng lớn hơn hoặc bằng 121, giới hạn 21.

Tối ưu hóa truy vấn con MySQL

Lời khuyên quan trọng nhất mà tôi có thể cho bạn về các truy vấn con là bạn phải thích một phép nối nếu có thể, ít nhất là trong các phiên bản MySQL hiện tại.

Truy vấn con là chủ đề làm việc căng thẳng của nhóm tối ưu hóa và các phiên bản sắp tới của MySQL có thể có nhiều tối ưu hóa truy vấn con hơn. Hãy kiểm tra xem những tối ưu hóa nào sẽ kết thúc trong mã đã phát hành và chúng sẽ tạo ra sự khác biệt như thế nào. Quan điểm của tôi ở đây là “thích tham gia hơn” không phải là lời khuyên có thể chứng minh được trong tương lai. Máy chủ ngày càng thông minh hơn và các trường hợp bạn phải cho nó biết cách làm điều gì đó thay vì trả về kết quả ngày càng ít đi.

Mysql Truy vấn Cache

Một trong những khía cạnh quan trọng nhất của việc đo lường hiệu suất là lưu nội dung vào bộ nhớ đệm. MySQL cung cấp bộ nhớ đệm truy vấn cơ sở dữ liệu để lưu vào bộ nhớ đệm văn bản câu lệnh SELECT và kết quả được truy xuất. Do đó, bất cứ khi nào bạn tạo một cơ sở dữ liệu trùng lặp, bạn gọi bộ đệm truy vấn MySQL, nó sẽ phản hồi lại bạn và hiển thị kết quả từ bộ đệm và không có lệnh gọi nào được phân tích cú pháp lặp lại. Bằng cách này, bạn có thể tối đa hóa quá trình tối ưu hóa bộ đệm MySQL.

Để thiết lập bộ đệm truy vấn MySQL, bạn phải thêm một vài cài đặt vào MySQL. Trước hết, bạn phải kiểm tra xem bộ đệm truy vấn có khả dụng hay không bằng lệnh sau:

mysql> SHOW VARIABLES LIKE 'have_query_cache';

Điều này sẽ hiển thị kết quả, CÓ. Điều này có nghĩa là bộ đệm MySQL đang hoạt động tốt.

+------------------+-------+

| Variable_name    | Value |

+------------------+-------+

| have_query_cache | YES   |

+------------------+-------+

Bây giờ, bạn có thể thiết lập kích thước và loại bộ đệm truy vấn MySQL. Hãy nhớ kích thước mặc định tối thiểu là 40KB. Kích thước tối đa có thể là 32MB. Bạn có thể thiết lập MySQL query_cache_size bằng lệnh sau:

mysql> SET GLOBAL query_cache_size = 40000;

Loại bộ đệm truy vấn có thể xác định hành vi của tất cả các kết nối. Bạn cũng có thể tắt bộ đệm ẩn Truy vấn cho các truy vấn như:

mysql> SET SESSION query_cache_type = OFF;

Bạn cũng có thể đặt các giá trị như 0,1 và 2 để thiết lập trạng thái kết nối.

Sử dụng Memcached cho MySQL Caching

Memcached là một hệ thống bộ nhớ đệm phân tán. Nó tăng tốc các trang web có cơ sở dữ liệu động lớn bằng cách lưu trữ đối tượng cơ sở dữ liệu trong Bộ nhớ động để giảm áp lực lên máy chủ, bất cứ khi nào nguồn dữ liệu bên ngoài yêu cầu đọc. Lớp Memcached giúp giảm số lần cơ sở dữ liệu đưa ra yêu cầu.

Memcached lưu trữ các giá trị (v) bằng khóa (k) và truy xuất các giá trị (v) bằng khóa (k) mà không cần phân tích cú pháp các truy vấn cơ sở dữ liệu và tránh xa tất cả những phức tạp này.

Để đọc thêm về Memcached, bạn có thể đọc hướng dẫn về cách thiết lập Memcache trong php.

Kết thúc!

Bài viết này cung cấp chi tiết, tài khoản về các phương pháp hay nhất để tối ưu hóa cơ sở dữ liệu và các mẹo điều chỉnh hiệu suất MySQL tiện dụng mà mọi nhà phát triển phải biết. Đó là hướng dẫn đầy đủ cho những nhà phát triển phụ trợ, những người không chắc chắn về hiệu suất cơ sở dữ liệu kém của họ và cần một số kỹ thuật hữu ích để tối ưu hóa cơ sở dữ liệu MySQL từ lõi.

Nếu bạn muốn thêm suy nghĩ của mình về chủ đề hoặc muốn đặt một số câu hỏi liên quan đến chủ đề này, hãy viết ý kiến ​​của bạn trong phần nhận xét.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đang tải thông báo lớp com.mysql.jdbc.Driver ... không được dùng nữa

  2. Giao dịch Codeigniter

  3. Làm cách nào để xem các chỉ mục cho cơ sở dữ liệu hoặc bảng trong MySQL?

  4. mysqli_query () mong đợi ít nhất 2 tham số, 1 tham số được đưa vào?

  5. Các kết nối máy chủ MySQL của tôi có được mã hóa và an toàn không?