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

pt-query-inherit Alternatives - Quản lý và giám sát truy vấn MySQL với ClusterControl

Khi khối lượng công việc cơ sở dữ liệu của bạn quá căng thẳng, trước tiên bạn muốn xem những truy vấn nào đang chạy để xem mẫu của truy vấn. Viết có nặng không? Đọc nặng? Điểm nghẽn ở đâu?

Xác định Vấn đề Truy vấn

Để tìm ra nó, bạn có thể bật nhật ký chung hoặc nhật ký chậm để cố gắng nắm bắt các truy vấn đang chạy và ghi vào tệp. Bạn cũng có thể đọc từ nhật ký nhị phân (vì nhật ký nhị phân ghi lại tất cả các thay đổi trong cơ sở dữ liệu) và xem các lần đọc trực tiếp từ danh sách xử lý đang chạy trong cơ sở dữ liệu. Bạn thậm chí có thể nắm bắt truy vấn từ góc độ mạng bằng cách xem qua tcpdump.

Làm gì tiếp theo? Bạn có thể phân tích truy vấn được ghi vào tệp nhật ký chung, tệp nhật ký chậm, nhật ký nhị phân để kiểm tra xem có điều gì thú vị đang diễn ra (ví dụ:nút cổ chai trong truy vấn).

Percona có một công cụ để phân tích các truy vấn kiểu này, được đặt tên là pt-query-digan. Nó được bao gồm khi bạn cài đặt Bộ công cụ Percona, một tập hợp các công cụ tiện ích giúp DBA quản lý cơ sở dữ liệu của họ. Trong blog này, chúng ta sẽ xem xét công cụ này và cách nó so sánh với các tính năng Quản lý truy vấn của ClusterControl.

Quy trình Cài đặt

Kho lưu trữ Percona hỗ trợ hai gói Phân phối Linux để thiết lập, đó là phân phối gói dựa trên Debian và dựa trên RPM. Việc cài đặt rất đơn giản như hình dưới đây:

Gói dựa trên Debian (Ubuntu, Debian)

Định cấu hình kho lưu trữ gói Percona bằng cách tải xuống gói

wget https://repo.percona.com/apt/percona-release_latest.generic_all.deb

Sau đó cài đặt gói đã tải xuống bằng dpkg

sudo dpkg -i percona-release_latest.generic_all.deb

Sau đó, chỉ cần chạy cài đặt từ trình quản lý gói

sudo apt-get install percona-toolkit

Gói dựa trên RPM (RHEL, CentOS, Oracle Enterprise Linux, Amazon AMI)

Định cấu hình kho lưu trữ gói Percona bằng cách cài đặt trực tiếp gói rpm.

sudo yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm 

Sau đó, chỉ cần chạy cài đặt từ trình quản lý gói

sudo apt-get install percona-toolkit

Các tiện ích Percona sẽ được cài đặt trong máy của bạn và bạn chỉ cần sử dụng nó.

Phân tích Khối lượng Công việc Truy vấn

Có một số cách để tạo thống kê từ khối lượng công việc truy vấn bằng cách sử dụng pt-query-dig, dưới đây là lệnh cách thực hiện bằng cách sử dụng tệp truy vấn chậm, tệp chung, hiển thị danh sách xử lý trong cơ sở dữ liệu và đọc qua nhật ký nhị phân.

Tạo từ cơ sở dữ liệu danh sách xử lý hiển thị

pt-query-digest --processlist h=localhost,D=sbt,u=sbtest,p=12qwaszx --output slowlog > /tmp/slow_query.log

Tạo từ tệp truy vấn chậm / tệp truy vấn chung

pt-query-digest mysql-slow.log > /tmp/slow_query.log

Tạo từ bản ghi nhị phân. Trước khi bạn chạy pt-truy vấn-thông báo, bạn cần trích xuất nhật ký nhị phân sang định dạng có thể đọc được bằng cách sử dụng mysqlbinlog. Đừng quên thêm tùy chọn --type và nhập binlog làm nguồn.

pt-query-digest --type binlog mysql-bin.000001.txt > slow_query.log

Sau khi tạo xong tệp, bạn sẽ thấy báo cáo như hình dưới đây:

# 12s user time, 170ms system time, 27.44M rss, 221.79M vsz

# Current date: Sun May 10 21:40:47 2020

# Hostname: n2

# Files: mysql-1

# Overall: 94.92k total, 47 unique, 2.79k QPS, 27.90x concurrency ________

# Time range: 2020-05-10 21:39:37 to 21:40:11

