标签: performance

慢查询不记录

我正在尝试在我们的服务器上启用慢查询日志记录,以便识别任何可以使用优化的查询。听起来很简单,但是我的文件没有被写入。我没有收到任何错误或类似的信息,它似乎没有记录缓慢的查询。我记得在我的配置更改后重新启动 mysql。

我使用的是 MySQL Ver 5.1.61 。这是我在 my.cnf 中的内容:

slow-query-log=1
slow-query-log-file=/var/logs/my.slow.log
long_query_time=1
Run Code Online (Sandbox Code Playgroud)

文件 /var/logs/my.slow.log 有 mysql 作为所有者,也是为了调试,我对日志文件中的所有内容进行了读/写。

我在上面将 long_query_time 设置为 1,因为我只想看看它是否有效。我试过将它设置得更低(例如 0.3),但我仍然没有得到任何记录。我知道我的应用程序运行的查询需要超过 1 秒的时间,而且我还特意SELECT sleep(10);在终端中运行了日志查询 ( ) 以进行测试,但日志仍然是空的。

我已经浏览了文档,从我所看到的这应该是有效的。有人对我做错了什么有任何建议吗?任何建议将不胜感激,非常感谢!

编辑:如评论中所问,我运行了查询:

 `SELECT variable_value FROM information_schema.global_variables WHERE variable_name IN ('slow_query_log','slow_query_log_file','long_query_time');`
Run Code Online (Sandbox Code Playgroud)

结果:

10.0000000
/var/run/mysqld/mysqld-slow.log
OFF
Run Code Online (Sandbox Code Playgroud)

显然我的配置更改没有被考虑在内,因为我相信这些是默认值。我很确定我正在修改的 my.cnf 文件正在被解析,就好像我输入了一个无效值,mysql 在重启时会出错。这里会发生什么?

另一个编辑:

在接受@RolandoMySQLDBA 的建议并将我的慢查询配置行移到[mysqld]我的设置下后,似乎正在节省。现在上述 variable_value 查询的结果是:

1.0000000
/var/logs/my.slow.log
ON
Run Code Online (Sandbox Code Playgroud)

但是我仍然没有看到文件 my.slow.log 被写入。我认为这不是权限问题,因为该文件归 mysql 所有,并且我已为该文件的所有用户添加了所有权限。谁能想到这行不通的原因?

编辑:解决了!慢查询日志的路径不正确,它应该是 /var/log/my.slow.log 而不是 /var/log* s */my.slow.log 。感谢大家的帮助,我学会了allot!

mysql performance optimization slow-log

13
推荐指数
1
解决办法
2万
查看次数

MySQL:左外连接和内连接哪个连接更好

如果所有连接都提供相同的结果,哪个连接性能更好?例如,我有两个表employees(emp_id,name, address, designation, age, sex)work_log(emp_id,date,hours_wored). 获得一些特定的结果inner joinleft join给出相同的结果。但是,我还有一些疑问,不仅限于这个问题。

  • 如果结果值相同,哪个连接更有效?
  • 申请加入时必须考虑的其他因素是什么?
  • 内连接和交叉连接之间有什么关系吗?

mysql performance join query-performance

13
推荐指数
1
解决办法
4万
查看次数

大表中完全空的列如何影响性能?

我在 Postgres 数据库中有 4 亿行,表有 18 列:

id serial NOT NULL,
a integer,
b integer,
c integer,
d smallint,
e timestamp without time zone,
f smallint,
g timestamp without time zone,
h integer,
i timestamp without time zone,
j integer,
k character varying(32),
l integer,
m smallint,
n smallint,
o character varying(36),
p character varying(100),
q character varying(100)
Run Code Online (Sandbox Code Playgroud)

ekn都是 NULL,它们根本不存储任何值,此时完全没用。它们是原始设计的一部分,但从未被移除。

编辑 - 大多数其他列都是非 NULL。

问题:

  1. 如何计算这对存储的影响?它是否等于列的大小 * 行数?

  2. 删除这些空列会显着提高该表的性能吗?页面缓存能够容纳更多行吗?

