我正在尝试使用数据库引擎优化顾问来优化我的数据库,我面临的问题是我的SQL事件探查器跟踪显示使用了大量的查询sp_executesql- 并且顾问程序无法处理这些查询.看起来这些查询来自我正在使用的LINQ到实体,所以只是好奇是否有任何方法可以使LINQ-to-Entities直接调用语句.
linq sql-server linq-to-entities sqlperformance sql-server-2008
我的案例场景将参数传递给一个过程,该过程仅执行插入操作。但两个线程可能会尝试传递相同的值。
如何处理这种情况而不引发异常并使用最少的锁?
我的性能要求是每秒至少 10k 插入。
编辑:列是唯一的。时间戳在插入之前可能会被更改(调整)。
t-sql sql-server nonblocking transaction-isolation sqlperformance
我必须在where子句的基础上总结一些列,以便更好地理解我在这里实现一个临时表
declare @tbl table(a int ,b int,c int)
insert into @tbl values(1,2,3)
insert into @tbl values(2,2,3)
insert into @tbl values(1,3,1)
insert into @tbl values(1,2,3)
insert into @tbl values(1,2,3)
Run Code Online (Sandbox Code Playgroud)
并且用于找出a,b,c ob的总和a,b,c的值; 我正在使用以下查询
SELECT (
SELECT SUM(a) from @tbl where a=1
)AS a ,
(SELECT SUM(b) from @tbl where b=2
)AS b ,
(SELECT SUM(c) from @tbl where c=3
)AS c
Run Code Online (Sandbox Code Playgroud)
我问我的一个朋友对这项工作进行单行查询,他建议我按行
select sum((case when a=1 then a else null end)),
sum((case when b=2 then b else null end)),
sum((case when c=3 …Run Code Online (Sandbox Code Playgroud) 我有一个拥有3000万行的数据库.PK聚集索引是生成的代码GUID.
表格如下:
CREATE TABLE [dbo].[events](
[imageEventGUID] [uniqueidentifier] NOT NULL,
[imageSHAID] [nvarchar](256) NOT NULL,
[queryGUID] [uniqueidentifier] NOT NULL,
[eventType] [int] NOT NULL,
[eventValue] [nvarchar](2050) NULL,
[dateOfEvent] [datetime] NOT NULL,
CONSTRAINT [PK_store_image_event] PRIMARY KEY CLUSTERED
(
[imageEventGUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
简单地说它是一个图像搜索引擎.
imageEventGUID 是代码唯一标识符, imageSHAID 是图像URL的SHA256queryGUID 是生成FK的代码(为简洁起见,从create语句中排除)eventType 是一个分配给它是什么类型的事件的数字eventValue通常是图像的URI,例如" http://mywebpage.com/images/image123456789.jpg "我定期使用非常标准的代码将via SqlBulkCopy(从a DataTable)插入到此表中:
using (SqlBulkCopy …Run Code Online (Sandbox Code Playgroud) 执行UPDATE具有多个列的一个语句是否更有效
UPDATE myTable
SET [col1] = [col1] + 1,
[col2] = [col2] + 1,
[col3] = [col3] + 1,
...
[colN] = [colN] + 1
Run Code Online (Sandbox Code Playgroud)
或者UPDATE每个单列有多个语句?
UPDATE myTable SET [col1] = [col1] + 1
UPDATE myTable SET [col2] = [col2] + 1
UPDATE myTable SET [col3] = [col3] + 1
...
UPDATE myTable SET [colN] = [colN] + 1
Run Code Online (Sandbox Code Playgroud) 我有一个包含〜1M行的表,并对它运行以下SQL:
select * from E where sys like '%,141,%'
Run Code Online (Sandbox Code Playgroud)
执行需要2-5秒(返回~10行),我需要它至少快10倍,是否可以通过SQL Server 2012实现?
样本sys值(sys值长度范围为5到1000个字符):
1,2,3,7,9,10,11,12,14,17,28,29,30,33,35,37,40,41,42,43,44,45,46,47,48,50,51,53,55,63,69,
72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,97,109,110,111,113,117,
119,121,122,123,124,130,131,132,133,134,135,139,141,146
Run Code Online (Sandbox Code Playgroud)
表的DDL:
CREATE TABLE [dbo].[E](
[o] [int] NOT NULL,
[sys] [varchar](8000) NULL,
[s] [varchar](8000) NULL,
[eys] [varchar](8000) NULL,
[e] [varchar](8000) NULL,
CONSTRAINT [PK_E] PRIMARY KEY CLUSTERED
(
[o] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Run Code Online (Sandbox Code Playgroud) 我使用Mysql 5.5 .. + INNODB和Windows Server。
案例(先简单然后再案例):
我有2个表1GB,名称new_car和car表1GB。
我每隔10小时car用new_car表格替换表格,而不是手动(按代码自动)-快速完成(实际网站数据)很重要。
我读了(说在innodb中删除了它的问题):http : //www.mysqlperformanceblog.com/2011/02/03/performance-problem-with-innodb-and-drop-table/
解决方案1:
DROP TABLE car;
RENAME TABLE new_car TO car;
Run Code Online (Sandbox Code Playgroud)
解决方案2(最后放置-可能不会阻止表访问在放置期间发生的访问):
RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
DROP TABLE temp_car;
Run Code Online (Sandbox Code Playgroud)
解决方案3(截断快速删除表并创建空表,然后在执行删除操作后应该很快):
TRUNCATE TABLE car;
DROP TABLE car;
RENAME TABLE new_car TO car;
Run Code Online (Sandbox Code Playgroud)
解决方案4:
RENAME TABLE car TO temp_car;
RENAME TABLE new_car TO car;
TRUNCATE TABLE temp_car;
DROP TABLE temp_car;
Run Code Online (Sandbox Code Playgroud)
哪种解决方案是最好的,为什么或请写其他更好的解决方案?
谢谢
我有一个情境/上下文,其中特定视图在返回结果之前需要120秒.在执行简单的ALTER(或删除/创建)时,视图需要1到2秒.这怎么可能?我们如何解决这个问题 - 因为我们没有可以帮助我们的专用DBA.由于我们拥有链接服务器设置(MSSQL Server 2012抱怨这一点),因此无法制作索引视图.
以下是有关设置的信息.
TL; DR View_MAIN在一段时间后需要120秒.当我们在View_X,View_Y和View_MAIN上执行ALTER视图而不改变任何内容时,性能再次正常为1到2秒.
View_MAIN
SELECT
column1, column2, column3, column4, column5
FROM View_X
UNION ALL
SELECT
column1, column2, column3, column4, column5
FROM View_Y
Run Code Online (Sandbox Code Playgroud)
View_X
SELECT
LTRIM(RTRIM(table1.a)) as column1,
table2.b COLLATE Latin1_General_CI_AS as column2,
table1.c as column3,
CAST(table3.d AS DATETIME) as column4,
'XXXXXX' as column5
FROM
[linkedserver01].[DATABASE_IDN].[dbo].[dataForX] table1
LEFT OUTER JOIN [linkedserver02].[DATABASE_INFM] as table2
ON table2.id = table1.id
LEFT OUTER JOIN [linkedserver02].[DATABASE_PIK] as table3
ON table3.id = table1.id
Run Code Online (Sandbox Code Playgroud)
View_Y
SELECT
LTRIM(RTRIM(table1.a)) as column1,
table2.b COLLATE Latin1_General_CI_AS …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的巨大查询:
SELECT 'Tipification', COUNT(*) TOTAL, to_char(INITDATE,'YYYY-MM-DD')
FROM (
SELECT (TYPE || ' \ ' || SUBTYPE || ' \ ' || PROBLEM ) Triplet, INITDATE
FROM TABLE
WHERE USER IS NOT null
AND (INITDATE >= TO_DATE('2016-12-01 00:00', 'YYYY-MM-DD HH24:MI:SS'))
AND (INITDATE <= TO_DATE('2016-12-31 23:59', 'YYYY-MM-DD HH24:MI:SS'))
AND ( (TYPE || ' \ ' || SUBTYPE || ' \ ' || PROBLEM) = 'aaa \ bbb \ ccc'
OR (TYPE || ' \ ' || SUBTYPE || ' \ ' || …Run Code Online (Sandbox Code Playgroud) 我们的Oracle数据库应用程序包含一个名为PERSON
This Table的表包含一个名为的列.PERSON_NAME
此外,我们INDEX在此列上有一个加速SELECT使用此列的列
所以当我们使用以下SQL语句时性能很好
SELECT *
FROM PERSON
WHERE 1=1
AND PERSON_NAME = ' Yajli '
;
Run Code Online (Sandbox Code Playgroud)
但在某些商业案例中,
我们需要通过搜索来PERSON_NAME区分大小写
所以我们尝试遵循SQL语句
SELECT *
FROM PERSON
WHERE 1=1
AND UPPER(PERSON_NAME) = UPPER(' YajLi ')
;
Run Code Online (Sandbox Code Playgroud)
但它导致我们的BAD性能和SELECT查询在这种情况下需要花费很多时间
任何帮助如何一起提高SELECT两种情况的性能
*搜索方式PERSON_NAME不区分大小写
*搜索PERSON_NAME方式区分大小写
sqlperformance ×10
sql ×5
sql-server ×5
oracle ×2
performance ×2
t-sql ×2
.net ×1
c# ×1
linq ×1
mysql ×1
nonblocking ×1
sql-tuning ×1
sql-view ×1