问题标签 [database-performance]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3221 浏览

sql - FAST_FORWARD 游标何时会有工作表(这是要避免的)?

背景

我注意到在尝试运行总查询时,有时估计的计划只显示“获取查询”

拿来

并且实际计划显示从聚集索引扫描中重复获取

获取扫描

在其他情况下(例如TOP,在查询中添加 a 时),估计的计划显示填充工作表的“Population Query”阶段

获取和填充

实际计划显示聚集索引扫描以填充工作表,然后重复查找该工作表。

寻求

问题

  1. SQL Server 在选择一种方法而不是另一种方法时使用什么标准?
  2. 我认为第一种方法(没有额外的工作表填充步骤)更有效吗?

(额外的问题:如果有人能解释为什么第一个查询中的每次扫描都算作 2 次逻辑读取,这可能也很有启发性)

附加信息

我在这里找到了这篇文章,它解释了FAST_FORWARD游标可以使用动态计划或静态计划。在这种情况下,第一个查询似乎使用动态计划,第二个查询似乎使用静态计划。

我还发现,如果我尝试

游标被隐式转换为keyset游标,因此很明显TOP动态游标不支持该构造,这可能是鲁本回答中的原因 - 仍在寻找对此的明确解释。

然而,我也读到动态游标往往比它们的静态游标(源 1源 2 ),这让我感到惊讶,因为静态类型必须读取源数据,复制它,然后读取副本而不仅仅是读取源数据。我之前引用的文章提到动态游标使用. 谁能解释这些是什么?它只是一个 RID 或 CI 密钥,还是不同的东西?markers

脚本

0 投票
1 回答
329 浏览

c# - Entity Framework 4.1 和数据库 (MySQL) 性能问题{当表包含 320 000 行时如何加快查询以返回第一条记录}

您好我使用 MySQL Connector/Net 6.3.5 和 Entity Framework 4.1。

在数据库中,我有大约 320 000 行的表,我按列进行简单查询。

我对性能有一点问题。它存在一些如何加快查询速度的技术或方法?

查询超时时间约为 6.3 秒,服务器不在本地。

这是我使用的方法:

0 投票
2 回答
1079 浏览

mysql - SQL 性能:哪个更快?IN() 与 JOIN

这是一个我从未得到明确答案的问题。我在这个例子中使用 MySQL。

给定一组相当大的值(比如说 500)。使用带有 IN() 子句的这些值搜索表是否更快:

或者通过在内存中创建一个临时表,用值填充它并将其连接到正在搜索的表中:

两种方法都会产生相同的结果集。

我自己做了一些基本的基准测试,发现当处理超过 500 个值时,使用临时表比使用 IN() 子句更快。

有人可以向我解释 MySQL 的内部工作原理吗?这个问题的正确答案是什么?

谢谢,狮子座

0 投票
1 回答
2402 浏览

mysql - mysql 调整变量 - 当前和默认值

我有一个非常普通的 mysql 5.1 设置,我正在尝试调整它。我发现了这个方便的脚本

它提出了以下建议:

在阅读这些含义以及它们当前设置的内容时,我发现我可以运行“mysqladmin variables”

我目前的价值观是:

我如何阅读这些,它们是千字节吗?那是1M,16M,13M和8M吗?

我的盒子只有 4G 的 Ram,在正常的一天只有几百兆的可用内存。我应该遵循这些建议并做:

我对15G感到困惑,这是磁盘空间的事情,而不是内存的事情?如果是这样,那么建议不是很好,对吧?

我应该为我的盒子获得更多内存吗?

更多信息: - 我的数据库大小是 34Gigs,我使用所有的 innodb,我有 71 个表,其中 4 个很大,其余的都很小。我一直在考虑将大的移动到 SOLR 并从那里进行所有查询,但想看看我能用基本调整做什么。

谢谢乔尔

0 投票
3 回答
981 浏览

mysql - 更新 IN MYSQL InnoDB 百万条记录

MYSQL Innodb 更新问题:

一旦我收到一条记录的响应(状态),我需要将响应更新到一个非常大的表(大约 100 万条记录并且会不断增加),这将继续发生,可能每秒 100 次。我可以知道会有任何性能问题吗?或者我可以修改的任何设置以避免表锁定或查询减慢问题。

谢谢。

0 投票
1 回答
697 浏览

.net - 哪个 NHibernate / SQL“存在”查询更有效(以及如何知道)?

我一直在分析 NHibernate 为以下代码片段生成的 SQL 查询。我认为代码 #1 会更有效,但是,生成的 SQL 让我怀疑。

1)bool any = Query.Where(user => user.Id == 1).Any();生成:

2)bool any = Query.Where(user => user.Id == 1).Count() > 1;生成:

哪个更有效率?将来,我将如何确定这一点?我正在使用甲骨文。

0 投票
1 回答
374 浏览

sql - T-SQL,计划作业中的多个更新

我一直在开发一个用作计划作业的查询。简而言之,我要对一个表进行一些具体的计算,并根据计算结果更新一些列(如STATE)。

一个样本(就像目前的样子)可以展示如下:



我在上面试图演示的是查询的流程。如上所示,我多次更新单个表,主要是根据不同的条件设置具有不同值的单个状态列。

我还必须使用 while 循环,而不是游标(因为性能不佳),因为需要根据这些条件用小组更新此表中的数据。

假设所有查询都包含在事务和 try-catch 块中。

最后,这是我的问题:由于这将是一个计划在晚上执行的工作,所以性能对我来说不是首要任务。但是,我无法弄清楚如何使用更清洁、更高效(性能方面)的查询来进行相同的操作。我需要一些建议。请注意,{some condition} 区域包含具有 EXISTS 功能的子查询。所以原始代码看起来比这要混乱得多。提前致谢。——奥赞

0 投票
1 回答
8517 浏览

database - 多个模式与巨大的表

考虑一个包含每个用户信息的移动设备管理器系统,例如存储他在手机上安装的应用程序的表、审核详细信息、通知信息等。为每个用户创建一个具有相应表的单独架构是否明智? ? 对于单个用户而言,表的数量很大,每个用户大约有 30 个表。最好有一个单独的模式,将所有这些信息放入这些表中(进而创建巨大的表?)还是为每个用户都有一个模式?

提前致谢

0 投票
3 回答
105 浏览

sql - 这两个查询之间会有任何性能差异吗?

1)

2)

我知道这些查询的结果是一样的。有性能差异吗?如果是,请解释原因。

0 投票
3 回答
1199 浏览

python - most performatic free database for file system tracking

I'm tracking a linux filesystem (that could be any type) with pyinotify module for python (which is actually the linux kernel behind doing the job). Many directories/folders/files (as much as the user want to) are being tracked with my application and now i would like track the md5sum of each file and store them on a database (includes every moving, renaming, new files, etc).

I guess that a database should be the best option to store all the md5sum of each file... But what should be the best database for that? Certainly a very performatic one. I'm looking for a free one, because the application is gonna be GPL.