标签: performance

系统崩溃后Oracle变得太慢

我使用 Oracle 11.2 作为我的应用程序的数据库。为此,我应该将我的数据(大约 100m 记录)导入到这个数据库中。为此,我使用了 SQL Developer。

不幸的是,在导入过程中,我的系统崩溃并迫使我重新启动系统。系统启动后,与 Oracle 相关的一切都很奇怪:

  • 启动 Oracle 大约需要 10 分钟(系统崩溃前需要不到 10 秒)
  • SQL Developer 连接数据库的时间过长
  • 导入过程变慢了 10000 倍!

你能告诉我发生了什么,我该如何解决?

PS:从崩溃时间过去 24 小时后,性能变得更好,但仍远低于崩溃前。

performance oracle oracle-11g-r2 oracle-sql-developer

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

如何从命令行使用 psql 为 SQL 查询计时?

已经有一个问题“如何使用 psql 为 SQL 查询计时? ”但我缺少如何从命令行执行此操作的答案。如何从命令行运行带有(可选)计时\timing [on|off]的脚本- 请不要在脚本中运行?

postgresql performance psql query-performance

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

按 2 行结果排序会导致 800% 的性能下降

下面的查询,对一个大约 600 万行的表运行需要 25 秒。当我删除最终订单时,它会在 3 秒内运行。表上没有索引(它是一个中间 SSIS ETL 目标,后来被拉入 DW。)

它不是缓存。我以任何顺序多次运行它,结果一致。

查询本身会检查序列号中的差距。SSIS 将使用它来查看是否需要重新获取任何内容。

;with edges as
(
    select 
        ROW_NUMBER() over (partition by s1.SiteIDNumber order by s1.SequenceNumber) as rn,
        s1.SiteIDNumber, 
        s1.SequenceNumber
    from TestPlay s1
    left join TestPlay s2 on s2.SiteIDNumber = s1.SiteIDNumber and s2.SequenceNumber = s1.SequenceNumber + 1
    left join TestPlay s3 on s3.SiteIDNumber = s1.SiteIDNumber and s3.SequenceNumber = s1.SequenceNumber - 1
    where s2.SiteIDNumber is null 
    or s3.SiteIDNumber is null
),
gaps as
(
    select 
        e.rn,
        e.SiteIDNumber,
        e.SequenceNumber  + 1 …
Run Code Online (Sandbox Code Playgroud)

performance sql-server t-sql sql-server-2012 gaps-and-islands

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

为什么 SQL Server 不使用我的非聚集索引并执行聚集索引扫描?

这是我的完整表格:

    CREATE TABLE [dbo].[tblCrawlUrls](
    [cl_IdUrl] [int] IDENTITY(1,1) NOT NULL,
    [cl_CrawlNormalizedUrl] [nvarchar](200) NOT NULL,
    [cl_RooSiteId] [smallint] NOT NULL,
    [cl_ExploreDate] [datetime] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_ExploreDate]  DEFAULT (sysutcdatetime()),
    [cl_LastCrawlDate] [datetime] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_LastCrawlDate]  DEFAULT ('2000-08-11 15:18:47.407'),
    [cl_CrawlSource] [nvarchar](max) NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_CrawlSource]  DEFAULT ('null'),
    [cl_CrawlOrgUrl] [nvarchar](200) NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_CrawlOrgUrl]  DEFAULT ('null'),
    [cl_ExploredURL] [nvarchar](200) NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_ExploredURL]  DEFAULT ('null'),
    [cl_Ignored_By_Containing_Word] [bit] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_Ignored_By_Containing_Word]  DEFAULT ((0)),
    [cl_CrawlFailedTimes] [int] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_CrawlFailedTimes]  DEFAULT ((0)),
    [cl_TotalCrawlTimes] [int] NOT NULL CONSTRAINT [DF_tblCrawlUrls_cl_TotalCrawlTimes] …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-server-2014 query-performance

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

提高将大型 xml 文件 (~300 MB) 转换为 SQL Server 中的关系表的性能

所以这就是我到目前为止所拥有的:

--Read xml content into a XML data type variable
DECLARE @FileData XML
SELECT @FileData = CONVERT(XML, BulkColumn)
FROM OPENROWSET(BULK '\\file_path\test.xml', SINGLE_BLOB) AS x
--Read from the XML variable to create Entity-Attribute-Value table
SELECT N1.Id.value('@Id', 'varchar(50)') as Id
    , N1.Id.value('@Name', 'varchar(100)') as Name
    , N2.AttributeLongName.value('@AttributeName', 'varchar(100)') as AttributeName
    , N3.AttributeValue.value('.', 'varchar(MAX)') as AttributeValue
FROM @FileData.nodes('/Data/Entities/Entity') as N1(Id) ---1st lvl Node contains the Entity
cross apply Id.nodes('Attributes/Attribute') as N2(AttributeName) --2nd lvl Node contains AttributeName
cross apply AttributeName.nodes('Values/Value') as N3(AttributeValue) --3rd lvl …
Run Code Online (Sandbox Code Playgroud)

