mirror of
https://github.com/MariaDB/server.git
synced 2025-07-07 06:01:31 +03:00
Text conflict in mysql-test/suite/perfschema/r/dml_setup_instruments.result Text conflict in mysql-test/suite/perfschema/r/global_read_lock.result Text conflict in mysql-test/suite/perfschema/r/server_init.result Text conflict in mysql-test/suite/perfschema/t/global_read_lock.test Text conflict in mysql-test/suite/perfschema/t/server_init.test
196 lines
6.0 KiB
Plaintext
196 lines
6.0 KiB
Plaintext
# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; version 2 of the License.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, write to the Free Software Foundation,
|
|
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
|
|
|
##
|
|
## WL#4814, 4.1.4 FILE IO
|
|
##
|
|
## Functional testing of File IO
|
|
##
|
|
|
|
--source include/not_embedded.inc
|
|
--source include/have_perfschema.inc
|
|
|
|
UPDATE performance_schema.setup_instruments SET enabled = 'NO', timed = 'YES';
|
|
|
|
UPDATE performance_schema.setup_instruments SET enabled = 'YES'
|
|
WHERE name LIKE 'wait/io/file/%';
|
|
|
|
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
|
|
#
|
|
# TODO: Change to InnoDB when it gets instrumentation
|
|
#
|
|
|
|
CREATE TABLE t1 (id INT PRIMARY KEY, b CHAR(100) DEFAULT 'initial value')
|
|
ENGINE=MyISAM;
|
|
|
|
INSERT INTO t1 (id) VALUES (1), (2), (3), (4), (5), (6), (7), (8);
|
|
|
|
TRUNCATE TABLE performance_schema.events_waits_history_long;
|
|
TRUNCATE TABLE performance_schema.events_waits_history;
|
|
TRUNCATE TABLE performance_schema.events_waits_current;
|
|
|
|
#
|
|
# FF1: Count for file should increase with instrumentation enabled and
|
|
# FF2: Count for file should not increase with instrumentation disabled
|
|
#
|
|
|
|
SELECT * FROM t1 WHERE id = 1;
|
|
|
|
SET @before_count = (SELECT SUM(TIMER_WAIT)
|
|
FROM performance_schema.events_waits_history_long
|
|
WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
|
|
AND (OBJECT_NAME LIKE '%t1.MYD'));
|
|
|
|
SELECT IF(@before_count > 0, 'Success', 'Failure') has_instrumentation;
|
|
|
|
SELECT * FROM t1 WHERE id < 4;
|
|
|
|
SET @after_count = (SELECT SUM(TIMER_WAIT)
|
|
FROM performance_schema.events_waits_history_long
|
|
WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
|
|
AND (OBJECT_NAME LIKE '%t1.MYD') AND (1 = 1));
|
|
|
|
SELECT IF((@after_count - @before_count) > 0, 'Success', 'Failure') test_ff1_timed;
|
|
|
|
UPDATE performance_schema.setup_instruments SET enabled='NO';
|
|
|
|
SET @before_count = (SELECT SUM(TIMER_WAIT)
|
|
FROM performance_schema.events_waits_history_long
|
|
WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
|
|
AND (OBJECT_NAME LIKE '%t1.MYD') AND (2 = 2));
|
|
|
|
SELECT * FROM t1 WHERE id < 6;
|
|
|
|
SET @after_count = (SELECT SUM(TIMER_WAIT)
|
|
FROM performance_schema.events_waits_history_long
|
|
WHERE (EVENT_NAME = 'wait/io/file/myisam/dfile')
|
|
AND (OBJECT_NAME LIKE '%t1.MYD') AND (3 = 3));
|
|
|
|
SELECT IF((COALESCE(@after_count, 0) - COALESCE(@before_count, 0)) = 0, 'Success', 'Failure') test_ff2_timed;
|
|
|
|
#
|
|
# Check not timed measurements
|
|
#
|
|
|
|
UPDATE performance_schema.setup_instruments SET enabled = 'YES'
|
|
WHERE name LIKE 'wait/io/file/%';
|
|
|
|
UPDATE performance_schema.setup_instruments SET timed = 'NO';
|
|
|
|
TRUNCATE TABLE performance_schema.events_waits_history_long;
|
|
TRUNCATE TABLE performance_schema.events_waits_history;
|
|
TRUNCATE TABLE performance_schema.events_waits_current;
|
|
|
|
SELECT * FROM t1 WHERE id > 4;
|
|
|
|
SELECT * FROM performance_schema.events_waits_history_long
|
|
WHERE TIMER_WAIT != NULL
|
|
OR TIMER_START != NULL
|
|
OR TIMER_END != NULL;
|
|
|
|
SELECT * FROM performance_schema.events_waits_history
|
|
WHERE TIMER_WAIT != NULL
|
|
OR TIMER_START != NULL
|
|
OR TIMER_END != NULL;
|
|
|
|
SELECT * FROM performance_schema.events_waits_current
|
|
WHERE TIMER_WAIT != NULL
|
|
OR TIMER_START != NULL
|
|
OR TIMER_END != NULL;
|
|
|
|
UPDATE performance_schema.setup_instruments SET timed = 'YES';
|
|
|
|
SELECT * FROM t1 WHERE id < 4;
|
|
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# FF4: Use-case from Enterprise Monitor
|
|
#
|
|
|
|
--disable_result_log
|
|
SELECT SUM(COUNT_READ) AS sum_count_read,
|
|
SUM(COUNT_WRITE) AS sum_count_write,
|
|
SUM(SUM_NUMBER_OF_BYTES_READ) AS sum_num_bytes_read,
|
|
SUM(SUM_NUMBER_OF_BYTES_WRITE) AS sum_num_bytes_write
|
|
FROM performance_schema.file_summary_by_instance
|
|
WHERE FILE_NAME LIKE CONCAT('%', @@tmpdir, '%') ORDER BY NULL;
|
|
--enable_result_log
|
|
|
|
#
|
|
# FF5: Troubleshooting tasks
|
|
#
|
|
# These queries will give different results based on timing,
|
|
# but at least they should not crash.
|
|
#
|
|
|
|
#
|
|
# Total and average wait time for different events on system level
|
|
#
|
|
--disable_result_log
|
|
SELECT EVENT_NAME, COUNT_STAR, AVG_TIMER_WAIT, SUM_TIMER_WAIT
|
|
FROM performance_schema.events_waits_summary_global_by_event_name
|
|
WHERE COUNT_STAR > 0
|
|
ORDER BY SUM_TIMER_WAIT DESC
|
|
LIMIT 10;
|
|
--enable_result_log
|
|
|
|
#
|
|
# Total and average wait time for different users
|
|
#
|
|
|
|
## --disable_result_log
|
|
## SELECT i.user, SUM(TIMER_WAIT) SUM_WAIT
|
|
## # ((TIME_TO_SEC(TIMEDIFF(NOW(), i.startup_time)) * 1000) / SUM(TIMER_WAIT)) * 100 WAIT_PERCENTAGE
|
|
## FROM performance_schema.events_waits_history_long h
|
|
## INNER JOIN performance_schema.threads p USING (THREAD_ID)
|
|
## LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
|
## GROUP BY i.user
|
|
## ORDER BY SUM_WAIT DESC
|
|
## LIMIT 20;
|
|
## --enable_result_log
|
|
|
|
#
|
|
# Total and average wait times for different events for a session
|
|
#
|
|
--disable_result_log
|
|
SELECT h.EVENT_NAME, SUM(h.TIMER_WAIT) TOTAL_WAIT
|
|
FROM performance_schema.events_waits_history_long h
|
|
INNER JOIN performance_schema.threads p USING (THREAD_ID)
|
|
WHERE p.PROCESSLIST_ID = 1
|
|
GROUP BY h.EVENT_NAME
|
|
HAVING TOTAL_WAIT > 0;
|
|
--enable_result_log
|
|
|
|
#
|
|
# Which user reads and writes data
|
|
#
|
|
|
|
## --disable_result_log
|
|
## SELECT i.user, h.operation, SUM(NUMBER_OF_BYTES) bytes
|
|
## FROM performance_schema.events_waits_history_long h
|
|
## INNER JOIN performance_schema.threads p USING (THREAD_ID)
|
|
## LEFT JOIN information_schema.PROCESSLIST i USING (ID)
|
|
## GROUP BY i.user, h.operation
|
|
## HAVING BYTES > 0
|
|
## ORDER BY i.user, h.operation;
|
|
## --enable_result_log
|
|
|
|
# Clean-up.
|
|
UPDATE performance_schema.setup_instruments SET enabled = 'YES';
|