标签: database-performance

如果值相同,SQL Server是否足够智能不更新?

在工作中,我们一直在破解存储过程,我们发现了一些东西.

对于我们的一个更新语句,我们注意到如果值与先前的值相同,则我们获得了性能提升.

我们没有说

UPDATE t1 SET A=5
Run Code Online (Sandbox Code Playgroud)

列已经等于5.我们做了这样的事情:

UPDATE t1 SET A = Qty*4.3
Run Code Online (Sandbox Code Playgroud)

无论如何,如果值在UPDATE操作中评估为相同,或者我只是被其他一些现象所欺骗,那么SQL Server是否足够聪明不进行操作?

sql-server database-performance

6
推荐指数
1
解决办法
3117
查看次数

存储过程或代码

我不是在征求意见,而是在征集文件.

我们有很多数据文件(XML,CSV,Plantext等),需要处理它们,数据挖掘它们.

领导数据库人员建议使用存储过程来完成任务.基本上我们有一个临时表,文件被序列化,并保存到clob或XML列中.然后从那里他建议进一步使用存储过程来处理文件.

我是一名具有数据库背景的应用程序开发人员,在应用程序开发方面更是如此,我可能会有偏见,但在数据库中使用此逻辑似乎是一个坏主意,我无法找到任何文档证明或不赞成我所指的把汽车放在火车轨道上以拉动一大堆货物.

所以我的问题是:当我们谈论正则表达式搜索,搜索和替换clob,dom遍历,递归中的数据时,DB(Oracle,DB2,MySQL,SqlServer)的表现如何?与Java,PHP或C#等编程语言相比,在同一问题上.

编辑

所以我正在寻找的是与DBMS相比特定编程语言的比较/运行时分析的文档,特别是对于字符串搜索和替换,正则表达式搜索和替换.XML Dom遍历.递归方法调用的内存使用情况.特别是当遇到10-100的GB数据时,它们的扩展程度如何.

database stored-procedures data-mining data-processing database-performance

6
推荐指数
1
解决办法
1162
查看次数

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

针对字符串匹配优化的数据库/数据源?

我想存储大量(〜数千)字符串,并能够使用通配符执行匹配.

例如,以下是示例内容:

  • Folder1
  • Folder1/Folder2
  • Folder1/*
  • Folder1/Folder2/Folder3
  • Folder2/Folder*
  • */Folder4
  • */Fo*4

(每行也有附加数据,如标签,但匹配仅针对该键)

以下是我想要与数据匹配的示例:

  • Folder1
  • Folder1/Folder2/Folder3
  • Folder3

(*在这里是一个通配符,它​​可以是一个不同的角色)

我天真地考虑将它存储在MySQL表中并使用%通配符与LIKE操作符,但MySQL索引只适用于通配符左侧的字符,在我的情况下它可以在任何地方(即%/Folder3).

所以我正在寻找一种可以在PHP中使用的快速解决方案.我是开放的:它可以是一个单独的服务器,一个使用正则表达式文件的PHP库,...

php database datasource string-matching database-performance

6
推荐指数
1
解决办法
366
查看次数

MongoDB索引复杂度

我真的很喜欢MongoDB,我在工作和家庭中都使用它,但是还没有遇到性能,复杂性或限制性问题。但是我一直在思考索引,但有一个问题我找不到合适的答案。

大规模SQL数据库的主要问题之一是查询的相对复杂性。具体来说,MySQL对大多数索引使用b树,这种查询比线性查询要花O(log(n))更好,但仍然意味着您拥有的数据越多,花费的时间就越长。

NoSQL数据库的一大吸引力在于消除/缓解了这种扩展问题,通常依赖于哈希样式索引,该索引具有O(1)查找时间,因此拥有更多数据不会降低应用程序的运行速度。这是我的问题所在:

根据官方的MongoDB文档,Mongo中的所有索引都使用b树。尽管Mongo实际上确实具有哈希索引,但据我所知,它们仍存储在b树中,与_id字段上的索引相同。在Mongo的文档中,我什至找不到任何能表明恒定时间的东西!

所以我的问题是这样的:实际上,Mongo中的所有索引(包括_id和哈希值)是否都存储在b树中?这是否意味着查询键(甚至通过_id来查询)实际上需要O(log(n))时间?

附录:值得注意的是,如果Mongo文档在示例查询中提供了一些复杂度公式,那将是一件很棒的事情。我最喜欢的示例是Redis文档

另外:这是相关的。但是,我还添加了有关哈希索引和(更重要的是)_id索引的特定问题。

time-complexity mongodb database-performance query-performance

6
推荐指数
1
解决办法
3435
查看次数

提高第一次查询的性能

如果执行以下数据库(postgres)查询,则第二次调用要快得多.

我想第一个查询很慢,因为操作系统(linux)需要从磁盘获取数据.第二个查询受益于文件系统级别和postgres中的缓存.

有没有办法优化数据库,以便在第一次调用时快速获得结果?

第一次通话(慢)

foo3_bar_p@BAR-FOO3-Test:~$ psql