# Attribute          total     min     max     avg     95%  stddev  median

# ============     ======= ======= ======= ======= ======= ======= =======

# Exec time           949s     6us      1s    10ms    42ms    42ms     2ms

# Lock time            31s       0      1s   327us    80us    11ms    22us

# Rows sent         69.36k       0     490    0.75    0.99   11.30       0

# Rows examine     196.34k       0     490    2.12    0.99   21.03    0.99

# Rows affecte      55.28k       0      15    0.60    0.99    1.26       0

# Bytes sent        13.12M      11   6.08k  144.93  299.03  219.02   51.63

# Query size        15.11M       5     922  166.86  258.32   83.13  174.84



# Profile

# Rank Query ID                      Response time  Calls R/Call V/M   Ite

# ==== ============================= ============== ===== ====== ===== ===

#    1 0xCE367F5CFFCAF46E816F682E... 162.6485 17.1%   199 0.8173  0.03 SELECT order_line? stock?

#    2 0x360F872745C81781F8F75EDE... 107.4898 11.3% 14837 0.0072  0.02 SELECT stock?

#    3 0xE0CE1933D0392DA3A42FAA7C... 102.2281 10.8% 14866 0.0069  0.03 SELECT item?

#    4 0x492B86BCB2B1AE1278147F95...  98.7658 10.4% 14854 0.0066  0.04 INSERT order_line?

#    5 0x9D086C2B787DC3A308043A0F...  93.8240  9.9% 14865 0.0063  0.02 UPDATE stock?

#    6 0x5812BF2C6ED2B9DAACA5D21B...  53.9681  5.7%  1289 0.0419  0.05 UPDATE customer?

#    7 0x51C0DD7AF0A6D908579C28C0...  44.3869  4.7%   864 0.0514  0.03 SELECT customer?

#    8 0xFFFCA4D67EA0A788813031B8...  41.2123  4.3%  3250 0.0127  0.01 COMMIT

#    9 0xFDDEE3813C59881488D9C47F...  36.0707  3.8%  1180 0.0306  0.02 UPDATE customer?

#   10 0x8FBBE0AFA061755CCC1C27AB...  31.6417  3.3%  1305 0.0242  0.03 UPDATE orders?

#   11 0x8AA6EB56551923DB9A49E40A...  23.3281  2.5%  1522 0.0153  0.04 SELECT customer? warehouse?

#   12 0xF34C10B3DA8DB048A630D4C7...  21.1662  2.2%  1305 0.0162  0.03 UPDATE order_line?

#   13 0x59DBA67188951C532AFC2598...  20.8006  2.2%  1503 0.0138  0.33 INSERT new_orders?

#   14 0xDADBEB0FBFA537F5D8722F42...  17.2802  1.8%  1290 0.0134  0.03 SELECT customer?

#   15 0x597A805ADA793440507F3334...  16.4394  1.7%  1516 0.0108  0.03 INSERT orders?

#   16 0x1B1EA568857A6AAC6544B44A...  13.9560  1.5%  1309 0.0107  0.05 SELECT new_orders?

#   17 0xCE3EDD98779478DE17154DCE...  12.1470  1.3%  1322 0.0092  0.05 INSERT history?

#   18 0x9DFD75E88091AA333A777668...  11.6842  1.2%  1311 0.0089  0.05 SELECT orders?

# MISC 0xMISC                         39.6393  4.2% 16334 0.0024   0.0 <29 ITEMS>



# Query 1: 6.03 QPS, 4.93x concurrency, ID 0xCE367F5CFFCAF46E816F682E53C0CF03 at byte 30449473

# This item is included in the report because it matches --limit.

# Scores: V/M = 0.03

# Time range: 2020-05-10 21:39:37 to 21:40:10

# Attribute    pct   total     min     max     avg     95%  stddev  median

# ============ === ======= ======= ======= ======= ======= ======= =======

# Count          0     199

# Exec time     17    163s   302ms      1s   817ms   992ms   164ms   816ms

# Lock time      0     9ms    30us   114us    44us    84us    18us    36us

# Rows sent      0     199       1       1       1       1       0       1

# Rows examine  39  76.91k     306     468  395.75  441.81   27.41  381.65

# Rows affecte   0       0       0       0       0       0       0       0

# Bytes sent     0  15.54k      79      80   79.96   76.28       0   76.28

# Query size     0  74.30k     382     384  382.35  381.65       0  381.65

# String:

# Databases    sbt

# Hosts        localhost

# Last errno   0

