Làm cách nào để đo hiệu suất của truy vấn MySQL?

Có nhiều thành phần liên quan đến việc xây dựng cơ sở dữ liệu, từ tính toán và lưu trữ cơ bản đến điều chỉnh hệ thống khác nhau có thể được thực hiện ngay cho chính cơ sở dữ liệu. Sử dụng đo điểm chuẩn cơ sở dữ liệu có thể hỗ trợ cả việc quản lý kỳ vọng về cách hệ thống sẽ hoạt động dưới một mức tải cụ thể và xác định bất kỳ vấn đề nào trước khi chúng ảnh hưởng đến hoạt động kinh doanh. Đây là cách đánh giá hiệu suất của MySQL

Công cụ điểm chuẩn MySQL

Có một số công cụ có thể được sử dụng để đánh giá hiệu suất của cơ sở dữ liệu MySQL

  • DBT2 – DBT (Database Test Suite) là một bộ công cụ kiểm tra khối lượng công việc cơ sở dữ liệu. DBT2 là một phiên bản cụ thể của bộ thử nghiệm mô phỏng ứng dụng xử lý giao dịch trực tuyến (OLTP) cho một công ty đang điều hành nhiều công ty. Nó chứa hỗn hợp các giao dịch đọc và ghi bao gồm Đơn hàng mới, Nhập đơn hàng, Trạng thái đơn hàng, Thanh toán và Xử lý hàng tồn kho
  • HammerDB – Một công cụ nguồn mở và đa nền tảng để kiểm tra tải cơ sở dữ liệu. Dựa trên các tiêu chuẩn ngành như TPC-C và TPC-H
  • Sysbench – Cung cấp khả năng đo điểm chuẩn đa luồng và có thể lập trình cho Linux. Có các kịch bản đi kèm cho cơ sở dữ liệu OLTP, hệ thống tệp, CPU, luồng bộ nhớ và điểm chuẩn mutex

Cách Benchmark hiệu suất MySQL

Trong hướng dẫn này, sysbench sẽ được sử dụng làm công cụ để đánh giá cơ sở dữ liệu MySQL. Sysbench là một công cụ đo điểm chuẩn hiệu suất cơ sở dữ liệu rất linh hoạt và có thể mở rộng. Nó sử dụng. lua để tạo kịch bản thử nghiệm. Trong hướng dẫn này, tpcc Percona-Lab. khối lượng công việc lua và sysbench sẽ được kết hợp để giới thiệu cách chạy điểm chuẩn trên hệ thống Linux

Bước 1. Thêm kho lưu trữ sysbench vào hệ thống và cài đặt nó

Thêm kho lưu trữ sysbench vào hệ thống cục bộ cho phép trình quản lý gói hệ thống cài đặt và cập nhật sysbench. Khi kho lưu trữ đã được thêm vào thì gói có thể được cài đặt

Bước này sẽ khác nhau dựa trên bản phân phối Linux

Debian/Ubuntu

cuộn tròn -s https. //gói đám mây. io/cài đặt/kho/akopytov/sysbench/script. cuộc tranh luận. sh. sudo bash

Sudo apt -y cài đặt sysbench

RHEL/CentOS

cuộn tròn -s https. //gói đám mây. io/cài đặt/kho/akopytov/sysbench/script. vòng/phút. sh. sudo bash

Sudo yum -y cài đặt sysbench

Fedora

cuộn tròn -s https. //gói đám mây. io/cài đặt/kho/akopytov/sysbench/script. vòng/phút. sh. sudo bash

Sudo dnf -y cài đặt sysbench

Vòm Linux

sudo pacman -Suy sysbench

Có thể truy cập bản thân Sysbench bằng cách sử dụng lệnh “sysbench”. Các. lua và kịch bản thử nghiệm được cài đặt để. /usr/share/sysbench/

[root@DB-01 ~]# ll /usr/share/sysbench

tổng cộng 60

-rwxr-xr-x. 1 root root 1448 24 tháng 4 2020 bulk_insert. lúa

-rw-r–r–. 1 gốc gốc 14369 24 tháng 4 năm 2020 oltp_common. lúa

-rwxr-xr-x. 1 root root 1286 24 Tháng Tư 2020 oltp_delete. lúa