postgresql performance database-design storage disk-space postgresql-performance

13
推荐指数
1
解决办法
4824
查看次数

如何解决 RESOURCE_SEMAPHORE 和 RESOURCE_SEMAPHORE_QUERY_COMPILE 等待类型

我们试图找出运行缓慢的 sql server 查询从其中一个数据库中命中/获取数据的根本原因,大小为 300 GB,托管在具有以下配置的服务器上:

Windows server 2003 R2, SP2, Enterprise Edition, 16 GB RAM, 12 CPU'S 32 Bit

SQL Server 2005,SP4,企业版,32 位。

我们已经通知企业升级到 64 位,这需要一个多月的时间。

但是对于当前的问题,我们正在尝试收集数据,如果我们可以解决内存压力或最终得出增加RAM的结论。

已完成操作:重新索引和更新统计信息适用于此数据库。

如下所示,过去 5 天我们一直在注意到信号量等待类型,在加载时间运行:

等待类型

以下查询后的信息很少:缓冲区大小= 137272

SELECT SUM(virtual_memory_committed_kb)
FROM sys.dm_os_memory_clerks
WHERE type='MEMORYCLERK_SQLBUFFERPOOL'
Run Code Online (Sandbox Code Playgroud)

和信号量内存 = 644024 每个以下查询

 SELECT SUM(total_memory_kb)
FROM sys.dm_exec_query_resource_semaphores
Run Code Online (Sandbox Code Playgroud)

下面是一些更多的信息,从采集dm_exec_query_resource_semaphoressys.dm_exec_query_memory_grantsDMV的

dmvs错误

所以从上面收集的信息和每个 SP_Blitz 数据资源信号量似乎是问题所在。

与可用的 16 GB RAM 相比,为资源信号量 ID 分配的内存“target_memory_kb”是否太低。

注意*每次运行 8 小时的分析“target_memory_kb”始终低于 1 GB,而可用 16 GB?

这里可能是什么问题以及如何解决,请提出建议

谢谢

performance sql-server-2005 sql-server

13
推荐指数
1
解决办法
2万
查看次数

在mysql服务器中识别没有慢查询日志的慢查询

我想知道有没有其他方法可以在不记录慢查询的情况下检查我们的慢查询。假设,我有一个非常繁忙的服务器无法记录太多以节省内存和 I/O。那么,有没有其他方法可以检查我的查询速度是否慢?我知道,我们可以对查询进行分析,但仍然不确定究竟要做什么来确定哪个查询占用了大部分时间和内存。

刚开始 mysql 管理,不知道如何处理。任何指导将不胜感激。

mysql performance slow-log

13
推荐指数
2
解决办法
4万
查看次数

为什么 where 子句过滤 `value()` 时不使用二级选择性索引?

设置:

create table dbo.T
(
  ID int identity primary key,
  XMLDoc xml not null
);

insert into dbo.T(XMLDoc)
select (
       select N.Number
       for xml path(''), type
       )
from (
     select top(10000) row_number() over(order by (select null)) as Number
     from sys.columns as c1, sys.columns as c2
     ) as N;
Run Code Online (Sandbox Code Playgroud)

每行的示例 XML:

<Number>314</Number>
Run Code Online (Sandbox Code Playgroud)

查询的任务是计算T指定值为 的行数<Number>

有两种明显的方法可以做到这一点:

select count(*)
from dbo.T as T
where T.XMLDoc.value('/Number[1]', 'int') = 314;

select count(*)
from dbo.T as T
where T.XMLDoc.exist('/Number[. eq 314]') = …
Run Code Online (Sandbox Code Playgroud)

performance xml sql-server execution-plan sql-server-2012 query-performance

13
推荐指数
1
解决办法
674
查看次数

postgres 在 ORDER BY "id" DESC LIMIT 1 上表现不佳

我有items以下架构的表(在 postgres v9.3.5 中):

  Column   | Type   |                         Modifiers                  | Storage  
