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

Mẹo để cung cấp hiệu suất cơ sở dữ liệu MySQL - Phần một

Phần phụ trợ cơ sở dữ liệu ảnh hưởng đến ứng dụng, sau đó có thể ảnh hưởng đến hiệu suất của tổ chức. Khi điều này xảy ra, những người phụ trách có xu hướng muốn sửa chữa nhanh chóng. Có nhiều con đường khác nhau để cải thiện hiệu suất trong MySQL. Là một lựa chọn rất phổ biến của nhiều tổ chức, việc tìm thấy một bản cài đặt MySQL với cấu hình mặc định là khá phổ biến. Tuy nhiên, điều này có thể không phù hợp với khối lượng công việc và nhu cầu thiết lập của bạn.

Trong blog này, chúng tôi sẽ giúp bạn hiểu rõ hơn về khối lượng công việc cơ sở dữ liệu của bạn và những điều có thể gây hại cho nó. Kiến thức về cách sử dụng tài nguyên hạn chế là điều cần thiết cho bất kỳ ai quản lý cơ sở dữ liệu, đặc biệt nếu bạn chạy hệ thống sản xuất của mình trên MySQL DB.

Để đảm bảo rằng cơ sở dữ liệu hoạt động như mong đợi, chúng tôi sẽ bắt đầu với các công cụ giám sát MySQL miễn phí. Sau đó, chúng tôi sẽ xem xét các tham số MySQL liên quan mà bạn có thể tinh chỉnh để cải thiện phiên bản cơ sở dữ liệu. Chúng tôi cũng sẽ xem xét việc lập chỉ mục như một yếu tố trong quản lý hiệu suất cơ sở dữ liệu.

Để có thể sử dụng tối ưu tài nguyên phần cứng, chúng tôi sẽ xem xét tối ưu hóa hạt nhân và các cài đặt hệ điều hành quan trọng khác. Cuối cùng, chúng ta sẽ xem xét các thiết lập hợp thời trang dựa trên MySQL Replication và cách nó có thể được kiểm tra về độ trễ hiệu suất.

Xác định Vấn đề Hiệu suất MySQL

Phân tích này giúp bạn hiểu rõ hơn về tình trạng và hiệu suất của cơ sở dữ liệu của mình. Các công cụ được liệt kê bên dưới có thể giúp nắm bắt và hiểu mọi giao dịch, cho phép bạn luôn cập nhật về hiệu suất và mức tiêu thụ tài nguyên của nó.

PMM (Giám sát và Quản lý Percona)

Công cụ quản lý và giám sát Percona là một bộ sưu tập mã nguồn mở dành riêng cho cơ sở dữ liệu MySQL, MongoDB và MariaDB (tại chỗ hoặc trên đám mây). PPM được sử dụng miễn phí và nó dựa trên DB chuỗi thời gian Grafana và Prometheus nổi tiếng. Nó cung cấp một phân tích dựa trên thời gian kỹ lưỡng cho MySQL. Nó cung cấp các bảng điều khiển được cấu hình sẵn giúp hiểu khối lượng công việc cơ sở dữ liệu của bạn.

PMM sử dụng mô hình máy khách / máy chủ. Bạn sẽ phải tải xuống và cài đặt cả máy khách và máy chủ. Đối với máy chủ, bạn có thể sử dụng Docker Container. Dễ dàng như kéo hình ảnh docker máy chủ PMM, tạo vùng chứa và khởi chạy PMM.

Kéo Hình ảnh Máy chủ PMM

docker pull percona/pmm-server:2

2: Pulling from percona/pmm-server

ab5ef0e58194: Downloading  2.141MB/75.78MB

cbbdeab9a179: Downloading  2.668MB/400.5MB

Tạo Vùng chứa PMM

docker create \

   -v /srv \

   --name pmm-data \

   percona/pmm-server:2 /bin/true

Chạy Vùng chứa

docker run -d \

   -p 80:80 \

   -p 443:443 \

   --volumes-from pmm-data \

   --name pmm-server \

   --restart always \

   percona/pmm-server:2

Bạn cũng có thể kiểm tra nó trông như thế nào mà không cần cài đặt. Bản demo của PMM có sẵn tại đây.

Một công cụ khác nằm trong bộ công cụ PMM là Phân tích truy vấn (QAN). Công cụ QAN luôn cập nhật về thời gian thực hiện các truy vấn. Bạn thậm chí có thể lấy thông tin chi tiết về các truy vấn SQL. Nó cũng cung cấp một cái nhìn lịch sử về các tham số khác nhau rất quan trọng đối với hiệu suất tối ưu của Máy chủ cơ sở dữ liệu MySQL. Điều này thường giúp hiểu liệu bất kỳ thay đổi nào trong mã có thể gây hại cho hiệu suất của bạn. Ví dụ, một mã mới đã được giới thiệu mà bạn không biết. Một cách sử dụng đơn giản là hiển thị các truy vấn SQL hiện tại và làm nổi bật các vấn đề để giúp bạn cải thiện hiệu suất của cơ sở dữ liệu của mình.

