ট্রিগার সক্ষম করা থাকলে রেকর্ডগুলি ধীরে ধীরে মুছে ফেলা


17

ভেবেছিলেন এটি নীচের লিঙ্কটি দিয়ে সমাধান করা হয়েছে - কাজ প্রায় কাজ - তবে প্যাচটি করে না। সমাধানের জন্য মাইক্রোসফ্ট সমর্থন সাথে কাজ করা।

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>

উত্তর:


12

এসকিউএল সার্ভার 2005-এ প্রবর্তিত সারি-সংস্করণ কাঠামোটি নতুন লেনদেনের বিচ্ছিন্নতা স্তর READ_COMMITTED_SNAPSHOTএবং সহ বেশ কয়েকটি বৈশিষ্ট্য সমর্থন করতে ব্যবহৃত হয় SNAPSHOT। এমনকি যখন এই বিচ্ছিন্নতা স্তরগুলির কোনওটিই সক্ষম না করা হয়, তবুও সারি-সংস্করণগুলি AFTERট্রিগারগুলির জন্য ( insertedএবং deletedসিউডো-টেবিলগুলি তৈরি করার সুবিধার্থে ), এমএআরএস এবং (একটি পৃথক সংস্করণ স্টোরে) অনলাইন ইনডেক্সিংয়ের জন্য ব্যবহৃত হয়।

ডকুমেন্টেড হিসাবে , ইঞ্জিন এই উদ্দেশ্যেগুলির কোনওটির জন্য সংস্করণযুক্ত টেবিলের প্রতিটি সারিটিতে 14-বাইট পোস্টফিক্স যুক্ত করতে পারে। এই আচরণটি তুলনামূলকভাবে সুপরিচিত, যেমন সারি-সংস্করণ বিচ্ছিন্নতা স্তর সক্ষম করে অনলাইনে পুনর্নির্মাণ করা একটি সূচকের প্রতিটি সারিটিতে 14-বাইট ডেটার সংযোজন । এমনকি যেখানে বিচ্ছিন্নতা স্তরগুলি সক্ষম নয়, কেবল পুনর্নির্মাণের সময় নন-ক্লাস্টারড ইনডেক্সগুলিতে একটি অতিরিক্ত বাইট যুক্ত করা হয় ONLINE

যেখানে একটি আফ্রিকার ট্রিগার উপস্থিত থাকে এবং সংস্করণটি অন্যদিকে সারিতে 14 বাইট যুক্ত করে, এটি এড়াতে ইঞ্জিনের মধ্যে একটি অপ্টিমাইজেশন উপস্থিত থাকে তবে যেখানে একটি ROW_OVERFLOWবা LOBবরাদ্দ ঘটতে পারে না। অনুশীলনে, এর অর্থ একটি সারির সর্বোচ্চ সম্ভাব্য আকার অবশ্যই 8060 বাইটের চেয়ে কম হওয়া উচিত। সর্বাধিক গণনায় সম্ভাব্য সারি আকারের করার জন্য, ইঞ্জিনটি উদাহরণস্বরূপ ধরে নিয়েছে যে কোনও VARCHAR (460) কলামে 460 অক্ষর থাকতে পারে।

AFTER UPDATEট্রিগার দিয়ে আচরণটি দেখতে সবচেয়ে সহজ , যদিও একই নীতিটি প্রযোজ্য AFTER DELETE। নিম্নলিখিত স্ক্রিপ্টটি সর্বাধিক 8060 বাইট দৈর্ঘ্যের সারণী তৈরি করে। তথ্যটি একটি পৃষ্ঠায় ফিট করে, সেই পৃষ্ঠায় 13 বাইট ফাঁকা স্থান সহ। কোনও অনি-ট্রিগার উপস্থিত রয়েছে, সুতরাং পৃষ্ঠাটি বিভক্ত হয়ে সংস্করণ তথ্য যুক্ত হয়েছে:

USE Sandpit;
GO
CREATE TABLE dbo.Example
(
    ID          integer NOT NULL IDENTITY(1,1),
    Value       integer NOT NULL,
    Padding1    char(42) NULL,
    Padding2    varchar(8000) NULL,

    CONSTRAINT PK_Example_ID
    PRIMARY KEY CLUSTERED (ID)
);
GO
WITH
    N1 AS (SELECT 1 AS n UNION ALL SELECT 1),
    N2 AS (SELECT L.n FROM N1 AS L CROSS JOIN N1 AS R),
    N3 AS (SELECT L.n FROM N2 AS L CROSS JOIN N2 AS R),
    N4 AS (SELECT L.n FROM N3 AS L CROSS JOIN N3 AS R)
INSERT TOP (137) dbo.Example
    (Value)
SELECT
    ROW_NUMBER() OVER (ORDER BY (SELECT 0))
FROM N4;
GO
ALTER INDEX PK_Example_ID 
ON dbo.Example 
REBUILD WITH (FILLFACTOR = 100);
GO
SELECT
    ddips.index_type_desc,
    ddips.alloc_unit_type_desc,
    ddips.index_level,
    ddips.page_count,
    ddips.record_count,
    ddips.max_record_size_in_bytes
FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID(N'dbo.Example', N'U'), 1, 1, 'DETAILED') AS ddips
WHERE
    ddips.index_level = 0;
GO
CREATE TRIGGER ExampleTrigger
ON dbo.Example
AFTER DELETE, UPDATE
AS RETURN;
GO
UPDATE dbo.Example
SET Value = -Value
WHERE ID = 1;
GO
SELECT
    ddips.index_type_desc,
    ddips.alloc_unit_type_desc,
    ddips.index_level,
    ddips.page_count,
    ddips.record_count,
    ddips.max_record_size_in_bytes
FROM sys.dm_db_index_physical_stats(DB_ID(), OBJECT_ID(N'dbo.Example', N'U'), 1, 1, 'DETAILED') AS ddips
WHERE
    ddips.index_level = 0;
GO
DROP TABLE dbo.Example;

স্ক্রিপ্ট নীচে প্রদর্শিত আউটপুট উত্পাদন করে। একক পৃষ্ঠার টেবিলটি দুটি পৃষ্ঠায় বিভক্ত এবং সর্বাধিক দৈহিক সারি দৈর্ঘ্য 57 থেকে 71 বাইটে বৃদ্ধি পেয়েছে (সারি-সংস্করণ তথ্যের জন্য = +14 বাইট)।

আপডেট উদাহরণ

DBCC PAGEএকক আপডেট হওয়া সারিটি দেখায় যে Record Attributes = NULL_BITMAP VERSIONING_INFO Record Size = 71টেবিলের অন্যান্য সমস্ত সারি রয়েছে Record Attributes = NULL_BITMAP; record Size = 57

UPDATEএকক সারি দ্বারা প্রতিস্থাপিত একই স্ক্রিপ্ট DELETEপ্রদর্শিত আউটপুট উত্পাদন করে:

DELETE dbo.Example
WHERE ID = 1;

উদাহরণ মুছুন

মোট (অবশ্যই!) একটি কম সারি রয়েছে, তবে সর্বাধিক শারীরিক সারি আকার বাড়েনি। সারি সংস্করণ তথ্যটি কেবল ট্রিগার সিউডো-টেবিলগুলির জন্য প্রয়োজনীয় সারিগুলিতে যুক্ত করা হয়েছিল এবং সেই সারিটি শেষ পর্যন্ত মুছে ফেলা হয়েছিল। পৃষ্ঠা বিভাজন অবশ্য রয়ে গেছে remains এই পৃষ্ঠার বিভাজন ক্রিয়াকলাপ ট্রিগার উপস্থিত ছিল যখন পর্যবেক্ষণ করা ধীর পারফরম্যান্স জন্য দায়ী। সংজ্ঞা তাহলে Padding2কলাম থেকে পরিবর্তিত হয় varchar(8000)থেকে varchar(7999), পৃষ্ঠা আর টুকরা।

