使用mysqldumpslow,我可以看到 MySQL 慢查询日志中最常见的条目具有以下形式:
SELECT /*!N SQL_NO_CACHE */ from wp_posts (or wp_comments).
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到有关此语句含义的太多信息,以及我是否需要足够担心它以尝试追踪 WordPress 创建此 SQL 的位置。
我有一个慢查询日志项目,内容如下:
Query_time: 55 Lock_time: 0 Rows_sent: 739 Rows_examined: 739
Run Code Online (Sandbox Code Playgroud)
除了对丢包的猜测之外,我组中没有人可以解释它。是否有一个共同的原因或一组原因导致上述结果?
我在慢查询日志中有这个条目:
# User@Host: user[host] @ [ip]
# Thread_id: 1514428 Schema: db Last_errno: 0 Killed: 0
# Query_time: 2.795454 Lock_time: 0.000116 Rows_sent: 15 Rows_examined: 65207 Rows_affected: 0 Rows_read: 65207
# Bytsent: 26618
SET timestamp=1407511874;
select off.*,translated_title,translated_description
from ephpb2b_products off USE INDEX(id_viewed)
INNER JOIN ephpb2b_members mem
ON off.uid = mem.id
Left Join ephpb2b_product_language_new pol
ON off.id = pol.offer_id
and pol.language='en'
where off.approved=1
order by off.viewed
LIMIT 15;
Run Code Online (Sandbox Code Playgroud)
当我解释这个查询时,它绝对没问题。
mysql> explain select off.*,translated_title,translated_description from ephpb2b_products off USE INDEX(id_viewed) INNER JOIN ephpb2b_members mem ON …Run Code Online (Sandbox Code Playgroud) 我一直在优化我的 MySQL 服务器,在调整了一些查询之后,我最终在 pt-query-digest 输出顶部得到了 COMMIT 项,如下面的摘录所示:
# 322s user time, 770ms system time, 71.75M rss, 223.13M vsz
# Current date: Sat Oct 1 11:12:58 2016
# Hostname: XXXX
# Files: /home/tools/Slow10.log
# Overall: 1.08M total, 1.47k unique, 61.74 QPS, 0.17x concurrency _______
# Time range: 2016-10-01 06:15:09 to 11:06:35
# Attribute total min max avg 95% stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 2913s 1us 14s 3ms 15ms 27ms 194us
# Lock …Run Code Online (Sandbox Code Playgroud) 我想通过从日志文件重新执行真实查询来评估不同 MySQL 实例的性能。我知道像 mysqlslap 这样的工具会产生随机和自动生成的查询,但我更愿意用真实的查询来测试系统。
为了对新系统进行基准测试,我最好使用慢日志或一般日志收集所有查询,然后将查询重播到新系统。
应该可以过滤查询,例如我只想重放 SELECT 语句。我想知道是否存在积极维护的程序或最佳实践来实现预热或基准测试功能。
Percona 提供了几种似乎是为此目的而设计的工具。所有这些都已从当前的 Percona 工具包中删除。这些工具是:
使用 Debian Wheezy docker 容器可以轻松访问提供 pt-log-player 的旧 Percona Toolkit 版本。运行容器docker run -it --network="host" --name wheezy debian:wheezy /bin/bash并在其中安装旧版本的工作原理:
apt-get update
apt-get install percona-toolkit mysql-client
Run Code Online (Sandbox Code Playgroud)
我也尝试过 percona-playback,但它似乎也没有得到非常积极的维护。这将是一个很棒的工具,但它几乎没有记录,而且我找不到仅过滤 SELECT 语句的方法,因为我不想运行其他 DML 语句。我只看到 Percona Server 提供了一个启用只读选项的标志,但这不适用于 vanilla MySQL 或 AWS RDS。
但是,我更愿意使用不依赖于未维护工具的程序。
有什么工具可以实现这一目标吗?过滤慢查询日志的最佳方法是什么?如何理智地重播查询?
这应该很容易,但是当我放上这些行时:
log_slow_queries = 1
long_query_time = 1
log-slow-queries = /var/log/mysql/slow_query.log
log_queries_not_using_indexes
Run Code Online (Sandbox Code Playgroud)
在 中[mysqld],MariaDB 无法重新启动。
我查看了文档,但无法弄清楚我的配置有什么问题。
另外,我已将文件权限设置为 /var/log/mysql/slow_query.log
# ls -al /var/log/mysql/slow_query.log
-rw-rw-r-- 1 mysql mysql 744682 Dec 4 23:46 /var/log/mysql/slow_query.log
Run Code Online (Sandbox Code Playgroud)
但是,我可以在命令行中设置参数:
SET GLOBAL slow_query_log_file = '/var/log/mysql/slow_query.log';
SET GLOBAL LONG_QUERY_TIME = 1;
SET GLOBAL slow_query_log = 'ON';
Run Code Online (Sandbox Code Playgroud)
并看到它们已设置:
+---------------------+--------------------------------------------------------------------------------------------------------------+
| Variable_name | Value |
+---------------------+--------------------------------------------------------------------------------------------------------------+
| log_slow_filter | admin,filesort,filesort_on_disk,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
| log_slow_rate_limit | 1 |
| log_slow_verbosity | |
| slow_launch_time | 2 |
| slow_query_log | …Run Code Online (Sandbox Code Playgroud) 该表有大约 1700 万行,是 MyISAM。
select DateModified,PELTM,PSLTM
from financial_key_ratios
where SecurityId = 4525
and DateModified >= '2015-01-07';
Run Code Online (Sandbox Code Playgroud)
这个简单的查询似乎需要超过 1 秒的时间。
索引似乎没问题。这是解释的输出:
explain
select DateModified,PELTM,PSLTM
from financial_key_ratios
where SecurityId = 4525
and DateModified >= '2015-01-07';
+----+-------------+----------------------+-------+------------------------------------------------+------------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------------+-------+------------------------------------------------+------------+---------+------+------+-------------+
| 1 | SIMPLE | financial_key_ratios | range | SecurityId,secid,DateModified_index,secid_date | secid_date | 7 | NULL | 156 | Using where |
+----+-------------+----------------------+-------+------------------------------------------------+------------+---------+------+------+-------------+
Run Code Online (Sandbox Code Playgroud)
我们可能做错了什么? …
我是 SQL 风速计的新手。我需要知道这个工具是否能够查询源数据库并实时分析慢查询日志?
我们最近从 SQL Server 2008 升级到新服务器并升级到 sql server 2016 (SP1 CU3)
新服务器硬件 hp proliant 580G8,4 插槽英特尔至强 E7 处理器,总共 60 个内核,640GB 内存,8 个英特尔 SSD S3700 Raid 10,本地
环境是一个繁忙的 OLTP 系统,每秒大约有 3K 批请求,主要是插入和较小程度的更新。作为 OLTP 系统,主要有 1 个插入/事务,因此有很多事务提交。有一些用于系统目的的报告查询(队列阅读器、监控等)
问题是日志刷新性能很慢,我们得到了 writelog 等待。我已经测试了 I/O,它可以在 4k 随机写入测试中管理超过 100K iops/sec,顺序写入高达 2500MB/sec
数据库兼容级别 = 130(sql server 2016)
间接检查点 = on,
甚低频计数 = 80-120
处理器 CPU 使用率为 3%-8%,平均为 5%,运行日志备份时最大低于 10%(压缩备份)总信号时间/总等待时间 = 6% - 94% 资源等待时间
内存 PLE 将每秒滴答一次,目前代表 584000 秒,可观察到的页面交换很少(页/秒)
这是我发现的真正问题
“日志刷新/秒”= 1000-2000/秒
“日志刷新等待时间”= 1000-4000 毫秒/秒
“日志刷新写入时间”= 0-1 毫秒/秒,峰值为 10-15 …
performance sql-server transaction-log sql-server-2016 slow-log
我在 Web 服务器上有许多带有会话表的网站,这些被 Joomla CMS 和 Symfony 框架系统使用。当slow_query_log=0.6 时,会话表的更新查询会定期出现在慢速日志中。
Joomla 会话表定义是
CREATE TABLE IF NOT EXISTS `jos_session` (
`username` varchar(150) DEFAULT '',
`time` varchar(14) DEFAULT '',
`session_id` varchar(200) NOT NULL DEFAULT '0',
`guest` tinyint(4) DEFAULT '1',
`userid` int(11) DEFAULT '0',
`usertype` varchar(50) DEFAULT '',
`gid` tinyint(3) unsigned NOT NULL DEFAULT '0',
`client_id` tinyint(3) unsigned NOT NULL DEFAULT '0',
`data` longtext,
PRIMARY KEY (`session_id`(64)),
KEY `whosonline` (`guest`,`usertype`),
KEY `userid` (`userid`),
KEY `time` (`time`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
我试过将存储引擎更改为 InnoDB 没有效果,我试过优化表并删除所有索引,但主要是。此表中有记录有存储空间
Data …Run Code Online (Sandbox Code Playgroud)