问题标签 [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.
sql - FAST_FORWARD 游标何时会有工作表(这是要避免的)?
背景
我注意到在尝试运行总查询时,有时估计的计划只显示“获取查询”
并且实际计划显示从聚集索引扫描中重复获取
在其他情况下(例如TOP
,在查询中添加 a 时),估计的计划显示填充工作表的“Population Query”阶段
实际计划显示聚集索引扫描以填充工作表,然后重复查找该工作表。
问题
- SQL Server 在选择一种方法而不是另一种方法时使用什么标准?
- 我认为第一种方法(没有额外的工作表填充步骤)更有效吗?
(额外的问题:如果有人能解释为什么第一个查询中的每次扫描都算作 2 次逻辑读取,这可能也很有启发性)
附加信息
我在这里找到了这篇文章,它解释了FAST_FORWARD
游标可以使用动态计划或静态计划。在这种情况下,第一个查询似乎使用动态计划,第二个查询似乎使用静态计划。
我还发现,如果我尝试
游标被隐式转换为keyset
游标,因此很明显TOP
动态游标不支持该构造,这可能是鲁本回答中的原因 - 仍在寻找对此的明确解释。
然而,我也读到动态游标往往比它们的静态游标(源 1,源 2 )慢,这让我感到惊讶,因为静态类型必须读取源数据,复制它,然后读取副本而不仅仅是读取源数据。我之前引用的文章提到动态游标使用. 谁能解释这些是什么?它只是一个 RID 或 CI 密钥,还是不同的东西?markers
脚本
c# - Entity Framework 4.1 和数据库 (MySQL) 性能问题{当表包含 320 000 行时如何加快查询以返回第一条记录}
您好我使用 MySQL Connector/Net 6.3.5 和 Entity Framework 4.1。
在数据库中,我有大约 320 000 行的表,我按列进行简单查询。
我对性能有一点问题。它存在一些如何加快查询速度的技术或方法?
查询超时时间约为 6.3 秒,服务器不在本地。
这是我使用的方法:
mysql - SQL 性能:哪个更快?IN() 与 JOIN
这是一个我从未得到明确答案的问题。我在这个例子中使用 MySQL。
给定一组相当大的值(比如说 500)。使用带有 IN() 子句的这些值搜索表是否更快:
或者通过在内存中创建一个临时表,用值填充它并将其连接到正在搜索的表中:
两种方法都会产生相同的结果集。
我自己做了一些基本的基准测试,发现当处理超过 500 个值时,使用临时表比使用 IN() 子句更快。
有人可以向我解释 MySQL 的内部工作原理吗?这个问题的正确答案是什么?
谢谢,狮子座
mysql - mysql 调整变量 - 当前和默认值
我有一个非常普通的 mysql 5.1 设置,我正在尝试调整它。我发现了这个方便的脚本
它提出了以下建议:
在阅读这些含义以及它们当前设置的内容时,我发现我可以运行“mysqladmin variables”
我目前的价值观是:
我如何阅读这些,它们是千字节吗?那是1M,16M,13M和8M吗?
我的盒子只有 4G 的 Ram,在正常的一天只有几百兆的可用内存。我应该遵循这些建议并做:
我对15G感到困惑,这是磁盘空间的事情,而不是内存的事情?如果是这样,那么建议不是很好,对吧?
我应该为我的盒子获得更多内存吗?
更多信息: - 我的数据库大小是 34Gigs,我使用所有的 innodb,我有 71 个表,其中 4 个很大,其余的都很小。我一直在考虑将大的移动到 SOLR 并从那里进行所有查询,但想看看我能用基本调整做什么。
谢谢乔尔
mysql - 更新 IN MYSQL InnoDB 百万条记录
MYSQL Innodb 更新问题:
一旦我收到一条记录的响应(状态),我需要将响应更新到一个非常大的表(大约 100 万条记录并且会不断增加),这将继续发生,可能每秒 100 次。我可以知道会有任何性能问题吗?或者我可以修改的任何设置以避免表锁定或查询减慢问题。
谢谢。
.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;
生成:
哪个更有效率?将来,我将如何确定这一点?我正在使用甲骨文。
sql - T-SQL,计划作业中的多个更新
我一直在开发一个用作计划作业的查询。简而言之,我要对一个表进行一些具体的计算,并根据计算结果更新一些列(如STATE)。
一个样本(就像目前的样子)可以展示如下:
我在上面试图演示的是查询的流程。如上所示,我多次更新单个表,主要是根据不同的条件设置具有不同值的单个状态列。
我还必须使用 while 循环,而不是游标(因为性能不佳),因为需要根据这些条件用小组更新此表中的数据。
假设所有查询都包含在事务和 try-catch 块中。
最后,这是我的问题:由于这将是一个计划在晚上执行的工作,所以性能对我来说不是首要任务。但是,我无法弄清楚如何使用更清洁、更高效(性能方面)的查询来进行相同的操作。我需要一些建议。请注意,{some condition} 区域包含具有 EXISTS 功能的子查询。所以原始代码看起来比这要混乱得多。提前致谢。——奥赞
database - 多个模式与巨大的表
考虑一个包含每个用户信息的移动设备管理器系统,例如存储他在手机上安装的应用程序的表、审核详细信息、通知信息等。为每个用户创建一个具有相应表的单独架构是否明智? ? 对于单个用户而言,表的数量很大,每个用户大约有 30 个表。最好有一个单独的模式,将所有这些信息放入这些表中(进而创建巨大的表?)还是为每个用户都有一个模式?
提前致谢
sql - 这两个查询之间会有任何性能差异吗?
1)
2)
我知道这些查询的结果是一样的。有性能差异吗?如果是,请解释原因。
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.