PMM cung cấp khả năng hiển thị theo thời gian và lịch sử về hiệu suất cơ sở dữ liệu MySQL. Trang tổng quan có thể được tùy chỉnh để đáp ứng các yêu cầu cụ thể của bạn. Bạn thậm chí có thể mở rộng một bảng điều khiển cụ thể để tìm thông tin bạn muốn về một sự kiện đã qua.

Giám sát Cơ sở dữ liệu Miễn phí với ClusterControl

ClusterControl cung cấp khả năng giám sát toàn bộ cơ sở dữ liệu theo thời gian thực. Nó hỗ trợ các hệ thống cơ sở dữ liệu khác nhau bắt đầu với MySQL, MariaDB, PerconaDB, MySQL NDB Cluster, Galera Cluster (cả Percona và MariaDB), MongoDB, PostgreSQL và TimescaleDB. Các mô-đun giám sát và triển khai được sử dụng miễn phí.

ClusterControl bao gồm một số mô-đun. Trong ClusterControl Community Edition miễn phí, chúng tôi có thể sử dụng:

Cố vấn hiệu suất đưa ra lời khuyên cụ thể về cách giải quyết các vấn đề về cơ sở dữ liệu và máy chủ, chẳng hạn như như hiệu suất, bảo mật, quản lý nhật ký, cấu hình và lập kế hoạch năng lực. Báo cáo hoạt động có thể được sử dụng để đảm bảo tuân thủ trong hàng trăm trường hợp. Tuy nhiên, giám sát không phải là quản lý. ClusterControl có các tính năng như quản lý sao lưu, khôi phục tự động / chuyển đổi dự phòng, triển khai / mở rộng quy mô, nâng cấp luân phiên, bảo mật / mã hóa, quản lý bộ cân bằng tải, v.v.

Giám sát &Cố vấn

ClusterControl Community Edition cung cấp tính năng giám sát cơ sở dữ liệu miễn phí, cung cấp cái nhìn thống nhất về tất cả các triển khai của bạn trên các trung tâm dữ liệu và cho phép bạn đi sâu vào các nút riêng lẻ. Tương tự như PMM, chúng ta có thể tìm thấy các bảng điều khiển dựa trên dữ liệu thời gian thực. Cần biết điều gì đang xảy ra hiện nay, với các chỉ số có độ phân giải cao để có độ chính xác cao hơn, trang tổng quan được định cấu hình trước và một loạt các dịch vụ thông báo của bên thứ ba để cảnh báo.

Hệ thống tại chỗ và đám mây có thể được giám sát và quản lý từ một điểm duy nhất . Kiểm tra tình trạng thông minh được triển khai cho các cấu trúc liên kết phân tán, ví dụ, phát hiện phân vùng mạng bằng cách tận dụng chế độ xem của bộ cân bằng tải đối với các nút cơ sở dữ liệu.

Phân tích khối lượng công việc ClusterControl ở một trong các thành phần giám sát có thể dễ dàng giúp bạn theo dõi các hoạt động cơ sở dữ liệu của bạn. Nó cung cấp sự rõ ràng về các giao dịch / truy vấn từ các ứng dụng. Các ngoại lệ về hiệu suất không bao giờ được mong đợi, nhưng chúng xảy ra và rất dễ bị bỏ sót trong một biển dữ liệu. Khám phá ngoại lệ sẽ nhận được bất kỳ truy vấn nào đột nhiên bắt đầu thực thi chậm hơn nhiều so với bình thường. Nó theo dõi đường trung bình động và độ lệch chuẩn cho thời gian thực hiện truy vấn và phát hiện / cảnh báo khi sự khác biệt giữa giá trị vượt quá giá trị trung bình của hai độ lệch chuẩn.

Như chúng ta có thể thấy từ hình bên dưới, chúng tôi có thể bắt gặp một số truy vấn mà giữa một ngày có xu hướng thay đổi thời gian thực hiện vào một thời điểm cụ thể.

Để cài đặt ClusterControl, hãy nhấp vào đây và tải xuống tập lệnh cài đặt. Tập lệnh cài đặt sẽ thực hiện các bước cài đặt cần thiết.

Bạn cũng nên xem Bản trình diễn ClusterControl để xem nó hoạt động.