# Users        sbtest

# Query_time distribution

#   1us

#  10us

# 100us

#   1ms

#  10ms

# 100ms  ################################################################

#    1s  ####

#  10s+

# Tables

#    SHOW TABLE STATUS FROM `sbt` LIKE 'order_line6'\G

#    SHOW CREATE TABLE `sbt`.`order_line6`\G

#    SHOW TABLE STATUS FROM `sbt` LIKE 'stock6'\G

#    SHOW CREATE TABLE `sbt`.`stock6`\G

# EXPLAIN /*!50100 PARTITIONS*/

SELECT COUNT(DISTINCT (s_i_id))

                        FROM order_line6, stock6

                       WHERE ol_w_id = 1

                         AND ol_d_id = 1

                         AND ol_o_id < 3050

                         AND ol_o_id >= 3030

                         AND s_w_id= 1

                         AND s_i_id=ol_i_id

                         AND s_quantity < 18\G



# Query 2: 436.38 QPS, 3.16x concurrency, ID 0x360F872745C81781F8F75EDE9DD44246 at byte 30021546

# This item is included in the report because it matches --limit.

# Scores: V/M = 0.02

# Time range: 2020-05-10 21:39:37 to 21:40:11

# Attribute    pct   total     min     max     avg     95%  stddev  median

# ============ === ======= ======= ======= ======= ======= ======= =======

# Count         15   14837

# Exec time     11    107s    44us   233ms     7ms    33ms    13ms     3ms

# Lock time      1   522ms    15us   496us    35us    84us    28us    23us

# Rows sent     20  14.49k       1       1       1       1       0       1

# Rows examine   7  14.49k       1       1       1       1       0       1

# Rows affecte   0       0       0       0       0       0       0       0

# Bytes sent    28   3.74M     252     282  264.46  271.23    8.65  258.32

# Query size    19   3.01M     209     215  213.05  212.52    2.85  212.52

# String:

# Databases    sbt

# Hosts        localhost

# Last errno   0

# Users        sbtest

# Query_time distribution

#   1us

#  10us  #

# 100us  ##

#   1ms  ################################################################

#  10ms  #############

# 100ms  #

#    1s

#  10s+

# Tables

#    SHOW TABLE STATUS FROM `sbt` LIKE 'stock9'\G

#    SHOW CREATE TABLE `sbt`.`stock9`\G

# EXPLAIN /*!50100 PARTITIONS*/

SELECT s_quantity, s_data, s_dist_01 s_dist

                                                      FROM stock9

                                                    WHERE s_i_id = 60407 AND s_w_id= 2 FOR UPDATE\G

Như bạn có thể thấy trên kết quả báo cáo pt-truy vấn-thông báo ở trên, chúng tôi có thể chia thành 3 phần.

Báo cáo Tóm tắt

Có nhiều thông tin bạn có thể tìm thấy trong báo cáo tóm tắt, bắt đầu từ máy chủ tên máy chủ, ngày bạn thực hiện lệnh, thông tin liên quan đến truy vấn được ghi lại, QPS và chụp khung thời gian. Bên cạnh đó, bạn cũng có thể xem thống kê thời gian trên từng Thuộc tính.

# 12s user time, 170ms system time, 27.44M rss, 221.79M vsz

# Current date: Sun May 10 21:40:47 2020

# Hostname: n2

# Files: mysql-1

# Overall: 94.92k total, 47 unique, 2.79k QPS, 27.90x concurrency ________

# Time range: 2020-05-10 21:39:37 to 21:40:11

# Attribute          total     min     max     avg     95%  stddev  median

# ============     ======= ======= ======= ======= ======= ======= =======

# Exec time           949s     6us      1s    10ms    42ms    42ms     2ms

# Lock time            31s       0      1s   327us    80us    11ms    22us

# Rows sent         69.36k       0     490    0.75    0.99   11.30       0

# Rows examine     196.34k       0     490    2.12    0.99   21.03    0.99

# Rows affecte      55.28k       0      15    0.60    0.99    1.26       0

# Bytes sent        13.12M      11   6.08k  144.93  299.03  219.02   51.63

# Query size        15.11M       5     922  166.86  258.32   83.13  174.84

Lập hồ sơ truy vấn dựa trên xếp hạng

Bạn có thể thấy thông tin hữu ích trong truy vấn cấu hình.

# Profile

# Rank Query ID                      Response time  Calls R/Call V/M   Ite

# ==== ============================= ============== ===== ====== ===== ===