-----------+--------+----------------------------------------------------+----------
 id        | bigint | not null default nextval('items_id_seq'::regclass) | plain    
 data      | text   | not null                                           | extended 
 object_id | bigint | not null                                           | plain    
Indexes:
    "items_pkey" PRIMARY KEY, btree (id)
    "items_object_id_idx" btree (object_id)
Has OIDs: no
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,它会挂起很长时间:

SELECT * FROM "items" WHERE "object_id" = '123' ORDER BY "id" DESC LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

在 VACUUM ANALYZE 之后,查询执行改进了很多,但仍然不完美。

# EXPLAIN ANALYZE SELECT * FROM "items" WHERE "object_id" …
Run Code Online (Sandbox Code Playgroud)

performance postgresql-9.3 slow-log postgresql-performance

13
推荐指数
2
解决办法
2万
查看次数

添加子查询时,PostgreSQL 查询速度非常慢

我对一个有 1.5M 行的表有一个相对简单的查询:

SELECT mtid FROM publication
WHERE mtid IN (9762715) OR last_modifier=21321
LIMIT 5000;
Run Code Online (Sandbox Code Playgroud)

EXPLAIN ANALYZE 输出:

Limit  (cost=8.84..12.86 rows=1 width=8) (actual time=0.985..0.986 rows=1 loops=1)
  ->  Bitmap Heap Scan on publication  (cost=8.84..12.86 rows=1 width=8) (actual time=0.984..0.985 rows=1 loops=1)
        Recheck Cond: ((mtid = 9762715) OR (last_modifier = 21321))
        ->  BitmapOr  (cost=8.84..8.84 rows=1 width=0) (actual time=0.971..0.971 rows=0 loops=1)
              ->  Bitmap Index Scan on publication_pkey  (cost=0.00..4.42 rows=1 width=0) (actual time=0.295..0.295 rows=1 loops=1)
                    Index Cond: (mtid = 9762715)
              ->  Bitmap Index Scan on …
Run Code Online (Sandbox Code Playgroud)

postgresql performance subquery hibernate query-performance

13
推荐指数
2
解决办法
1万
查看次数

查询在 SQL Server 2014 中慢 100 倍,行计数假脱机行估计罪魁祸首?

我有一个查询,它在SQL Server 2012中运行800 毫秒,在 SQL Server 2014中运行大约170 秒。我认为我已经将范围缩小到Row Count Spool运营商的基数估计不佳。我已经阅读了一些关于假脱机操作符的内容(例如,这里这里),但我仍然无法理解一些事情:

  • 为什么这个查询需要一个Row Count Spool运算符?我认为正确性没有必要,那么它试图提供什么特定的优化?
  • 为什么 SQL Server 估计到Row Count Spool操作符的连接会删除所有行?
  • 这是 SQL Server 2014 中的错误吗?如果是这样,我将在 Connect 中归档。但我想先有更深入的了解。

注意:我可以将查询重写为 aLEFT JOIN或向表添加索引,以便在 SQL Server 2012 和 SQL Server 2014 中实现可接受的性能。所以这个问题更多地是关于深入理解这个特定的查询和计划,而不是关于如何用不同的方式表达查询。


慢查询

请参阅此 Pastebin以获取完整的测试脚本。这是我正在查看的特定测试查询:

-- Prune any existing customers from the set of potential new customers
-- This query is much slower than …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-server-2014 cardinality-estimates query-performance

13
推荐指数
3
解决办法
4673
查看次数

为什么在进行差异备份时我的批处理请求会增加

我已经开始对 2012 SQL Server 上的各种活动进行一些长期跟踪,我注意到在增量备份期间批量请求有所增加。

举个例子,正常的日常我们大约每秒 10-20 个批处理请求,但在我们的差异备份运行期间,它跃升至每秒 100-130 个。

我知道这不是很多,但它让我好奇它增加了 10 倍是怎么回事。

不确定您可能需要哪些信息来帮助解决此问题。

performance sql-server backup

13
推荐指数
1
解决办法
103
查看次数