Hướng dẫn slow query log mysql 8 - nhật ký truy vấn chậm mysql 8

5.4.1 & NBSP; Chọn nhật ký truy vấn chung và các điểm đến đầu ra của truy vấn chậm

Máy chủ MySQL cung cấp điều khiển linh hoạt đối với đích của đầu ra được ghi vào nhật ký truy vấn chung và nhật ký truy vấn chậm, nếu các nhật ký đó được bật. Các điểm đến có thể cho các mục nhật ký là các tệp nhật ký hoặc các bảng general_logslow_log trong cơ sở dữ liệu hệ thống mysql. Đầu ra tệp, đầu ra bảng hoặc cả hai có thể được chọn.

  • Kiểm soát nhật ký tại máy chủ khởi động

  • Kiểm soát nhật ký khi chạy

  • Lợi ích và đặc điểm của bảng nhật ký

Kiểm soát nhật ký tại máy chủ khởi động

Kiểm soát nhật ký khi chạy

  • Lợi ích và đặc điểm của bảng nhật ký

  • Biến hệ thống log_output chỉ định đích cho đầu ra nhật ký. Đặt biến này không tự cho phép nhật ký; Chúng phải được kích hoạt riêng.

Nếu log_output không được chỉ định khi khởi động, đích ghi nhật ký mặc định là FILE.

Nếu log_output được chỉ định khi khởi động, giá trị của nó là danh sách một hoặc nhiều từ được phân tách bằng dấu phẩy được chọn từ ____10 (đăng nhập vào bảng), FILE (đăng nhập vào tệp) hoặc

SET @old_log_state = @@GLOBAL.general_log;
SET GLOBAL general_log = 'OFF';
ALTER TABLE mysql.general_log ENGINE = MyISAM;
SET GLOBAL general_log = @old_log_state;
2 (không đăng nhập vào bảng hoặc tệp).
SET @old_log_state = @@GLOBAL.general_log;
SET GLOBAL general_log = 'OFF';
ALTER TABLE mysql.general_log ENGINE = MyISAM;
SET GLOBAL general_log = @old_log_state;
2, nếu có mặt, được ưu tiên hơn bất kỳ nhà xác định nào khác.

  • Biến hệ thống general_log kiểm soát việc đăng nhập vào nhật ký truy vấn chung cho các điểm đến nhật ký đã chọn. Nếu được chỉ định khi khởi động máy chủ, general_log sẽ lấy đối số tùy chọn là 1 hoặc 0 để bật hoặc tắt nhật ký. Để chỉ định tên tệp khác ngoài mặc định để ghi nhật ký tệp, hãy đặt biến

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    6. Tương tự, biến
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    7 kiểm soát đăng nhập vào nhật ký truy vấn chậm cho các điểm đến đã chọn và cài đặt
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    8 Chỉ định tên tệp để ghi nhật ký tệp. Nếu một trong hai nhật ký được bật, máy chủ sẽ mở tệp nhật ký tương ứng và ghi các thông báo khởi động vào nó. Tuy nhiên, việc đăng nhập thêm các truy vấn vào tệp không xảy ra trừ khi điểm đến nhật ký FILE được chọn.

  • Ví dụ:

  • Để viết các mục nhật ký truy vấn chung vào bảng nhật ký và tệp nhật ký, hãy sử dụng

    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    0 để chọn cả điểm đến nhật ký và
    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    1 để bật nhật ký truy vấn chung.

Kiểm soát nhật ký khi chạy

Lợi ích và đặc điểm của bảng nhật ký

  • Biến hệ thống log_output chỉ định đích cho đầu ra nhật ký. Đặt biến này không tự cho phép nhật ký; Chúng phải được kích hoạt riêng.

  • Nếu log_output không được chỉ định khi khởi động, đích ghi nhật ký mặc định là FILE.

  • Nếu log_output được chỉ định khi khởi động, giá trị của nó là danh sách một hoặc nhiều từ được phân tách bằng dấu phẩy được chọn từ ____10 (đăng nhập vào bảng), FILE (đăng nhập vào tệp) hoặc

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    2 (không đăng nhập vào bảng hoặc tệp).
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    2, nếu có mặt, được ưu tiên hơn bất kỳ nhà xác định nào khác.

  • Biến hệ thống general_log kiểm soát việc đăng nhập vào nhật ký truy vấn chung cho các điểm đến nhật ký đã chọn. Nếu được chỉ định khi khởi động máy chủ, general_log sẽ lấy đối số tùy chọn là 1 hoặc 0 để bật hoặc tắt nhật ký. Để chỉ định tên tệp khác ngoài mặc định để ghi nhật ký tệp, hãy đặt biến

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    6. Tương tự, biến
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    7 kiểm soát đăng nhập vào nhật ký truy vấn chậm cho các điểm đến đã chọn và cài đặt
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    8 Chỉ định tên tệp để ghi nhật ký tệp. Nếu một trong hai nhật ký được bật, máy chủ sẽ mở tệp nhật ký tương ứng và ghi các thông báo khởi động vào nó. Tuy nhiên, việc đăng nhập thêm các truy vấn vào tệp không xảy ra trừ khi điểm đến nhật ký FILE được chọn.

