标签: sqlperformance

如何在oracle中测量查询的性能

我是Oracle db的新手.我有2个查询返回相同的结果集.我想衡量每个人的表现并选择更好的表现.如何使用Oracle SQL开发人员执行此操作?我记得读过某些工具提供统计数据.有关如何阅读这些统计数据的任何指示?

更新:正如Rob Van所建议的,我使用tkprof实用程序来查找查询的性能.我能理解的一些参数(计数,行,经过时间,执行时间),但大多数我不能.任何人都可以帮助我了解这些参数的重要性吗?以下是结果.

Query 1:
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ----------
Parse        1      0.01       0.01          0          0          0           0
Execute      1      0.00       0.00          0          0          0           0
Fetch       49      0.26       0.32         45        494          0       23959
------- ------  -------- ---------- ---------- ---------- ----------  ----------
total       51      0.28       0.33         45        494          0       23959

Query2:
call     count       cpu    elapsed       disk      query    current        rows
------- ------  -------- ---------- ---------- ---------- ----------  ---------- …
Run Code Online (Sandbox Code Playgroud)

sql oracle sqlperformance

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

人们用什么工具来衡量SQL Server数据库性能?

我已经尝试了许多用于监控SQL Server运行状况的技术,包括使用SQL Server 2008中内置的管理数据仓库功能,以及其他商业产品(如Confio Ignite 8),当然还有使用我自己的解决方案. perfmon,性能计数器和从动态管理视图和功能中收集各种信息.

我发现的是,虽然这些方法中的每一种都有自己的相关优势,但它们都有相关的弱点.我觉得实际上让组织内的人员认真监控SQL Server性能无论我们推出什么解决方案都必须非常简单和快速使用,必须提供某种形式的仪表板,并且监控行为必须具有最小化对生产数据库的影响(或许更重要的是,必须有可能证明这是事实).

所以我很想知道其他人正在使用什么来完成这项任务?有什么建议?

sqlperformance sql-server-2008

8
推荐指数
1
解决办法
4097
查看次数

更新查询中的性能问题

我对查询性能有一点疑问.基本上,我有超过1C记录的表.我有一个主键作为sl_id该表中的列.Currenly,我将表列更新statustrue(默认false)使用sl_id.

在我的程序中,我将在数组中具有sl_id唯一性status.我正在使用每个更新trueas sl_id(总是)sl_id.

我怀疑:

我应该通过指定每个更新IN状态的条件来使用每个更新查询吗?

(要么)

我应该使用sl_id运算符并将所有sl_id唯一值status放在一个查询中吗?

哪一个会更快?

给我一些建议.

sql postgresql sqlperformance

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

为什么SQL成本会以简单的"或"爆炸?

我有以下声明在我的数据中找到明确的名称(约1百万条目):

select Prename, Surname from person p1 
where Prename is not null and Surname is not null 
and not exists (
   select * from person p2 where (p1.Surname = p2.Surname OR p1.Surname = p2.Altname) 
   and p2.Prename LIKE CONCAT(CONCAT('%', p1.Prename), '%') and p2.id <> p1.id
) and inv_date IS NULL
Run Code Online (Sandbox Code Playgroud)

Oracle显示1477315000的巨额成本,并且执行不会在5分钟后结束.简单地将OR分成一个自己存在的子条款将性能提升到0.5秒,成本增加到45000:

select Prename, Surname from person p1 
where Prename is not null and Surname is not null 
and not exists (
   select * from person p2 where p1.Surname = p2.Surname and …
Run Code Online (Sandbox Code Playgroud)

sql oracle performance sqlperformance

7
推荐指数
1
解决办法
289
查看次数

SQL:WHERE IN()中的项目顺序是否重要?

WHERE IN子句中值的顺序是否重要?(如果这很重要,这是在Firebird SQL上)

如:

where field1 in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
Run Code Online (Sandbox Code Playgroud)

性能提升超过

where field1 in (3, 5, 10, 2, 1, 8, 6, 9, 4, 7)
Run Code Online (Sandbox Code Playgroud)

sql firebird sqlperformance

7
推荐指数
1
解决办法
1253
查看次数

SqlDependency性能

我有一个Web应用程序,它使用与其他Web应用程序共享的SQL Server数据库(我无法控制).我必须知道任何Web应用程序何时对数据库中的某些表进行更改.

我的第一个想法是使用SqlDependency(具体来说SqlTableDependency,因为我需要知道更改的数据),但我担心性能问题.

我想知道是否有任何性能比较SqlDependency(非SqlTableDependency),触发器(触发WS,exe等)和轮询.

我发现了一些问题和文章,但对我来说还不够清楚

其他信息:

  • 要监控的五个表
  • 每张桌子每秒约有1次更改
  • 表每天增长约100行

谢谢!

sql-server triggers polling sqlperformance sqldependency

7
推荐指数
2
解决办法
5820
查看次数

分区和max的慢查询性能问题

我有一个性能不佳的查询...我做错了什么?请帮助我,它在我的系统中执行了无数次,解决后将带给我通往天堂的阶梯

我使用sp_Blitz对系统进行了检查,未发现任何致命问题

这是查询:

SELECT MAX(F.id) OVER (PARTITION BY idstato ORDER BY F.id DESC) AS id
FROM jfel_tagxml_invoicedigi F
     INNER JOIN jfel_invoice_state S ON F.id = S.idinvoice
WHERE S.idstato = @idstato
  AND S.id = F.idstatocorrente
  AND F.sequence_invoice % @number_service_installed = @idServizio
ORDER BY F.id DESC,
         F.idstatocorrente OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY;
Run Code Online (Sandbox Code Playgroud)

这是查询计划

https://www.brentozar.com/pastetheplan/?id=SyYL5JOeE

我可以私下向您发送我的系统属性

更新:进行了一些修改,它是更好,但我认为可能会更好...这是新的查询:

SELECT MAX(F.id) AS id
FROM jfel_tagxml_invoicedigi F
     INNER JOIN jfel_invoice_state S ON F.id = S.idinvoice
WHERE S.idstato = @idstato
  AND S.id = F.idstatocorrente …
Run Code Online (Sandbox Code Playgroud)

sql-server max sqlperformance query-performance

7
推荐指数
1
解决办法
241
查看次数

将数据集与EXCEPT组合在一起检查LEFT JOIN中的IS NULL

我目前正在通过Microsoft SQL Server 2008 - 数据库开发(MCTS考试70-433)认证.在前面有关组合数据集的章节中,我遇到了EXCEPT(和INTERSECT)命令.一个示例显示如何使用EXCEPT从第一个表中没有相关值的表中获取所有值,如下所示:

SELECT EmployeeKey FROM DimEmployee
EXCEPT
SELECT EmployeeKey FROM FactResellerSales
Run Code Online (Sandbox Code Playgroud)

这个EXCEPT命令对我来说是新的,但是根据我今天所知道的,我仍然可以使用a轻松地解决问题,LEFT JOINIS NULL通过以下方式检查连接约束:

SELECT DISTINCT DimEmployee.EmployeeKey FROM DimEmployee
LEFT JOIN FactResellerSales ON FactResellerSales.EmployeeKey = DimEmployee.EmployeeKey
WHERE FactResellerSales.EmployeeKey IS NULL
Run Code Online (Sandbox Code Playgroud)

现在我开始怀疑其中哪一个具有最佳性能.我试图研究查询执行计划,但我不太擅长阅读这些,所以它并没有让我更聪明.对于使用的查询EXCEPT,计划如下所示:

|--Nested Loops(Left Anti Semi Join, OUTER REFERENCES:([AdventureWorksDW2008].[dbo].[DimEmployee].[EmployeeKey], [Expr1006]) WITH UNORDERED PREFETCH)
    |--Index Scan(OBJECT:([AdventureWorksDW2008].[dbo].[DimEmployee].[IX_DimEmployee_SalesTerritoryKey]))
    |--Top(TOP EXPRESSION:((1)))
        |--Index Seek(OBJECT:([AdventureWorksDW2008].[dbo].[FactResellerSales].[IX_FactResellerSales_EmployeeKey]), SEEK:([AdventureWorksDW2008].[dbo].[FactResellerSales].[EmployeeKey]=[AdventureWorksDW2008].[dbo].[DimEmployee].[EmployeeKey]) ORDERED FORWARD)
Run Code Online (Sandbox Code Playgroud)

对于使用LEFT JOIN它的人看起来像这样:

|--Stream Aggregate(GROUP BY:([AdventureWorksDW2008].[dbo].[DimEmployee].[EmployeeKey])) …
Run Code Online (Sandbox Code Playgroud)

sql-server sqlperformance sql-server-2008 sql-execution-plan

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

SQL提示在执行之前将整个表加载到RAM中?

我正在OLAP环境中的一些非常大的表上运行一些聚合查询.我目前受到磁盘IO的瓶颈,速度为200 MB/s.

我正在使用92 GB RAM的机器上进行这些查询.是否有任何SQL提示我可以写入我的查询,基本上告诉SQL在执行之前将整个表加载到RAM中?

就像是:

从myTable中选择*(ramdisk)

我正在使用MS TSQL.

sql sql-server olap ramdisk sqlperformance

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

使用nvarchar作为外键怎么样?

到目前为止,我的外键一直是uniqueidentifiers或int.

如果我使用nvarchar字段作为外键,它会对性能产生负面影响吗?我还应该关注其他任何考虑因素吗?

sql sql-server sqlperformance sql-server-2008

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