我使用 Oracle 11.2 作为我的应用程序的数据库。为此,我应该将我的数据(大约 100m 记录)导入到这个数据库中。为此,我使用了 SQL Developer。
不幸的是,在导入过程中,我的系统崩溃并迫使我重新启动系统。系统启动后,与 Oracle 相关的一切都很奇怪:
你能告诉我发生了什么,我该如何解决?
PS:从崩溃时间过去 24 小时后,性能变得更好,但仍远低于崩溃前。
已经有一个问题“如何使用 psql 为 SQL 查询计时? ”但我缺少如何从命令行执行此操作的答案。如何从命令行运行带有(可选)计时\timing [on|off]的脚本- 请不要在脚本中运行?
下面的查询,对一个大约 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
这是我的完整表格:
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) 所以这就是我到目前为止所拥有的:
--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) 编辑:
我知道这个问题已经结束,但我希望它会对某人有所帮助。
问题出在我们的磁盘( 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) 我在这些服务器上有 SQL Server 2008 R2 SP2 和 SQL Server 2012 SP2。
我有一个数据库,其中有很多堆索引超过 90% 的碎片。
轻松修复这些堆索引的最佳选择是什么?
我有以下查询。有没有一种方法可以将其放入一个查询中?如果没有,我可以进一步缩小它吗?请指教。
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
我有一个查询,即使使用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
如果我想从 postgresql 中获得最佳性能,那么下面的 sqlite pragma 相当于什么。
pragma synchronous = OFF;
pragma journal_mode = OFF;
pragma count_changes = OFF;
pragma temp_store = MEMORY;
Run Code Online (Sandbox Code Playgroud) performance ×10
sql-server ×7
postgresql ×2
optimization ×1
oracle ×1
psql ×1
sqlite ×1
t-sql ×1
xml ×1
xquery ×1