#    1 0xCE367F5CFFCAF46E816F682E... 162.6485 17.1%   199 0.8173  0.03 SELECT order_line? stock?

#    2 0x360F872745C81781F8F75EDE... 107.4898 11.3% 14837 0.0072  0.02 SELECT stock?

Có rất nhiều thông tin như truy vấn đang chạy, thời gian phản hồi của truy vấn (bao gồm cả tính toán phần trăm), số lượng lệnh gọi mà truy vấn đang thực hiện và số lần đọc trên mỗi cuộc gọi.

Phân phối Truy vấn

Thống kê phân phối truy vấn mô tả thông tin chi tiết dựa trên xếp hạng cấu hình truy vấn, bạn có thể xem đồng thời QPS, thông tin thống kê liên quan đến thuộc tính truy vấn.

# Query 1: 6.03 QPS, 4.93x concurrency, ID 0xCE367F5CFFCAF46E816F682E53C0CF03 at byte 30449473

# This item is included in the report because it matches --limit.

# Scores: V/M = 0.03

# Time range: 2020-05-10 21:39:37 to 21:40:10

# Attribute    pct   total     min     max     avg     95%  stddev  median

# ============ === ======= ======= ======= ======= ======= ======= =======

# Count          0     199

# Exec time     17    163s   302ms      1s   817ms   992ms   164ms   816ms

# Lock time      0     9ms    30us   114us    44us    84us    18us    36us

# Rows sent      0     199       1       1       1       1       0       1

# Rows examine  39  76.91k     306     468  395.75  441.81   27.41  381.65

# Rows affecte   0       0       0       0       0       0       0       0

# Bytes sent     0  15.54k      79      80   79.96   76.28       0   76.28

# Query size     0  74.30k     382     384  382.35  381.65       0  381.65

# String:

# Databases    sbt

# Hosts        localhost

# Last errno   0

# Users        sbtest

# Query_time distribution

#   1us

#  10us

# 100us

#   1ms

#  10ms

# 100ms  ################################################################

#    1s  ####

#  10s+

# Tables

#    SHOW TABLE STATUS FROM `sbt` LIKE 'order_line6'\G

#    SHOW CREATE TABLE `sbt`.`order_line6`\G

#    SHOW TABLE STATUS FROM `sbt` LIKE 'stock6'\G

#    SHOW CREATE TABLE `sbt`.`stock6`\G

# EXPLAIN /*!50100 PARTITIONS*/

SELECT COUNT(DISTINCT (s_i_id))

                        FROM order_line6, stock6

                       WHERE ol_w_id = 1

                         AND ol_d_id = 1

                         AND ol_o_id < 3050

                         AND ol_o_id >= 3030

                         AND s_w_id= 1

                         AND s_i_id=ol_i_id

                         AND s_quantity < 18\G

Ngoài ra còn có thông tin về phân phối thời gian truy vấn, máy chủ, người dùng và cơ sở dữ liệu.

Giám sát Truy vấn với ClusterControl

ClusterControl có tính năng Giám sát Truy vấn mà bạn có thể tìm thấy trong tab Giám sát Truy vấn như được hiển thị bên dưới.

Bạn có thể xem thông tin liên quan đến truy vấn được thực thi trong cơ sở dữ liệu, bao gồm thông tin thống kê và thời gian thực hiện. Bạn cũng có thể định cấu hình Cài đặt Giám sát Truy vấn vẫn nằm trên cùng một trang. Có một tùy chọn để bật truy vấn chậm và các truy vấn không sử dụng chỉ mục bằng cách nhấp vào Cài đặt

Bạn chỉ cần đặt Thời gian truy vấn dài, là ngưỡng của truy vấn phân loại lâu dài dựa trên thời gian thực thi. Ngoài ra, có một tùy chọn để bật truy vấn không sử dụng chỉ mục.

Kết luận

Việc giám sát và phân tích khối lượng công việc truy vấn có thể có lợi để bạn biết và hiểu khối lượng công việc cơ sở dữ liệu của mình, cả pt-query-crypt và ClusterControl Query Monitor đều cung cấp thông tin liên quan đến truy vấn đang chạy trong cơ sở dữ liệu để giúp bạn hiểu được điề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. Chạy một truy vấn mySQL như một công việc cron?

  2. Truyền một mảng đến một truy vấn bằng mệnh đề WHERE

  3. Trên Cập nhật khóa trùng lặp giống như chèn

  4. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Lỗi liên kết truyền thông

  5. 9 hàm date MySQL thực sự hữu ích và dễ nhớ