foo3_bar_p=# explain analyze SELECT "foo3_beleg"."id", ... FROM "foo3_beleg" WHERE 
foo3_bar_p-# (("foo3_beleg"."id" IN (SELECT beleg_id FROM foo3_text where 
foo3_bar_p(# content @@ 'footown'::tsquery)) AND "foo3_beleg"."belegart_id" IN 
foo3_bar_p(# ('...', ...));
                                                                                             QUERY PLAN                                                                                 
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Nested Loop  (cost=75314.58..121963.20 rows=152 width=135) (actual time=27253.451..88462.165 rows=11 loops=1)
   ->  HashAggregate  (cost=75314.58..75366.87 rows=5229 width=4) (actual time=16087.345..16113.988 rows=17671 loops=1)
         ->  Bitmap Heap Scan on foo3_text  (cost=273.72..75254.67 rows=23964 width=4) (actual time=327.653..16026.787 rows=27405 loops=1)
               Recheck Cond: (content @@ '''footown'''::tsquery)
               ->  Bitmap Index Scan on …
Run Code Online (Sandbox Code Playgroud)

sql postgresql performance disk-io database-performance

6
推荐指数
1
解决办法
2006
查看次数

当我的睡眠连接保持打开时,MySQL CPU会增加

我有一个MySQL 5.6.27-0ubuntu0.14.04.1,运行在带有4个CPU的Google Compute实例上.

我注意到如果我连接睡眠很长时间,那么服务器的CPU将以线性方式增加.我不明白为什么?如果我终止Sleep连接,那么CPU只是恢复到正确的用法.

总结一下,我有以下内容:我注意到我的实例的CPU正在增加: 在此输入图像描述

然后我检查服务器上的进程列表

mysql> show processlist
-> ;
+-------+--------+-------------------+----------------+---------+------+-------+------------------+
| Id    | User   | Host              | db             | Command | Time | State | Info             |
+-------+--------+-------------------+----------------+---------+------+-------+------------------+
| 85949 | nafora | paper-eee-2:58461 | state_recorder | Sleep   | 1300 |       | NULL             |
| 85956 | nafora | paper-eee-2:58568 | state_recorder | Sleep   |   64 |       | NULL             |
| 85959 | root   | localhost         | NULL           | Query   |    0 | init  | show processlist | …
Run Code Online (Sandbox Code Playgroud)

mysql cpu-usage database-performance

6
推荐指数
1
解决办法
1938
查看次数

用于连接django模型中数据的性能优化

在我的工作中,我经常在我的django模型中有两个表,并且必须连接它们以将此数据作为csv返回.该数据未通过外键连接,但它们具有连接它们的标识符.这是因为我们从两个不同的源导入这些数据,有时缺少对应的数据,因此在创建条目时无法连接它.

我的问题是:如果你想到我经常要返回这些数据,那么在性能方面连接这些数据的最佳方法是什么?

  1. 方式:创建一个新模型,将数据(如m2m)或父类与标识符连接起来,两者都连接到.
class OrderInvoiceConnector(models.Model):
    order_data = models.ForeignKey(Order, related_name="invoice")
    invoice_data = models.ForeignKey(Invoice, related_name="order")
Run Code Online (Sandbox Code Playgroud)
  1. 方式:创建一个仅保存csv导出所需数据的新模型.就像是:
class ConnectedData(models.Model):
    invoice_id = models.CharField(max_length=255)
    country_iso = models.CharField(max_length=255)
    invoice_date = models.CharField(max_length=255)
    tax = models.FloatField(max_length=255)
    price = models.FloatField()
Run Code Online (Sandbox Code Playgroud)

python django performance django-models database-performance

6
推荐指数
1
解决办法
57
查看次数

Postgresql在内存数据库django中

对于性能问题,我想在django的内存数据库中执行优化算法(我可能会执行很多查询).我知道在内存中可以使用sqlite(如何仅在内存中运行Django的测试数据库?)但我宁愿使用postgresql,因为我们的prod数据库是postgresql数据库.

有人知道如何告诉django在内存中创建postgresql数据库吗?

提前致谢

django postgresql database-performance

6
推荐指数
1
解决办法
2509
查看次数

如何加快Cosmos DB聚合查询的速度?

我们的cosmos db聚合查询似乎很慢,并且花费了很多RU。以下是详细信息(另请参见下面的屏幕截图):2.4s和3222RUs用于计数414k记录的结果集。而且这只是一个计数。通常,我们希望一次对多个字段求和(只能在单个分区内),但是这样做的性能要差得多。

宇宙数据库查询

此收藏集中有200万条记录。我们正在使用带有SQL API的Cosmos DB。该特定集合按country_code划分,在法国(“ FR”)中有414,732条记录,在美国有其余记录。文档大小平均为917字节,也许最小为800字节,最大为1300字节。

请注意,我们还尝试了更稀疏的分区键,例如device_id(此处有200万个,每个设备1个文档),此查询的结果较差。c.calcuated.flag1字段仅表示我们要保留的“状态”(实际上我想总结一下8个状态)。

该集合的索引是默认的,它使用“一致”索引模式,并索引所有字段(并包括Number和String的范围索引)。RU设置为20,000,并且数据库上没有其他活动。

因此,请让我知道您对此的想法。可以在不增加我们的RU费用和花费很长时间的情况下,合理地使用Cosmos DB来获取字段的总数或计数吗?尽管2.4s并不糟糕,但我们确实需要亚秒级的查询来进行此类操作。我们的应用程序(基于IoT)通常需要单个文档,但有时也需要在一个国家/地区的所有文档中进行此类计数。

有没有办法提高性能?

azure nosql database-performance azure-cosmosdb

6
推荐指数
1
解决办法
563
查看次数