এছাড়াও এসকিউএল সার্ভার এমভিপি দিমিত্রি করোটকেভিচ এই ব্লগ পোস্টটি দেখুন , যা খণ্ডিতকরণের উপর প্রভাবও আলোচনা করে।



5

মাইক্রোসফ্টের আনুষ্ঠানিক প্রতিক্রিয়া এখানে ... যা আমি মনে করি এটি একটি প্রধান নকশার ত্রুটি।

11/14/2011 - সরকারী প্রতিক্রিয়া পরিবর্তন হয়েছে। তারা পূর্বে উল্লিখিত হিসাবে লেনদেন লগ ব্যবহার করছে না। পরিবর্তিত ডেটা এতে অনুলিপি করতে অভ্যন্তরীণ স্টোর (সারি স্তর) ব্যবহার করছে are এতক্ষণ কেন এটি নেওয়া হয়েছে তা তারা এখনও নির্ধারণ করতে পারে না।

আমরা ট্রিগারগুলি মুছে ফেলার পরে তার পরিবর্তে ট্রিগার ব্যবহার করার সিদ্ধান্ত নিয়েছি।

ট্রিগারটির পরে অংশটি ডিলিটগুলি সম্পূর্ণ করার পরে লেনদেনের লগটি পড়তে এবং ট্রিগার /োকানো / মুছে ফেলা টেবিলটি তৈরি করে দেয়। এখানেই আমরা প্রচুর সময় ব্যয় করি এবং ট্রিগারটির পরে অংশের জন্য নকশা করি by ট্রিগার ইনস্টল করা লেনদেন লগটি স্ক্যান করার এবং সন্নিবেশিত / মোছা টেবিল তৈরির এই আচরণকে আটকাবে। এছাড়াও, যেমনটি পর্যবেক্ষণ করা হয়েছে যে আমরা এনভারচর (সর্বাধিক) দিয়ে সমস্ত কলাম ছেড়ে দিলে জিনিসগুলি আরও দ্রুত হয়, এটি LOB ডেটা হিসাবে বিবেচিত হওয়ার কারণে এটি বোধগম্য হয়। ইন-সারি ডেটা সম্পর্কিত আরও তথ্যের জন্য দয়া করে নীচের নিবন্ধটি দেখুন:

http://msdn.microsoft.com/en-us/library/ms189087.aspx

সংক্ষিপ্তসার: মুছে ফেলার সমাপ্তির পরে ট্রিগারটির জন্য লেনদেনের লগের মাধ্যমে স্ক্যান করতে হবে তারপরে আমাদের সরিয়ে / মুছে ফেলা টেবিলটি তৈরি করতে হবে যা লেনদেন লগ এবং সময়ের আরও বেশি ব্যবহারের প্রয়োজন।

একটি অ্যাকশন পরিকল্পনা হিসাবে, আমরা এই সময়ে এটি প্রস্তাব:

A) Limit the number of rows deleted in each transaction or
B) Increase timeout settings or
C) Don't use AFTER trigger or trigger at all or
D) Limit usage of nvarchar(max) datatypes.

2

পরিকল্পনা অনুযায়ী সবকিছু ঠিকঠাক চলছে। আপনি মুছে ফেলতে একটি IN এর পরিবর্তে একটি JOIN হিসাবে লেখার চেষ্টা করতে পারেন যা আপনাকে অন্যরকম পরিকল্পনা দেবে।

DELETE m
FROM MAIN m
JOIN Secondary s ON m.ID = s.ValueInt1
AND s.SetTMGUID = '9DDD2C8DD3864EA7B78DA22B2ED572D7'

আমি নিশ্চিত না যে এটি কতটা সাহায্য করবে। ডিলিটটি যখন টেবিলে ট্রিগারগুলির সাথে চলমান থাকে তখন সেশনটির অপেক্ষার ধরনটি কী মোছা হয়?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.