-rwxr-xr-x. 1 gốc gốc 2411 24 tháng 4 năm 2020 oltp_insert. lúa

-rwxr-xr-x. 1 gốc gốc 1261 24 tháng 4 năm 2020 oltp_point_select. lúa

-rwxr-xr-x. 1 gốc gốc 1645 24 tháng 4 năm 2020 oltp_read_only. lúa

-rwxr-xr-x. 1 root root 1820 24 tháng 4 2020 oltp_read_write. lúa

-rwxr-xr-x. 1 root root 1114 24 tháng 4 năm 2020 oltp_update_index. lúa

-rwxr-xr-x. 1 root root 1123 24 tháng 4 năm 2020 oltp_update_non_index. lúa

-rwxr-xr-x. 1 gốc gốc 1436 24 tháng 4 năm 2020 oltp_write_only. lúa

-rwxr-xr-x. 1 root root 1915 24 tháng 4 2020 select_random_points. lúa

-rwxr-xr-x. 1 root root 2114 24 tháng 4 2020 select_random_ranges. lúa

drwxr-xr-x. 4 root root 49 Sep 20 06. 03 bài kiểm tra

Bước 2. Sao chép kho lưu trữ Percona TPCC từ GitHub

Khối lượng công việc TPCC của Percona-Lab là khối lượng công việc giống như TPCC cho sysbench 1. 0. x. Nó khác với tiêu chuẩn theo một số cách

  • Không sử dụng các trường văn bản hoàn toàn ngẫu nhiên. Điều này cho phép đánh giá các phương thức nén khác nhau trong các công cụ lưu trữ MySQL khác nhau
  • Nhiều bộ bảng – Cho phép sử dụng nhiều hơn 9 bảng tiêu chuẩn, mang lại sự linh hoạt hơn trong các tình huống thử nghiệm. Bạn có thể tìm thêm thông tin về khối lượng công việc giống như TPCC của Percona trong blog này

Trên hệ thống nơi điểm chuẩn đang chạy, đảm bảo rằng gói git được cài đặt bằng trình quản lý gói có liên quan

Sau khi gói git được cài đặt, kho lưu trữ Percona-Lab/sysbench-tpcc có thể được sao chép bằng lệnh sau

bản sao git https. //github. com/Percona-Lab/sysbench-tpcc /usr/share/sysbench/percona

[root@DB-01 ~]# ll /usr/share/sysbench/percona/

tổng số 92

-rw-r–r–. 1 gốc gốc 11342 20 tháng chín 06. 04 GIẤY PHÉP

-rw-r–r–. 1 root root 984 Sep 20 06. 04 ĐỌC. md

-rw-r–r–. 1 gốc gốc 12320 20 tháng chín 06. 04 tpcc_check. lúa

-rw-r–r–. 1 gốc gốc 21290 Sep 20 06. 04 tpcc_common. lúa

-rwxr-xr-x. 1 root root 1863 Sep 20 06. 04 tpcc. lúa

-rwxr-xr-x. 1 gốc gốc 28573 20 tháng chín 06. 04 tpcc_run. lúa

-rw-r–r–. 1 root root 1369 Sep 20 06. 04 tpcc-scm-1. rockspec

Bước 3. Sao chép tập lệnh Percona TPCC vào thư mục sysbench

Để đảm bảo giải quyết sự phụ thuộc,. tập lệnh lua cho kho lưu trữ Percona-Lab/sysbench-tpcc cần được sao chép vào thư mục sysbench. Điều này có thể được thực hiện bằng cách sử dụng lệnh cp trong Linux để sao chép các tệp

