Làm cách nào để tối ưu hóa hiệu suất máy chủ MySQL?

MySQL là một ứng dụng cơ sở dữ liệu nguồn mở tạo ra cấu trúc có ý nghĩa và khả năng truy cập cho lượng lớn dữ liệu. Tuy nhiên, với dữ liệu lớn có vấn đề về hiệu suất. Bài viết này sẽ cung cấp cho bạn các mẹo điều chỉnh hiệu suất trong MySQL để tăng hiệu suất.

Đảm bảo rằng bạn đang sử dụng phiên bản MySQL mới nhất  

Nếu bạn là cơ sở dữ liệu cũ hoặc cũ hơn, điều này có thể không khả thi. Nhưng nếu có, hãy kiểm tra phiên bản MySQL mới nhất và nâng cấp lên phiên bản mới nhất [cơ sở dữ liệu NoSQL mới nhất< . ].

Các phiên bản mới hơn đi kèm với các cải tiến hiệu suất theo mặc định, giúp bạn không phải tìm thêm giải pháp để điều chỉnh hiệu suất chung trong các vấn đề về MySQL. Thông thường, tốt nhất là sử dụng các cải tiến hiệu suất MySQL mặc định hoặc gốc thay vì tập lệnh hoặc tệp cấu hình

Chọn InnoDB Trên MyISAM

MyISAM có ít tính năng nâng cao hơn InnoDB. Nhìn chung, MyISAM kém hiệu quả hơn, với ít cải tiến tối ưu hóa gốc hơn. Chẳng hạn, InnoDB có một chỉ mục được nhóm, với dữ liệu trong các trang và các khối vật lý liên tiếp. Nếu một giá trị quá nhiều để vừa với một trang, InnoDB sẽ di chuyển nó đến một vị trí khác, lập chỉ mục giá trị của nó — dữ liệu thích hợp vẫn ở cùng một vị trí trên ổ cứng, rút ​​ngắn thời gian truy xuất nó

Tài nguyên phần cứng. Điều chỉnh hiệu suất cấp hệ thống trong MySQL

bộ vi xử lý

Tốc độ của bộ xử lý cho biết máy của bạn nhanh như thế nào. Lệnh top sẽ cung cấp cho bạn thông tin chi tiết về mức sử dụng CPU và bộ nhớ của bạn trên mỗi quy trình — nói cách khác, tài nguyên của bạn đang được sử dụng như thế nào. Khi sử dụng MySQL, hãy theo dõi quy trình cụ thể đó dưới dạng phần trăm sử dụng. Bất cứ thứ gì quá cao và nút cổ chai có thể là do máy của bạn, điều đó có nghĩa là nó cần được nâng cấp.

Trí nhớ

Điều chỉnh hoặc cải thiện bộ nhớ của bạn sẽ tăng tổng RAM trong máy chủ MySQL của bạn và cải thiện hiệu suất. Đi tới phần cấu hình máy chủ, nơi bạn sẽ thấy lệnh kích thước vùng đệm để tối ưu hóa bộ nhớ

ổ cứng

Nếu bạn đang sử dụng ổ cứng HDD để lưu trữ, thì việc nâng cấp lên ổ đĩa thể rắn có thể cải thiện hiệu suất của bạn. Theo dõi lượng sử dụng đĩa mà MySQL đang sử dụng so với các tài nguyên khác. Thêm dung lượng lưu trữ nếu nó không tương xứng đáng kể. Các công cụ như sar hoặc iotop [gói sysstat] rất tốt để theo dõi tốc độ đầu vào và đầu ra của đĩa

Mạng

Các tắc nghẽn trong băng thông mạng dẫn đến các gói bị rớt, độ trễ hoặc thậm chí là thời gian ngừng hoạt động hoàn toàn. Bạn sẽ có thể cung cấp cho lưu lượng truy cập cơ sở dữ liệu bình thường.  

Điều chỉnh hiệu suất cấp phần mềm trong MySQL

Điều chỉnh tập lệnh cho phép truy vấn cơ sở dữ liệu hiệu quả hơn, tệp cấu hình MySQL và thiết kế cơ sở dữ liệu tối ưu

MẸO CHUYÊN NGHIỆP. việc điều chỉnh cấu hình phần mềm của bạn có thể gây ra nhiều vấn đề hơn là giải quyết được. Tôi khuyên bạn chỉ nên thực hiện những thay đổi nhỏ vào thời điểm đó, thử nghiệm mỗi lần vì điều này sẽ giúp xác định vấn đề và đánh giá tổng thể tác động đến hiệu suất dễ dàng hơn.

Hồ sơ mã