Bạn cũng có thể lấy hình ảnh docker bằng ClusterControl.

$ docker pull severalnines/clustercontrol

Để biết thêm thông tin về điều này, hãy theo dõi bài viết này.

Lập chỉ mục Cơ sở dữ liệu MySQL

Nếu không có chỉ mục, việc chạy cùng một truy vấn dẫn đến việc quét mọi hàng để tìm dữ liệu cần thiết. Tạo chỉ mục trên một trường trong bảng sẽ tạo thêm cấu trúc dữ liệu, là giá trị của trường và một con trỏ tới bản ghi mà nó liên quan. Nói cách khác, lập chỉ mục tạo ra một lối tắt, với thời gian truy vấn nhanh hơn nhiều trên các bảng mở rộng. Không có chỉ mục, MySQL phải bắt đầu với hàng đầu tiên và sau đó đọc qua toàn bộ bảng để tìm các hàng có liên quan.

Nói chung, lập chỉ mục hoạt động tốt nhất trên những cột là chủ đề của mệnh đề WHERE trong các truy vấn thường được thực thi của bạn.

Các bảng có thể có nhiều chỉ mục. Việc quản lý các chỉ mục chắc chắn sẽ yêu cầu có thể liệt kê các chỉ mục hiện có trên một bảng. Cú pháp để xem chỉ mục ở bên dưới.

Để kiểm tra các chỉ mục trên bảng MySQL, hãy chạy:

SHOW INDEX FROM table_name;

Vì các chỉ mục chỉ được sử dụng để tăng tốc độ tìm kiếm trường phù hợp trong các bản ghi, nên lý do tại sao các trường lập chỉ mục chỉ được sử dụng cho đầu ra sẽ chỉ đơn giản là lãng phí dung lượng đĩa. Một tác dụng phụ khác là các chỉ mục có thể mở rộng các thao tác chèn hoặc xóa và do đó nên tránh khi không cần thiết.

Cơ sở dữ liệu MySQL Swappiness

Trên các máy chủ mà MySQL là dịch vụ duy nhất đang chạy, bạn nên đặt vm.swapiness =1. Cài đặt mặc định được đặt thành 60, không phù hợp với hệ thống cơ sở dữ liệu.

vi /etc/sysctl.conf
vm.swappiness = 1

Các trang khổng lồ trong suốt

Nếu bạn đang chạy MySQL của mình trên RedHat, hãy đảm bảo rằng các Trang khổng lồ trong suốt đã bị tắt.

Có thể kiểm tra điều này bằng lệnh:

cat /proc/sys/vm/nr_hugepages
0

(0 có nghĩa là các trang khổng lồ trong suốt bị vô hiệu hóa.)

MySQL I / O Scheduler

Trong hầu hết các bản phân phối, bộ lập lịch I / O noop hoặc deadline phải được bật theo mặc định. Để kiểm tra nó chạy

cat /sys/block/sdb/queue/scheduler 

Tùy chọn Hệ thống Tệp MySQL

Bạn nên sử dụng các hệ thống tệp được ghi nhật ký như xfs, ext4 hoặc btrfs. MySQL hoạt động tốt với tất cả những thứ đó và sự khác biệt nhiều khả năng sẽ đến với kích thước tệp tối đa được hỗ trợ.

  • XFS (kích thước hệ thống tệp tối đa 8EB, kích thước tệp tối đa 8EB)
  • XT4 (kích thước hệ thống tệp tối đa 8EB, kích thước tệp tối đa 16TB)
  • BTRFS (kích thước hệ thống tệp tối đa 16EB, kích thước tệp tối đa 16EB)

Cài đặt hệ thống tệp mặc định sẽ áp dụng tốt.

NTP Deamon

Bạn nên cài đặt máy chủ thời gian NTP quỷ trên máy chủ cơ sở dữ liệu. Sử dụng một trong các lệnh hệ thống sau.

#Red Hat
yum install ntp
#Debian
sudo apt-get install ntp

Kết luận

Đây là tất cả cho phần một. Trong phần tiếp theo, chúng tôi sẽ tiếp tục với các cài đặt hệ điều hành biến MySQL và các truy vấn hữu ích để thu thập trạng thái hoạt động của cơ sở dữ liệu.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi MySql 150 - Khóa ngoại

  2. Cách thiết lập sao chép không đồng bộ từ Galera Cluster sang máy chủ MySQL độc lập với GTID

  3. Khóa SQL, MUL so với PRI và UNI

  4. Giám sát cơ sở dữ liệu của bạn với MySQL Enterprise Monitor

  5. MySql cập nhật hai bảng cùng một lúc