cp /usr/share/sysbench/percona/* /usr/share/sysbench/

[root@DB-01 ~]# ll /usr/share/sysbench

tổng số 152

-rwxr-xr-x. 1 root root 1448 24 tháng 4 2020 bulk_insert. lúa

-rw-r–r–. 1 gốc gốc 11342 20 tháng chín 06. 07 GIẤY PHÉP

-rw-r–r–. 1 gốc gốc 14369 24 tháng 4 năm 2020 oltp_common. lúa

-rwxr-xr-x. 1 root root 1286 24 Tháng Tư 2020 oltp_delete. lúa

-rwxr-xr-x. 1 gốc gốc 2411 24 tháng 4 năm 2020 oltp_insert. lúa

-rwxr-xr-x. 1 gốc gốc 1261 24 tháng 4 năm 2020 oltp_point_select. lúa

-rwxr-xr-x. 1 gốc gốc 1645 24 tháng 4 năm 2020 oltp_read_only. lúa

-rwxr-xr-x. 1 root root 1820 24 tháng 4 2020 oltp_read_write. lúa

-rwxr-xr-x. 1 root root 1114 24 tháng 4 năm 2020 oltp_update_index. lúa

-rwxr-xr-x. 1 root root 1123 24 tháng 4 năm 2020 oltp_update_non_index. lúa

-rwxr-xr-x. 1 gốc gốc 1436 24 tháng 4 năm 2020 oltp_write_only. lúa

drwxr-xr-x. 3 root root 158 ​​Sep 20 06. 04 percona

-rw-r–r–. 1 root root 984 Sep 20 06. 07 ĐỌC. md

-rwxr-xr-x. 1 root root 1915 24 tháng 4 2020 select_random_points. lúa

-rwxr-xr-x. 1 root root 2114 24 tháng 4 2020 select_random_ranges. lúa

drwxr-xr-x. 4 root root 49 Sep 20 06. 03 bài kiểm tra

-rw-r–r–. 1 gốc gốc 12320 20 tháng chín 06. 07 tpcc_check. lúa

-rw-r–r–. 1 gốc gốc 21290 Sep 20 06. 07 tpcc_common. lúa

-rwxr-xr-x. 1 root root 1863 Sep 20 06. 07 tpcc. lúa

-rwxr-xr-x. 1 gốc gốc 28573 20 tháng chín 06. 07 tpcc_run. lúa

-rw-r–r–. 1 root root 1369 Sep 20 06. 07 tpcc-scm-1. rockspec

Bước 4. Chuẩn bị cơ sở dữ liệu cho điểm chuẩn

Để chạy điểm chuẩn, cơ sở dữ liệu cần được chuẩn bị cho nó. Về cơ bản, điều này có nghĩa là cơ sở dữ liệu cần có các đối tượng thích hợp (bảng, ràng buộc, chỉ mục) được sắp xếp và điền dữ liệu trước khi chạy điểm chuẩn

Sysbench chấp nhận một số đối số cho phép mở rộng kịch bản thử nghiệm. Một số trong những lập luận này là

–threadsSố lượng luồng để chạy hoạt động tại. Điều này mô phỏng số lượng người dùng giải quyết cơ sở dữ liệu. Một số giá trị ví dụ là. 8, 16, 24, 32, 48, 64, 96, 128, 256, 512 và 1024. Số luồng càng cao thì việc sử dụng tài nguyên hệ thống càng nhiều. Mặc định là 1. –tablesSố lượng bảng cần tạo trong cơ sở dữ liệu/lược đồ. –scaleHệ số tỷ lệ (nhà kho) làm tăng lượng dữ liệu hoạt động trên tổng thể. Tăng –tables và –scale để tăng kích thước cơ sở dữ liệu và số lượng hàng được vận hành trên. Theo ước tính sơ bộ, 100 kho với 1 bộ bảng tạo ra khoảng 10 GB dữ liệu trong các bảng InnoDB không nén (vì vậy 100 kho với 10 bộ bảng cung cấp khoảng 100 GB – 50 bảng và 500 kho cung cấp 2. Kích thước cơ sở dữ liệu 5TB-3TB. )

 

Để CHUẨN BỊ cơ sở dữ liệu, đảm bảo cơ sở dữ liệu được tạo và chạy như sau (lưu ý thay thế các đối số bằng các giá trị bắt buộc

sysbench/usr/share/sysbench/tpcc. lua –threads=48 –tables=10 –scale=100 –db-driver=mysql –mysql-db=sbtest –mysql-user=DBtest –mysql-password=’password’ chuẩn bị

Bước 5. Chạy điểm chuẩn

Để CHẠY điểm chuẩn, hãy thực hiện như sau, đảm bảo các giá trị –scale và –table khớp với nhau. Tăng –threads để tăng căng thẳng cho hệ thống trong quá trình benchmark và –time (tính bằng giây) để tăng thời gian mà benchmark sẽ chạy

sysbench/usr/share/sysbench/tpcc. lua –threads=512 –time=300 –tables=10 –scale=100 –db-driver=mysql –mysql-db=sbtest –mysql-user=DBtest –mysql-password=’password’ chạy

Khi bài kiểm tra đã hoàn thành, một báo cáo sẽ được hiển thị với các số liệu thống kê điểm chuẩn khác nhau. Các số liệu thống kê quan trọng để so sánh với các hệ thống khác hoặc các tham số điều chỉnh là giao dịch mỗi giây, độ trễ và tính công bằng của luồng

  • Giao dịch mỗi giây cho biết có bao nhiêu giao dịch có thể được hoàn thành trong một giây. Một giá trị cao hơn là tốt hơn
  • Độ trễ biểu thị lượng thời gian trung bình cần để thực hiện các sự kiện. Sự kiện là đơn vị thực thi được xác định trong tập lệnh LUA cụ thể. Giá trị độ trễ thấp hơn sẽ tốt hơn
  • Tính công bằng của luồng là chỉ báo về số lượng sự kiện được thực hiện trung bình trên cơ sở mỗi luồng

Sử dụng các biện pháp này làm điểm so sánh, người ta có thể xác định xem việc điều chỉnh hoặc các thành phần phần cứng có dẫn đến thay đổi hiệu suất cơ sở dữ liệu hay không

thống kê SQL

các truy vấn được thực hiện

đọc. 30307535

viết. 31454182

khác. 4675434

toàn bộ. 66437151

giao dịch. 2336949 (7780. 70 mỗi giây. )

truy vấn. 66437151 (221197. 66 mỗi giây. )

lỗi bị bỏ qua. 10365 (34. 51 mỗi giây. )

kết nối lại. 0 (0. 00 mỗi giây. )

 

thống kê chung

Tổng thời gian. 300. 3504s

tổng số sự kiện. 2336949

Độ trễ (mili giây)

tối thiểu. 0. 54

trung bình. 65. 75

tối đa. 18566. 21

phần trăm thứ 95. 240. 02

Tổng. 153648098. 61

 

Chủ đề công bằng

sự kiện (avg/stddev). 4564. 3535/217. 24

thời gian thực hiện (avg/stddev). 300. 0939/0. 10

Bước 6. Dọn dẹp cơ sở dữ liệu

Để dọn dẹp cơ sở dữ liệu sau khi điểm chuẩn hoàn thành, hãy thực hiện thao tác sau với các giá trị phù hợp cho các bảng đã nhập

sysbench/usr/share/sysbench/percona/tpcc. lua –threads=48 –tables=10 –scale=100 –db-driver=mysql –mysql-db=sbtest –mysql-user=DBtest –mysql-password=’password’ dọn dẹp

Làm cách nào để theo dõi hiệu suất truy vấn MySQL?

6 công cụ hàng đầu để giám sát cơ sở dữ liệu MySQL .
Giám sát MySQL Sematext. Sematext là giải pháp quan sát toàn ngăn xếp Khả năng giám sát của MySQL. .
Công cụ quản lý và giám sát Percona (PMM).
Trình phân tích MySQL VividCortex. .
Màn hình doanh nghiệp MySQL. .
Cơ sở dữ liệu MySQL. .
Trình xuất Prometheus và MySQLD

Làm cách nào để kiểm tra thời gian chạy truy vấn trong MySQL?

Sau khi thực hiện, bạn có thể kiểm tra thời gian thực hiện truy vấn bằng truy vấn bên dưới. hiển thị hồ sơ ; . Những cách này phù hợp khi bạn muốn đo thời gian truy vấn cho một hoặc một số truy vấn.

Làm cách nào để kiểm tra hiệu suất truy vấn trong MySQL Workbench?

Xem thống kê hiệu suất máy chủ trong bảng điều khiển đồ họa. Để hiển thị trang tổng quan, mở tab truy vấn rồi nhấp vào Trang tổng quan từ khu vực Hiệu suất của thanh bên Bộ điều hướng với tab Quản lý được chọn . Hình dưới đây thể hiện cách bố trí thông tin trong tab Quản trị - Bảng điều khiển.