Làm thế nào có thể tạo một truy vấn chậm trong mysql?


15

Tôi sẽ đưa ra một bài thuyết trình trong một vài tuần. Một phần của bản demo này là dành cho việc xử lý sự cố mysql cơ bản bao gồm sử dụng nhật ký truy vấn chậm. Tôi đã tạo một cơ sở dữ liệu và cài đặt ứng dụng của chúng tôi nhưng đó là một cơ sở dữ liệu sạch và do đó khó tạo ra đủ vấn đề.

Tôi đã thử các cách sau để nhận các truy vấn trong nhật ký truy vấn chậm:

Đặt thời gian truy vấn chậm thành 1 giây.

Đã xóa nhiều chỉ mục.

Nhấn mạnh hệ thống:

stress --cpu 100 --io 100 --vm 2 --vm-bytes 128M --timeout 1m

Viết kịch bản một số cuộc gọi trang web cơ bản bằng cách sử dụng wget.

Không ai trong số này đã tạo ra các truy vấn chậm. Có cách nào khác để nhấn mạnh một cách giả tạo cơ sở dữ liệu để tạo ra vấn đề không? Tôi không có đủ kỹ năng để viết một Jmeter phức tạp hoặc trình tạo tải khác. Tôi hy vọng có thể cho một cái gì đó được tích hợp vào mysql hoặc một thủ thuật linux khác ngoài căng thẳng.


1
+1 Để yêu cầu nhận được các thế kỷ chậm. Nếu chỉ có cách này trong trường hợp thực tế: D
đỏ

Câu trả lời:


5

Thanh toán mysqlslap . Bạn có thể chuyển một trong các truy vấn của ứng dụng web của mình bằng --query và chỉ định các máy khách đồng thời với --concurrency.


Điều này hoạt động tốt nhất ... bằng cách sử dụng này và kết hợp khử cơ sở dữ liệu.
Cuộc đua xám

34

Hoàn toàn nhân tạo nhưng bạn có thể sử dụng sleep()chức năng:

select sleep(10);

Trong nhật ký:

Time                 Id Command    Argument
# Time: 110629 16:19:13
# User@Host: mysql[mysql] @ localhost []
# Query_time: 10.000218  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
SET timestamp=1309389553;
select sleep(10);

Cảm ơn lời đề nghị ... Nó giúp nhật ký phát triển, nhưng tôi muốn có chúng là các truy vấn hợp pháp cho ứng dụng. Bằng cách này, tôi có thể demo giải thích và các công cụ chẩn đoán khác.
Cuộc đua xám

:) Hmm ... có thể một chiến lược LOCK TABLESsẽ hoạt động. Điều đó có thể là quá bùn là tốt.
Đánh dấu Wagner

1
Thường chọn * từ ((chọn * từ cơ sở dữ liệu) x) và tiếp tục nhận được nhiều hơn và khó khăn hơn đối với tôi.
alexyorke

Sử dụng DO SLEEP(10);nếu bạn không muốn kết quả SLEEP trong truy vấn của mình.
Rasmus Friis Kjeldsen

1

Có lẽ khử điều chỉnh cơ sở dữ liệu có thể giúp đỡ? Ví dụ: giảm kích thước key_buffers?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.