Lợi ích và đặc điểm của bảng nhật ký

Biến hệ thống log_output chỉ định đích cho đầu ra nhật ký. Đặt biến này không tự cho phép nhật ký; Chúng phải được kích hoạt riêng.

  • Nếu log_output không được chỉ định khi khởi động, đích ghi nhật ký mặc định là FILE.

    SHOW CREATE TABLE mysql.general_log;
    SHOW CREATE TABLE mysql.slow_log;
  • Nếu log_output được chỉ định khi khởi động, giá trị của nó là danh sách một hoặc nhiều từ được phân tách bằng dấu phẩy được chọn từ ____10 (đăng nhập vào bảng), FILE (đăng nhập vào tệp) hoặc

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    2 (không đăng nhập vào bảng hoặc tệp).
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    2, nếu có mặt, được ưu tiên hơn bất kỳ nhà xác định nào khác.

  • Biến hệ thống general_log kiểm soát việc đăng nhập vào nhật ký truy vấn chung cho các điểm đến nhật ký đã chọn. Nếu được chỉ định khi khởi động máy chủ, general_log sẽ lấy đối số tùy chọn là 1 hoặc 0 để bật hoặc tắt nhật ký. Để chỉ định tên tệp khác ngoài mặc định để ghi nhật ký tệp, hãy đặt biến

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    6. Tương tự, biến
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    7 kiểm soát đăng nhập vào nhật ký truy vấn chậm cho các điểm đến đã chọn và cài đặt
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    8 Chỉ định tên tệp để ghi nhật ký tệp. Nếu một trong hai nhật ký được bật, máy chủ sẽ mở tệp nhật ký tương ứng và ghi các thông báo khởi động vào nó. Tuy nhiên, việc đăng nhập thêm các truy vấn vào tệp không xảy ra trừ khi điểm đến nhật ký FILE được chọn.

