问题标签 [database-tuning]

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 投票
1 回答
205 浏览

node.js - Speeding up my cloudant query

I was wondering whether someone could provide some advice on my cloudant query below. It is now taking upwards of 20 seconds to execute against a DB of 50,000 documents - I suspect I could be getting better speed than this.

The purpose of the query is to find all of my documents with the attribute "searchCode" equalling a specific value plus a further list of specific IDs.

Both searchCode and _id are indexed - any ideas why my query would be taking so long / what I could do to speed it up?

Thanks, James

0 投票
0 回答
233 浏览

python - Teradata 系统视图调整

我尝试使用 sqlalchemy 连接 teradata,以便使用 pandas 的 read_sql 和 to_sql 方法。

但是,连接速度太慢了。即使是简单的东西,例如 pd.read_sql('select current_date'),也需要 30 多秒才能完成。

我真的不明白为什么这么慢。如果有人以前遇到过类似的问题,请告诉我为什么以及如何解决这个问题。谢谢!

更新:
我尝试了 cProfile 和 sqlTAP 并意识到缓慢是由于方言生成的一些查询。has_table 肉类方法将运行对 dbc.tablesvx 视图的查询,该查询大约需要100 秒才能完成,而视图只有大约 55k 行。对于 pd.to_sql,这个 has_table 可能会被多次调用,并且需要对系统表进行一些其他查询。

似乎我需要做的就是对系统表进行一些调整,以使查询运行得更快。但是,我们的sql帮助人员告诉我,那些系统表已经处于最佳性能。这可能吗?有没有人对 teradata DBC 视图进行过任何调整?谢谢。

0 投票
1 回答
128 浏览

database - Oracle 索引包含另一个索引的所有列,正确或错误

我正在研究Oracle 12c数据库。我有一张桌子被查询了很多。一个查询在 where 子句中使用列 A 和 B,另一个查询在 where 子句中使用 A、B、C、D 和 E 列。我想加快查询速度。

我添加了 2 个非唯一索引,一个在A & B上,一个在A & B & C & D & E上,所以我的第二个索引实际上包括第一个索引列。这是正确的吗?技术错误?还是视情况而定?

在这种情况下,在不同列上查询表时,索引的最佳实践是什么?指数有什么影响?

0 投票
0 回答
1282 浏览

performance - postgresql缓存和交换内存增加

我有 postgresql(主从)基础设施。postgresql 服务器有 32 GB RAM 和 600 MB 交换空间。我们正在使用 java(tomcat) 应用程序。我已经使用http://pgtune.leopard.in.ua/执行了 postgresql 调优。但目前我的问题是,我的 postgresql 服务器缓存和交换内存会定期增加,并且在某些时候我们被迫清除缓存或重新启动 postgresql。能否请您告诉我背后的原因。以下是我的性能调整参数。其余参数为默认值。此外,我们正在使用 pgbarman 进行在其他服务器上配置的时间点备份。

0 投票
2 回答
6471 浏览

database - 如何找出 Oracle 10g 中访问次数最多或使用频率最高的表

我在获取 oracle 10g 中最常用的表时遇到了麻烦。我正在使用带有 EBS R12.1.3 应用程序的 Oracle 10g 版本 10.2.0.4.0。

请帮助我整理出我的数据库中最常用的表。

如果可能的话,我想获取 TableName、所有者以及在一个时间范围内访问它的次数。

我需要这个用于调整目的。

请提供查询以获得相同的结果。

提前致谢 !

0 投票
3 回答
3474 浏览

sql - 在索引计划中避免排序运算符

我有两个表 [LogTable] 和 [LogTable_Cross]。

下面是填充它们的模式和脚本:

我想选择所有那些给定用户ID的日志(来自LogTable)(用户ID将从交叉表LogTable_Cross中检查),日期为desc。

运行此查询后,这是我的执行计划: 在此处输入图像描述

如您所见,有一个排序运算符起作用,这可能是因为以下行“ORDER BY DateSent DESC”

我的问题是,即使我在表上应用了以下索引,为什么该 Sort 运算符仍会出现在计划中

另一方面,如果我删除连接并以这种方式编写查询:

计划更改为

在此处输入图像描述

即排序运算符被删除,计划显示我的查询正在使用我的非聚集索引。

即使我正在使用联接,这也是一种在我的查询计划中删除“排序”运算符的方法。

编辑

我更进一步,将“最大并行度”限制为 1

在此处输入图像描述

再次运行以下查询:

并且该计划仍然具有该 Sort 运算符:

在此处输入图像描述

编辑 2

即使我有以下建议的索引:

该计划仍然有排序运算符: 在此处输入图像描述

0 投票
0 回答
447 浏览

performance - 使用 jdbc 和 python phoenixdb 运行 Phoenix 的 Hbase 集群速度很慢

我有一个运行 HBase 的集群设置和一个 phoenix 查询服务器。目前我的集群包含一个主节点和 3 个从节点。我要连接的表由 124 列和总共 1600 万行组成。一个简单的COUNT(*)orDISTINCT "value"查询大约需要 1-2 分钟,据我了解,这不应该是这种情况 - Phoenix 有多快?为什么这么快?

