ভেবেছিলেন এটি নীচের লিঙ্কটি দিয়ে সমাধান করা হয়েছে - কাজ প্রায় কাজ - তবে প্যাচটি করে না। সমাধানের জন্য মাইক্রোসফ্ট সমর্থন সাথে কাজ করা।
http://support.microsoft.com/kb/2606883
ঠিক আছে তাই আমার একটি সমস্যা আছে যা আমি স্ট্যাকওভারফ্লোতে ফেলে দিতে চেয়েছিলাম কারও ধারণা আছে কিনা তা দেখার জন্য।
নোট করুন এটি এসকিউএল সার্ভার ২০০৮ আর 2 এর সাথে রয়েছে
ইস্যু: 15000 রেকর্ড সহ একটি টেবিল থেকে 3000 রেকর্ড মুছতে ট্রিগার সক্ষম থাকা অবস্থায় 3-4 মিনিট সময় লাগে এবং ট্রিগারটি অক্ষম করা হয় মাত্র 3-5 সেকেন্ড।
টেবিল সেটআপ
দুটি টেবিল আমরা মেইন এবং সেকেন্ডারি কল করব। মাধ্যমিকটিতে আইটেমগুলির রেকর্ড রয়েছে যা আমি মুছতে চাই তাই আমি মুছে ফেলতে পারলে আমি গৌণ টেবিলে যোগদান করি। মুছে ফেলা রেকর্ডস সহ গৌণ সারণিকে জনিত করতে মুছে ফেলার বিবরণীর আগে একটি প্রক্রিয়া চলে।
বিবৃতি মুছুন:
DELETE FROM MAIN
WHERE ID IN (
SELECT Secondary.ValueInt1
FROM Secondary
WHERE SECONDARY.GUID = '9FFD2C8DD3864EA7B78DA22B2ED572D7'
);
এই টেবিলটিতে প্রচুর কলাম এবং প্রায় 14 টি বিভিন্ন এনসি সূচি রয়েছে। ট্রিগারটি হ'ল সমস্যাটি নির্ধারণ করার আগে আমি বিভিন্ন কিছু নিয়ে চেষ্টা করেছি।
- পৃষ্ঠা লকিং চালু করুন (আমরা পূর্বনির্ধারিতভাবে বন্ধ করেছি)
- পরিসংখ্যান ম্যানুয়ালি জড়ো
- পরিসংখ্যানগুলিতে অক্ষম হওয়া স্বয়ংক্রিয় সংগ্রহ
- সূচী স্বাস্থ্য এবং খণ্ডিত যাচাই করা হয়েছে
- টেবিল থেকে ক্লাস্টার ইনডেক্স বাদ দেওয়া হয়েছে
- বাস্তবায়ন পরিকল্পনা পরীক্ষা (নিখোঁজ সূচক হিসাবে কিছুই দেখায় না এবং ব্যয়টি রেকর্ডগুলিতে যোগদান / সংযোজনের জন্য প্রায় 28 শতাংশ সহ প্রকৃত মোছার দিকে 70 শতাংশ ছিল)
ট্রিগারসমূহ
টেবিলটিতে 3 টি ট্রিগার রয়েছে (সন্নিবেশ, আপডেট এবং অপসারণ অপারেশনগুলির জন্য প্রতিটি)। আমি মুছে ফেলার ট্রিগারটির কোডটি কেবল ফিরে আসার জন্য পরিবর্তন করেছি, তারপরে এটি চালানো হয়েছে কিনা তা দেখার জন্য একটি নির্বাচন করতে। পুরো অপারেশনের সময় এটি কেবল একবারে আগুন ধরে যায় (আশানুরূপ হিসাবে)।
ALTER TRIGGER [dbo].[TR_MAIN_RD] ON [dbo].[MAIN]
AFTER DELETE
AS
SELECT 1
RETURN
পুনরুদ্ধার করতে
- ট্রিগার চালু রয়েছে - বিবৃতিটি সম্পূর্ণ হতে 3-4 মিনিট সময় নেয়
- ট্রিগার বন্ধ সহ - বিবৃতিটি সম্পূর্ণ হতে 3-5 সেকেন্ড সময় নেয়
কারও সম্পর্কে ধারণা আছে কেন?
এছাড়াও দ্রষ্টব্য - সমাধান হিসাবে এই আর্কিটেকচারটি পরিবর্তন করতে চাইছেন না, সরানো সূচীকরণ ইত্যাদি যুক্ত করুন। এই টেবিলটি কয়েকটি বড় ডেটা অপারেশনের কেন্দ্রের অংশ এবং বড় কাক্সিক্ষত ক্রিয়াকলাপকে ডেডলক ছাড়াই কাজ করার অনুমতি দেওয়ার জন্য আমাদের এটিকে (সূচিপত্র, পৃষ্ঠা লকিং ইত্যাদি) টিপ এবং টিউন করতে হয়েছিল।
এখানে এক্সিকিউশন প্ল্যান এক্সএমএল (নিরীহদের সুরক্ষার জন্য নাম পরিবর্তন করা হয়েছিল)
<?xml version="1.0" encoding="utf-16"?>
<ShowPlanXML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="1.1" Build="10.50.1790.0" xmlns="http://schemas.microsoft.com/sqlserver/2004/07/showplan">
<BatchSequence>
<Batch>
<Statements>
<StmtSimple StatementCompId="1" StatementEstRows="185.624" StatementId="1" StatementOptmLevel="FULL" StatementOptmEarlyAbortReason="GoodEnoughPlanFound" StatementSubTreeCost="0.42706" StatementText="DELETE FROM MAIN WHERE ID IN (SELECT Secondary.ValueInt1 FROM Secondary WHERE Secondary.SetTMGUID = '9DDD2C8DD3864EA7B78DA22B2ED572D7')" StatementType="DELETE" QueryHash="0xAEA68D887C4092A1" QueryPlanHash="0x78164F2EEF16B857">
<StatementSetOptions ANSI_NULLS="true" ANSI_PADDING="true" ANSI_WARNINGS="true" ARITHABORT="false" CONCAT_NULL_YIELDS_NULL="true" NUMERIC_ROUNDABORT="false" QUOTED_IDENTIFIER="true" />
<QueryPlan CachedPlanSize="48" CompileTime="20" CompileCPU="20" CompileMemory="520">
<RelOp AvgRowSize="9" EstimateCPU="0.00259874" EstimateIO="0.296614" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="185.624" LogicalOp="Delete" NodeId="0" Parallel="false" PhysicalOp="Clustered Index Delete" EstimatedTotalSubtreeCost="0.42706">
<OutputList />
<Update WithUnorderedPrefetch="true" DMLRequestSort="false">
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_02]" IndexKind="Clustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[PK_MAIN_ID]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[UK_MAIN_01]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_03]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_04]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_05]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_06]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_07]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_08]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_09]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_10]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_11]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[UK_MAIN_12]" IndexKind="NonClustered" />
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[IX_MAIN_13]" IndexKind="NonClustered" />
<RelOp AvgRowSize="15" EstimateCPU="1.85624E-05" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="185.624" LogicalOp="Top" NodeId="2" Parallel="false" PhysicalOp="Top" EstimatedTotalSubtreeCost="0.127848">
<OutputList>
<ColumnReference Column="Uniq1002" />
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Column="RelationshipID" />
</OutputList>
<Top RowCount="true" IsPercent="false" WithTies="false">
<TopExpression>
<ScalarOperator ScalarString="(0)">
<Const ConstValue="(0)" />
</ScalarOperator>
</TopExpression>
<RelOp AvgRowSize="15" EstimateCPU="0.0458347" EstimateIO="0" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="185.624" LogicalOp="Left Semi Join" NodeId="3" Parallel="false" PhysicalOp="Merge Join" EstimatedTotalSubtreeCost="0.12783">
<OutputList>
<ColumnReference Column="Uniq1002" />
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Column="RelationshipID" />
</OutputList>
<Merge ManyToMany="false">
<InnerSideJoinColumns>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[Secondary]" Column="ValueInt1" />
</InnerSideJoinColumns>
<OuterSideJoinColumns>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Column="ID" />
</OuterSideJoinColumns>
<Residual>
<ScalarOperator ScalarString="[MyDatabase].[dbo].[MAIN].[ID]=[MyDatabase].[dbo].[Secondary].[ValueInt1]">
<Compare CompareOp="EQ">
<ScalarOperator>
<Identifier>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Column="ID" />
</Identifier>
</ScalarOperator>
<ScalarOperator>
<Identifier>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[Secondary]" Column="ValueInt1" />
</Identifier>
</ScalarOperator>
</Compare>
</ScalarOperator>
</Residual>
<RelOp AvgRowSize="19" EstimateCPU="0.0174567" EstimateIO="0.0305324" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="15727" LogicalOp="Index Scan" NodeId="4" Parallel="false" PhysicalOp="Index Scan" EstimatedTotalSubtreeCost="0.0479891" TableCardinality="15727">
<OutputList>
<ColumnReference Column="Uniq1002" />
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Column="ID" />
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Column="RelationshipID" />
</OutputList>
<IndexScan Ordered="true" ScanDirection="FORWARD" ForcedIndex="false" ForceSeek="false" NoExpandHint="false">
<DefinedValues>
<DefinedValue>
<ColumnReference Column="Uniq1002" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Column="ID" />
</DefinedValue>
<DefinedValue>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Column="RelationshipID" />
</DefinedValue>
</DefinedValues>
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[MAIN]" Index="[PK_MAIN_ID]" IndexKind="NonClustered" />
</IndexScan>
</RelOp>
<RelOp AvgRowSize="11" EstimateCPU="0.00392288" EstimateIO="0.03008" EstimateRebinds="0" EstimateRewinds="0" EstimateRows="3423.53" LogicalOp="Index Seek" NodeId="5" Parallel="false" PhysicalOp="Index Seek" EstimatedTotalSubtreeCost="0.0340029" TableCardinality="171775">
<OutputList>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[Secondary]" Column="ValueInt1" />
</OutputList>
<IndexScan Ordered="true" ScanDirection="FORWARD" ForcedIndex="false" ForceSeek="false" NoExpandHint="false">
<DefinedValues>
<DefinedValue>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[Secondary]" Column="ValueInt1" />
</DefinedValue>
</DefinedValues>
<Object Database="[MyDatabase]" Schema="[dbo]" Table="[Secondary]" Index="[IX_Secondary_01]" IndexKind="NonClustered" />
<SeekPredicates>
<SeekPredicateNew>
<SeekKeys>
<Prefix ScanType="EQ">
<RangeColumns>
<ColumnReference Database="[MyDatabase]" Schema="[dbo]" Table="[Secondary]" Column="SetTMGUID" />
</RangeColumns>
<RangeExpressions>
<ScalarOperator ScalarString="'9DDD2C8DD3864EA7B78DA22B2ED572D7'">
<Const ConstValue="'9DDD2C8DD3864EA7B78DA22B2ED572D7'" />
</ScalarOperator>
</RangeExpressions>
</Prefix>
</SeekKeys>
</SeekPredicateNew>
</SeekPredicates>
</IndexScan>
</RelOp>
</Merge>
</RelOp>
</Top>
</RelOp>
</Update>
</RelOp>
</QueryPlan>
</StmtSimple>
</Statements>
</Batch>
</BatchSequence>
</ShowPlanXML>