标签: performance

将 MySQL 慢查询设置为小于 1 秒

我有一个负载很重的 LAMP 系统,每秒处理大约 40 个请求,每秒执行大约 300 个 MySQL 查询。这是 MySQLAdmin 状态的输出:

Uptime: 5051  Threads: 1  Questions: 1418500  Slow queries: 0  Opens: 456  
Flush tables: 1  Open tables: 450  Queries per second avg: 280.835
Run Code Online (Sandbox Code Playgroud)

但是,全局状态显示大约 5-10% 的表锁争用。

所以,我想弄清楚需要更长时间的查询。

是否可以将慢查询日志设置为小于一秒?对于我的查询,即使是 100 毫秒的执行时间也很长。

mysql performance

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

是否可以避免文件排序?

对于以下 SELECT 查询,是否可以避免“使用临时”和“使用文件排序”?我想不出办法做到这一点。

我尝试为 top_expire 和 program 添加索引,但没有帮助 ORDER BY 查询需要 1 秒以上,而没有它在 localhost 上仅为 0.003 秒

询问

SELECT ad.*, p.link
    FROM (SELECT ad.*
        FROM mod_ad ad 
        JOIN mod_ad_auta auta ON ad.id = auta.ad_id
        WHERE ad.active != 0 AND ad.usr_active != 0 AND ad.expire > 1371151608  AND ad.cat_id = '1' AND ad.price <= '10000' 
          AND auta.rocnik BETWEEN '1950' AND '2013' 
          AND auta.km BETWEEN '0' AND '500000'
        ORDER BY top_expire DESC, program DESC,  ad.id DESC  LIMIT 0,10) as ad
JOIN pages …
Run Code Online (Sandbox Code Playgroud)

mysql performance query-performance

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

事务日志 VLF 对性能有多重要?

在考虑数据库性能时,VLF 有多重要?什么会描述 VLF 的最佳情况?

performance sql-server transaction-log

12
推荐指数
1
解决办法
4741
查看次数

MySQL 在连接另一个表时不使用索引

我有两个表,第一个表包含 CMS 中的所有文章/博客文章。其中一些文章也可能出现在杂志中,在这种情况下,它们与包含杂志特定信息的另一个表具有外键关系。

这是这两个表的 create table 语法的简化版本,其中删除了一些非必要的行:

CREATE TABLE `base_article` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `date_published` datetime DEFAULT NULL,
  `title` varchar(255) NOT NULL,
  `description` text,
  `content` longtext,
  `is_published` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `base_article_date_published` (`date_published`),
  KEY `base_article_is_published` (`is_published`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `mag_article` (
    `basearticle_ptr_id` int(11) NOT NULL,
    `issue_slug` varchar(8) DEFAULT NULL,
    `rubric` varchar(75) DEFAULT NULL,
    PRIMARY KEY (`basearticle_ptr_id`),
    KEY `mag_article_issue_slug` (`issue_slug`),
    CONSTRAINT `basearticle_ptr_id_refs_id` FOREIGN KEY (`basearticle_ptr_id`) REFERENCES `base_article` (`id`)
) ENGINE=InnoDB DEFAULT …
Run Code Online (Sandbox Code Playgroud)

mysql performance index join order-by

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

提高 STIntersects 的性能

T_PIN有 300,000 个引脚和T_POLYGON36,000 个多边形。T_PIN有这个索引:

CREATE SPATIAL INDEX [T_PIN_COORD] ON [dbo].[T_PIN]
(
[Coord]
)USING  GEOGRAPHY_GRID 
WITH (GRIDS =(LEVEL_1 = HIGH,LEVEL_2 = HIGH,LEVEL_3 = HIGH,LEVEL_4 = HIGH), 
CELLS_PER_OBJECT = 128, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, 
SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, 
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY];
Run Code Online (Sandbox Code Playgroud)

T_POLYGON 已:

CREATE SPATIAL INDEX [T_POLYGON_COORD] ON [dbo].[T_POLYGON]
(
[COORD]
)USING  GEOGRAPHY_GRID 
WITH (GRIDS =(LEVEL_1 = HIGH,LEVEL_2 = HIGH,LEVEL_3 = HIGH,LEVEL_4 = HIGH), …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-server-2012 spatial query-performance

12
推荐指数
2
解决办法
6649
查看次数

MongoDB 性能与 PostgreSQL 的 550 万行/文档对比

有人可以帮我比较这些查询并解释为什么 PostgreSQL 查询的执行时间不到 2000 毫秒,而 MongoDB 聚合查询需要将近 9000 毫秒,有时甚至高达 130K 毫秒吗?

PostgreSQL 9.3.2 on x86_64-apple-darwin, compiled by i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00), 64-bit
Run Code Online (Sandbox Code Playgroud)

PostgreSQL 查询

SELECT locomotive_id,
   SUM(date_trunc('second', datetime) - date_trunc('second', prevDatetime)) AS utilization_time

FROM bpkdmp 
WHERE datetime >= '2013-7-26 00:00:00.0000' 
AND   datetime <= '2013-7-26 23:59:59.9999'
GROUP BY locomotive_id
order by locomotive_id
Run Code Online (Sandbox Code Playgroud)

MongoDB 查询

db.bpkdmp.aggregate([
   {
      $match : {
          datetime : { $gte : new Date(2013,6,26, 0, 0, 0, 0), $lt : new …
Run Code Online (Sandbox Code Playgroud)

postgresql performance mongodb

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

为大量 INSERTS 和 bytea 更新优化 PostgreSQL

我们有什么(软件):

  • 带有基本配置的PostrgeSQL 9.3(在 中没有变化postgresql.conf
  • 视窗 7 64 位

硬件:

  • 英特尔酷睿 i7-3770 3.9 GHz
  • 32 Gb 内存
  • WDC WD10EZRX-00L4HBATa 驱动器(1000Gb,SATA III)

所以,我们必须加载到数据库 aprox。100.000.000行与bytea列,以及更简单的500.000.000行(无 LOB)。varchar第一个表上有 2 个索引(长度为 13、19),varchar第二个表上有 2个索引(长度为 18、10)。每个表也有生成 id 的序列。

到目前为止,这些操作使用 8 个并行连接和 50 个 JDBC 批处理大小进行。下图展示了系统负载:它对postgresql进程是零负载。加载 24 小时后,我们只加载了 10.000.000 行,这是非常缓慢的结果。

在此处输入图片说明

我们寻求帮助调整PostrgreSQL配置的目的是:

1)为了超快加载这个数量的数据,它是一次性操作,所以它可以是临时配置

2) 对于生产模式,通过它们的索引对这 2 个表执行中等数量的 SELECT,无需连接和排序。

performance insert database-tuning postgresql-9.3 bytea performance-tuning

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

在 SQL 中比较两个大型数据集的有效方法

目前,我正在比较两个包含独特StoreKey/ProductKey组合的数据集。

第一个数据集具有StoreKey/ProductKey2012 年 1 月开始到 2014 年 5 月结束之间的唯一销售组合(结果 = 450K 行)。第二个数据集具有独特的StoreKey/ProductKey组合,销售从 2014 年 6 月开始,直到今天(结果 = 190K 行)。

我正在寻找StoreKey/ProductKey属于第 2 组但不在第 1 组的组合 - 即从 6 月初开始销售的新产品。

到目前为止,我已将两个数据集转储到临时表中,为两个表的两个键创建索引,并使用该EXCEPT语句查找唯一项。

比较如此大的数据集的最有效方法是什么?有没有更有效的方法来进行这种大型比较?

performance sql-server sql-server-2008-r2 except query-performance

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

PostgreSQL - 如果我同时运行多个查询,在什么情况下我会看到加速?在什么情况下我会看到放缓?

作为一个非 DBA 的人,我谦虚地对待你们,我确信我的问题充满了概念上的缺陷,并且“这取决于”地雷。我也很确定,你们所有选择回答的人都会想要比我目前所能提供的更多的细节。

也就是说,我对以下情况感到好奇:

  • 假设我有两个重要的查询。
  • 查询 1 平均需要 2 分钟才能完成。
  • 查询 2 平均需要 5 分钟才能完成。

如果我连续运行它们,一个接一个地运行,我预计平均需要 7 分钟才能完成。这合理吗?

然而,更重要的是,如果我同时运行这两个查询呢?同时进行两个独立的连接。

  • 在什么条件下我会看到加速?(总时间 < 7 分钟)
  • 在什么情况下我会看到经济放缓?(总时间 > 7 分钟)

现在,如果我同时运行 1,000 个非平凡的查询,我有预感它会导致整体速度变慢。在这种情况下,瓶颈可能在哪里?处理器?内存?驱动器?

同样,我知道在不知道具体细节(我没有)的情况下可能无法准确回答这个问题。我正在寻找一些一般准则,以便在提出以下问题时考虑:

  • 在什么情况下并发查询会导致整体加速?
  • 在什么情况下并发查询会导致整体速度变慢?

postgresql performance concurrency query-performance

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

9990 的“缓冲区缓存命中率”是什么意思?

我从一篇博客文章中得到了这个查询:

SELECT object_name, counter_name, cntr_value
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Buffer Manager%'
AND [counter_name] = 'Buffer cache hit ratio'
Run Code Online (Sandbox Code Playgroud)

帖子说它会给我一定比例的缓存命中率。它似乎表明它将是一个 0-100 的值(它显示的结果为 87)。

但是当我运行它时,我得到了非常高的数字。下面是一个例子:

object_name               counter_name             cntr_value  
SQLServer:Buffer Manager  Buffer cache hit ratio   9990
Run Code Online (Sandbox Code Playgroud)

这是否意味着 99.90%?

如果不是,那是什么意思?我怎样才能得到真正的价值?

注意:我得到的值低至257,高至352363

如果它是相关的,这里有一些其他服务器统计信息:

  • 页面预期寿命:145
  • 页面读取/秒:1,380,009,009

performance sql-server sql-server-2012

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