在上面链接的文档中,对 1 亿行进行全表扫描大约需要 20 秒。而且由于我的表大小要小得多,我不明白为什么我的查询需要这么长时间。我可以做些什么来优化我的查询?我计划使用列族重建我的表(我知道这可以提高性能,但我想知道是否有其他方法可以快速提高性能,因为重建我当前的表将是一项非常艰巨的任务。

我正在使用 Phoenix 4.9 和 HBase 1.2。

0 投票
1 回答
727 浏览

windows - postgres windows 高效内存使用

我在具有 8 GB RAM 的笔记本电脑上的 Windows 10 上使用 Postgres 9.6(64 位)用于开发目的。该应用程序是具有 10 个 mio 记录的大表的批量海量数据处理。

我已经阅读了各种 Postgres 调优指南,以及之前在这里提出的问题/答案,我尝试了一些建议,但没有取得很大成功。

我知道我的笔记本电脑并不大,但是在查看性能监视器时,对于查询,我看到 Postgres 主要是写入(写入磁盘),读取很少,其中一个内核主要使用。我感兴趣的是记忆。我想知道为什么 Postgres 不使用它;它保持在 5.7GB “已使用”,但 8GB 可用。我的结论是 Postgres 决定将临时数据写入文件(内存映射文件),而不是使用内存。如果这是真的,也许我可以调整 Windows 并允许内存中的更多(文件)页面。无论如何,我的直觉是这与 Windows 上的 Postres 有关,而不是一个通用的 Postgres 问题。

有谁知道我可以如何配置 Postgres 和/或 Windows,以便 Postgres 更好地利用可用的(免费)内存?

非常感谢你的帮助

于尔根

0 投票
2 回答
385 浏览

performance - 如何设计在分析数据库上查询多个标签

我想在每笔交易中存储用户购买的自定义标签,例如,如果用户购买了鞋子,那么标签是"SPORTS", "NIKE", SHOES, COLOUR_BLACK, SIZE_12,..

这些标签是卖家有兴趣查询回以了解销售情况。

我的想法是,当新标签出现时,为该标签创建新代码(类似于哈希码,但顺序),代码从"a-z"26 个字母开始,然后"aa, ab, ac...zz"继续。现在,将一笔交易中给定的所有标签保存在tag (varchar)用 分隔的一列中"|"

让我们假设映射是(在应用程序级别)

所以存储上面的购买交易,标签会像tag="|a|z|ay|bc|cq|"现在允许卖家通过添加WHERE条件搜索所售鞋子的数量tag LIKE %|ay|%。现在的问题是我不能将索引(redshift db 中的排序键)用于“LIKE 以 % 开头”。那么如何解决这个问题,因为我可能有 1 亿条记录?不想全表扫描..

任何解决方案来解决这个问题?

Update_1:我没有遵循bridge table概念(交叉引用表),因为我想在搜索指定标签后对结果执行分组。当两个标签在单个事务中匹配时,我的解决方案将只给出一行,但桥表会给我两行?那么我的 sum() 将加倍。

我得到如下建议

EXISTS (SELECT 1 FROM transaction_tag WHERE tag_id = 'zz' and trans_id = tr.trans_id) 在 WHERE 子句中为每个标签一次(注意:假设 tr 是周围查询中事务表的别名)

我没有遵循这个;因为我必须对标签执行 AND 和 OR 条件,例如 ("SPORTS" AND "ADIDAS") ---- "SHOE" AND ("NIKE" OR "ADIDAS")

Update_2:我没有关注位域,因为不知道 redshift 有这种支持,所以我假设我的系统是否将有至少 3500 个标签,并为每个标签分配一个位;这导致每笔交易有 437 个字节,尽管最多只能为一笔交易提供 5 个标签。这里有什么优化吗?

解决方案_1:

我曾考虑将最小值(SMALL_INT)和最大值(SMALL_INT)与标签列一起添加,并对其应用索引。

所以像这样

所以我的列值是

并且搜索鞋子的查询(ay = 51)是

maxTag <= 51 AND tag LIKE %|ay|%

搜索 shoe(ay=51) AND SIZE_12 (cq=95) 的查询是

minTag >= 51 AND maxTag <= 95 AND tag LIKE %|ay|%|cq|%

这会带来什么好处吗?请提出任何替代方案。

0 投票
2 回答
5608 浏览

php - Laravel 中非常慢的 Eloquent 插入/更新查询

我有一个 laravel 应用程序,它必须insert/update在 for 循环中每秒记录数千条记录。我的问题是我的数据库insert/update速率是每秒100-150次写入。我增加了专用于我的数据库的RAM量,但没有运气。

在此处输入图像描述

有什么办法可以将mysql的写入速率提高到每秒数千条记录?

请为我提供性能调整的最佳配置

并且不要标记问题。我的代码是正确的。它不是代码问题,因为我对MONGODB没有任何问题。但我必须使用 mysql 。

我的存储引擎是InnoDB