Sử dụng công cụ lập hồ sơ mã, như Xếp chồng tiền tố, cho phép bạn lập hồ sơ và kiểm tra mã khi bạn viết mã. Bằng cách xác thực hiệu suất của mã khi nó được viết, người dùng Tiền tố thúc đẩy mã tốt hơn để thử nghiệm, nhận được ít phiếu hỗ trợ hơn từ quá trình sản xuất và có các nhà quản lý nhà phát triển hạnh phúc hơn. Tính năng lập hồ sơ và theo dõi tiền tố giúp ngay cả những nhà phát triển có kinh nghiệm nhất cũng tìm thấy các truy vấn SQL chậm, ngoại lệ ẩn, v.v.

Khám phá các truy vấn SQL hoạt động kém, các truy vấn được tạo ORM và các nút cổ chai chưa biết trước đó. Theo dõi mọi tham số cuộc gọi SQL, bản ghi bị ảnh hưởng và thời gian tải xuống. Tiền tố cũng giúp dễ dàng phát hiện các mẫu N+1 đáng sợ.   Tiền tố bao gồm toàn bộ ngăn xếp công nghệ của bạn, với sự hỗ trợ cho. NET, Java, PHP, Nút. js, Python và Ruby trên cả hệ điều hành Windows và Mac. Tải xuống Tiền tố MIỄN PHÍ ngay hôm nay.

Truy vấn

Khi bạn truy vấn một cơ sở dữ liệu, bạn yêu cầu nó truy xuất dữ liệu cụ thể khớp với các giá trị bạn đã nhập. Hãy cảnh giác với các truy vấn tự động có thể làm cạn các biểu mẫu trong nền. Theo dõi chúng bằng chức năng hiển thị danh sách quy trình và loại bỏ những thứ không cần thiết. Một số người trồng mất nhiều thời gian hơn những người khác. Nếu bạn cho phép các quy trình MySQL không cần thiết chạy, các quy trình này sẽ biên dịch và ngăn người dùng khác truy cập và sửa đổi dữ liệu

Tự động cải thiện hiệu suất

Đề xuất của chúng tôi về ba công cụ cải thiện hiệu suất tự động hàng đầu là MySQLTuner, tuning-primer và PHPMyAdmin Advisor. Công cụ đầu tiên, MySQLTuner, tiện dụng nhất với cơ sở dữ liệu MySQL hiện đại. Nó tìm thấy các phần có thể được tối ưu hóa, đề xuất các điều chỉnh và tương thích với MySQL 8. x. Hai cái còn lại thực hiện các chức năng tương tự mặc dù tuning-primer cũ hơn, được tạo cho MySQL 5. 5 đến 5. 7.  

Điều chỉnh máy chủ

Một lần nữa, đảm bảo bạn chỉ thực hiện các thay đổi gia tăng tại đây. Chúng tôi sẽ điều chỉnh /etc/mysql/my. cnf tệp.

innodb_buffer_pool_size

Cấu hình lệnh đặt riêng bộ nhớ hệ thống dưới dạng bộ đệm dữ liệu cho cơ sở dữ liệu của bạn. Khối dữ liệu của bạn càng lớn thì giá trị càng lớn. Trong khi thực hiện các thay đổi, hãy lưu ý lượng RAM được sử dụng cho các tài nguyên hệ thống khác

innodb_io_abilities

Điều này cho thấy tỷ lệ đầu vào/đầu ra từ thiết bị lưu trữ của bạn. Giới hạn cứng ở đây là bất kể loại ổ lưu trữ bạn sử dụng. Có thể thực hiện các chỉnh sửa để căn chỉnh cơ sở dữ liệu của bạn tốt hơn với phần cứng của bạn

query_cache_size

Điều này đặt kích thước bộ đệm của các truy vấn MySQL đang chờ xử lý. Chúng tôi khuyên bạn nên bắt đầu với dung lượng nhỏ, khoảng 10 MB, sau đó tăng lên 100-200 MB, nhưng không nhiều hơn. Nếu bạn có quá nhiều truy vấn và nhận được thông báo “Đang chờ khóa bộ đệm”, hãy thử chức năng GIẢI THÍCH để đánh giá từng truy vấn và cách tối ưu hóa từng truy vấn.

max_connection

Điều này cho thấy số lượng kết nối được kích hoạt trong cơ sở dữ liệu. Để khắc phục lỗi “Quá nhiều kết nối”, hãy tăng số này

GIẢI THÍCH

Cơ sở dữ liệu MySQL hiện đại bao gồm chức năng giải thích. Nếu bạn sử dụng biểu thức này khi bắt đầu truy vấn, truy vấn sẽ được đọc và đánh giá. Trong trường hợp cách diễn đạt không hiệu quả hoặc có sự bất thường nào đó trong cấu trúc, GIẢI THÍCH có thể giúp bạn xác định chính xác chúng. Sau đó, bạn điều chỉnh cụm từ truy vấn để loại bỏ hiệu suất và quét bảng không cần thiết.

THAM GIA, ĐOÀN KẾT, PHÂN BIỆT