performance xml sql-server xquery

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

高 PAGEIOLATCH_SH 在服务器上等待

编辑:

我知道这个问题已经结束,但我希望它会对某人有所帮助。

问题出在我们的磁盘( cluster )上。

使用 PerfMon,我可以创建一些计数器(磁盘读取和写入)并且读取计数器固定为 100%。

高读取我看到以下等待sp_WhoIsActive



PAGEIOLATCH_SH:Database_Name:1(*)
Run Code Online (Sandbox Code Playgroud)

我在这里看到一些帖子,说这个警告是因为高 I/O。SQL Server 联机丛书将 SQL 等待类型 PAGEIOLATCH_SH 定义为:

当任务正在等待 I/O 请求中的缓冲区的闩锁时发生。锁存请求处于共享模式。

和这个:

用户进程将请求一些当前不在缓冲区缓存中的数据。此时——SQL Server 将尝试分配一个缓冲区页——当数据从磁盘移动到缓冲区缓存时,在缓冲区上创建了一个独占的 PAGEIOLATCH_EX。同时从用户进程的角度在缓冲区上创建一个 PAGEIOLATCH_SH。

我创建了索引和统计信息,还使用了 SQL Server Profiler 来帮助我。

有什么办法可以改进查询吗?我怎样才能改进大量的处理ANDs

我们已经遇到这个问题大约一个星期了,我不知道该怎么办。

SELECT TOP 30 codCliente 
FROM (
    SELECT t1.CodCliente
        , codcampo
        , valor
        , t1.chavealeat 
    FROM tblCliente AS t1 WITH(NOLOCK) 
        INNER JOIN tblClienteDetalhe AS t2 WITH (NOLOCK) 
            ON t1.codcliente = t2.codcliente 
            AND CodCampo IN (-1, 4)
    WHERE codStatus IN(0)  
        AND t1.ChavePeriodo < getdate() …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server query-performance

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

轻松修复碎片堆索引的最佳选择是什么?

我在这些服务器上有 SQL Server 2008 R2 SP2 和 SQL Server 2012 SP2。

我有一个数据库,其中有很多堆索引超过 90% 的碎片。

轻松修复这些堆索引的最佳选择是什么?

performance sql-server sql-server-2008-r2 sql-server-2012

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

有没有办法可以将以下查询缩短为单个查询?

我有以下查询。有没有一种方法可以将其放入一个查询中?如果没有,我可以进一步缩小它吗?请指教。

    DECLARE @highRegion TABLE(regionId INT, countR INT)
    DECLARE @lowRegion TABLE(regionId INT, countR INT)
    DECLARE @midRegion TABLE(regionId INT, countR INT)

    INSERT INTO @highRegion
    SELECT c.fRegionID,
           COUNT(1) AS VALUE
    FROM   census.Country c
           INNER JOIN census.IncomeGroup ig
                ON  c.fIncomeGroupID = ig.IncomeGroupID
    WHERE  ig.Name IN ('High income: nonOECD', 'High income: OECD')
    GROUP BY
           c.fRegionID

    INSERT INTO @lowRegion
    SELECT c.fRegionID AS VALUE,
           COUNT(1)
    FROM   census.Country c
           INNER JOIN census.IncomeGroup ig
                ON  c.fIncomeGroupID = ig.IncomeGroupID
    WHERE  ig.Name = 'Upper middle income'
    GROUP BY
           c.fRegionID

    INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization sql-server-2012 query-performance

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

无法消除索引扫描

我有一个查询,即使使用SQL Sentry,也无法消除索引扫描。

这是查询:

SELECT TOP 30 codCliente FROM (
        SELECT t1.CodCliente, codcampo, valor, t1.chavealeat 
        FROM tblCliente AS t1 WITH(NOLOCK) 
            INNER JOIN tblClienteDetalhe AS t2 WITH(NOLOCK) 
            ON t1.codcliente = t2.codcliente 
            AND CodCampo IN(-1, 4)
        WHERE codStatus IN (0)  
            AND t1.ChavePeriodo < GETDATE()
            AND t1.CodStatusLigacao = 0
            AND EXISTS
            (
                SELECT codcliente FROM tblclientedetalhe WITH(NOLOCK) 
                WHERE codcampo = 3 AND valor = '2' 
                    AND codcliente = t1.codcliente
            )
            AND EXISTS
            (
                SELECT codcliente FROM tblclientedetalhe WITH(NOLOCK) 
                WHERE codcampo = 6
                    AND CONVERT(DATETIME, …
Run Code Online (Sandbox Code Playgroud)

performance sql-server-2008 sql-server clustered-index query-performance

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

Postgresql 等价于 sqlite pragma

如果我想从 postgresql 中获得最佳性能,那么下面的 sqlite pragma 相当于什么。

pragma synchronous = OFF;
pragma journal_mode = OFF;
pragma count_changes = OFF;
pragma temp_store = MEMORY;
Run Code Online (Sandbox Code Playgroud)

postgresql sqlite performance postgresql-performance

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