Ví dụ:

  • Để viết các mục nhật ký truy vấn chung vào bảng nhật ký và tệp nhật ký, hãy sử dụng

    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    0 để chọn cả điểm đến nhật ký và
    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    1 để bật nhật ký truy vấn chung.

  • Để viết các mục nhật ký truy vấn chung và chậm chỉ vào các bảng nhật ký, hãy sử dụng

    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    2 để chọn các bảng làm đích nhật ký và
    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    1 và
    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    4 để bật cả hai nhật ký.

  • Để ghi các mục nhật ký truy vấn chậm chỉ vào tệp nhật ký, hãy sử dụng

    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    5 để chọn các tệp làm đích nhật ký và
    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
    4 để bật nhật ký truy vấn chậm. Trong trường hợp này, vì đích nhật ký mặc định là FILE, bạn có thể bỏ qua cài đặt log_output.

    Các bảng nhật ký có thể được thay đổi để sử dụng công cụ lưu trữ slow_log6. Bạn không thể sử dụng slow_log0 để thay đổi bảng nhật ký đang được sử dụng. Nhật ký phải được vô hiệu hóa trước. Không có động cơ nào khác ngoài slow_log4 hoặc slow_log6 là hợp pháp cho các bảng nhật ký.

    Các bảng ghi nhật ký và quá nhiều tệp mở Lỗi. & NBSP; Nếu bạn chọn

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    0 làm đích nhật ký và các bảng nhật ký sử dụng công cụ lưu trữ slow_log4, bạn có thể thấy việc vô hiệu hóa và bật nhật ký truy vấn chung hoặc nhật ký truy vấn chậm trong thời gian chạy trong một số mô tả tệp mở cho tệp slow_log5, có thể dẫn đến một lỗi quá nhiều tệp mở. Để giải quyết vấn đề này, thực thi mysql3 hoặc đảm bảo rằng giá trị của mysql4 lớn hơn giá trị của mysql5.Too many open files Errors.  If you select
    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    0 as a log destination and the log tables use the slow_log4 storage engine, you may find that disabling and enabling the general query log or slow query log repeatedly at runtime results in a number of open file descriptors for the slow_log5 file, possibly resulting in a Too many open files error. To work around this issue, execute mysql3 or ensure that the value of mysql4 is greater than the value of mysql5.

  • Để tắt ghi nhật ký để bạn có thể thay đổi (hoặc thả) bảng nhật ký, bạn có thể sử dụng chiến lược sau. Ví dụ sử dụng nhật ký truy vấn chung; Quy trình cho nhật ký truy vấn chậm là tương tự nhưng sử dụng bảng slow_log và biến hệ thống

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
    7.

    SET @old_log_state = @@GLOBAL.general_log;
    SET GLOBAL general_log = 'OFF';
    ALTER TABLE mysql.general_log ENGINE = MyISAM;
    SET GLOBAL general_log = @old_log_state;
  • mysql8 là một hoạt động hợp lệ trên bảng nhật ký. Nó có thể được sử dụng để hết hạn các mục nhật ký.

  • mysql9 là một hoạt động hợp lệ trên bảng nhật ký. Bạn có thể đổi tên nguyên tử một bảng nhật ký (ví dụ để thực hiện xoay vòng nhật ký) bằng chiến lược sau:

    USE mysql;
    DROP TABLE IF EXISTS general_log2;
    CREATE TABLE general_log2 LIKE general_log;
    RENAME TABLE general_log TO general_log_backup, general_log2 TO general_log;
  • log_output0 là một hoạt động hợp lệ trên bảng nhật ký.

  • log_output1 không thể được sử dụng trên bảng nhật ký.

  • log_output2, log_output3 và log_output4 không thể được sử dụng trên bảng nhật ký. Các hoạt động này chỉ được phép nội bộ cho chính máy chủ.

  • log_output5 và trạng thái của biến hệ thống log_output6 không ảnh hưởng đến các bảng nhật ký. Máy chủ luôn có thể ghi vào các bảng nhật ký.

  • Các mục được ghi vào các bảng nhật ký không được ghi vào nhật ký nhị phân và do đó không được sao chép thành các bản sao.

  • Để xóa các bảng nhật ký hoặc tệp nhật ký, hãy sử dụng log_output7 hoặc log_output8, tương ứng.

  • Việc phân vùng bảng nhật ký không được phép.

  • Một bãi rác MySQLDump bao gồm các câu lệnh để tạo lại các bảng đó để chúng không bị thiếu sau khi tải lại tệp kết xuất. Nội dung bảng nhật ký không được bỏ.mysqldump dump includes statements to recreate those tables so that they are not missing after reloading the dump file. Log table contents are not dumped.


Làm cách nào để kích hoạt truy vấn nhật ký chậm trong mysql?

Để vô hiệu hóa hoặc bật nhật ký truy vấn chậm hoặc thay đổi tên tệp nhật ký khi chạy, hãy sử dụng các biến hệ thống slow_query_log và slow_query_log_file toàn cầu. Đặt slow_query_log thành 0 để vô hiệu hóa nhật ký hoặc thành 1 để bật nó.use the global slow_query_log and slow_query_log_file system variables. Set slow_query_log to 0 to disable the log or to 1 to enable it.

Làm cách nào để khắc phục các truy vấn chạy chậm trong mysql?

Để điều chỉnh một truy vấn, hãy xem xét các cách tiếp cận sau:..
Để tìm các trạng thái nơi dành nhiều thời gian nhất, hãy hồ sơ các truy vấn chậm hơn của bạn.....
Chạy lệnh Hiển thị toàn bộ quy trình cùng với giám sát nâng cao.....
Sử dụng lệnh hiển thị lệnh trạng thái innodb của động cơ để có được thông tin về xử lý giao dịch, chờ đợi và bế tắc ..

Làm thế nào để tôi tìm thấy đường dẫn nhật ký truy vấn chậm trong MySQL?

Sử dụng mysqldumpslow để phân tích nhật ký truy vấn chậm..
sudo mysqldumpslow /var/log/mysql/mysql-slow.log ..
sudo mysqldumpslow -t 5 /var/log/mysql/mysql-slow.log ..
sudo mysqldumpslow -t 3 -s l /var/log/mysql/mysql-slow.log ..

Làm cách nào để đọc nhật ký truy vấn chậm?

Để làm cho việc đọc nội dung nhật ký dễ dàng hơn, bạn có thể sử dụng tiện ích dòng lệnh mysqldumpslow để xử lý tệp nhật ký truy vấn chậm và tóm tắt nội dung của nó: ~ $ mysqldumpslow -a/var/lib/mysql/slowquery.Nhật ký đọc nhật ký truy vấn chậm mysql từ/var/lib/mysql/slowquery.use the mysqldumpslow command-line utility to process a slow query log file and summarize its contents: ~ $ mysqldumpslow -a /var/lib/mysql/slowquery. log Reading mysql slow query log from /var/lib/mysql/slowquery.