Mặc dù "liên kết bên trong" là loại nên sử dụng, nhưng bạn cũng nên sử dụng liên kết, liên kết và phân biệt khi áp dụng. Nối ngoài tìm kiếm dữ liệu không liên quan bên ngoài các cột thích hợp. Trong một số trường hợp, dữ liệu có thể cần thiết, nhưng nó làm giảm hiệu suất không cần thiết đối với việc tìm kiếm dữ liệu không thích hợp

DISTINCT UNION đôi khi có liên quan đến truy vấn. Một lần nữa, hãy sử dụng chúng nếu cần, nhưng lưu ý rằng chúng yêu cầu đọc và sắp xếp thêm từ cơ sở dữ liệu. Nếu chúng không cần thiết, bạn nên tìm một lệnh hiệu quả hơn.

Chỉ mục có thể hữu ích

Cấu trúc SELECT … WHERE thường được sử dụng trong cơ sở dữ liệu. Họ xử lý lọc, truy xuất và đánh giá kết quả. Tạo một bộ chỉ mục nhỏ cho các bảng được kết nối là một cấu trúc hữu ích cho phép truy vấn được trỏ vào chỉ mục để tăng tốc khi chạy.

Tránh sử dụng hàm & ký tự đại diện trong vị từ truy vấn

Tránh sử dụng các hàm trong vị từ truy vấn. Ví dụ: nếu bạn định tạo một ký hiệu UPPER [tạo một hàm], thì điều này sẽ buộc bạn phải thao tác trong ký hiệu SELECT operation. Working in this order doubles the workload of the query. 

Việc sử dụng ký tự đại diện cũng vậy — ký tự đại diện, %, đại diện cho 0 hoặc nhiều ký tự. Chẳng hạn, biểu thức ' %345 ' bao gồm tất cả các giá trị kết thúc bằng 345 . While the % stands for any character appearing before that string, including the absence of any proceeding character. This forces the search to do a full table scan for any of these possibilities.

Khi sử dụng thao tác SELECT * , hãy lưu ý rằng khi quét các cột cụ thể, bạn có thể cần cải thiện thời gian truy vấn tìm kiếm như .

Biểu thức ORDER BY sắp xếp kết quả theo cột đã chọn. Điều này cũng hoạt động để sắp xếp đồng thời hai cột. Tuy nhiên, cả hai cột phải được sắp xếp đồng nhất, theo thứ tự tăng dần hoặc giảm dần. Nếu bạn sắp xếp không đồng nhất, nó sẽ làm chậm hiệu suất. Thêm một chỉ mục này để tăng tốc độ sắp xếp.

kết thúc

Bạn nên biết cách điều chỉnh cơ sở dữ liệu MySQL của mình để cải thiện hiệu suất

Nói chung, hãy xem xét tự động hóa, loại bỏ các quy trình truy vấn không cần thiết, tắc nghẽn trong tài nguyên phần mềm và phần cứng và

Làm cách nào để cải thiện hiệu suất máy chủ MySQL?

Điều chỉnh hiệu suất máy chủ MySQL bằng mẹo để tối ưu hóa hiệu quả .
Kiểm tra phần cứng và phần mềm được đề xuất. .
Tối ưu hóa việc sử dụng bộ nhớ, đĩa và CPU. .
Công cụ điều chỉnh hiệu suất phần mềm. .
Sử dụng chỉ mục MySQL cho hiệu suất. .
Cải thiện hiệu suất với InnoDB. .
Tối ưu hóa truy vấn MySQL. .
Điều chỉnh các tùy chọn máy chủ để tăng hiệu suất

Tại sao máy chủ MySQL chậm?

Nếu cơ sở dữ liệu của bạn đang được sử dụng với số lượng lớn , điều này có thể làm chậm cơ sở dữ liệu. Khi có quá nhiều truy vấn cần xử lý cùng lúc, CPU sẽ bị nghẽn cổ chai dẫn đến cơ sở dữ liệu bị chậm.

Tối ưu hóa trong MySQL là gì?

OPTIMIZE TABLE sắp xếp lại bộ lưu trữ vật lý của dữ liệu bảng và dữ liệu chỉ mục liên quan, để giảm dung lượng lưu trữ và cải thiện hiệu quả I/O khi truy cập bảng. Các thay đổi chính xác được thực hiện cho mỗi bảng phụ thuộc vào công cụ lưu trữ được sử dụng bởi bảng đó

Làm cách nào để cải thiện hiệu suất truy vấn DB của tôi?

10 mẹo hàng đầu để cải thiện hiệu suất truy vấn SQL .
Không sử dụng * trong Tuyên bố chọn
Sử dụng Tồn tại thay vì Truy vấn phụ
Sử dụng Tham gia thích hợp thay vì truy vấn phụ
Sử dụng mệnh đề “Where” thay vì “Having”
Áp dụng chỉ mục trên các cột cần thiết
Đối với các thủ tục được lưu trữ do người dùng xác định, hãy tránh các tiền tố như “sp_”

Chủ Đề