কেন ডিফল্ট পারফরম্যান্সে একটি স্থির প্রভাব ফেলে?


20

শেষে একটি @ টেবিল ভেরিয়েবল এবং একটি # টেম্প টেবিলের মধ্যে পারফরম্যান্স তুলনা করার জন্য একটি পরীক্ষা স্ক্রিপ্ট। আমি মনে করি আমি এটি সঠিকভাবে সেট আপ করেছি - সম্পাদনার সময়গুলি ডিলেট / ট্রানসেট আদেশের বাইরে নেওয়া হয় । আমি যে ফলাফলগুলি পাচ্ছি তা নিম্নরূপ (মিলি সেকেন্ডের সময়)।

@Table Variable  #Temp (delete)  #Temp (truncate)
---------------  --------------  ----------------
5723             5180            5506
15636            14746           7800
14506            14300           5583
14030            15460           5386
16706            16186           5360

আমি বুদ্ধিমানের তা নিশ্চিত করার জন্য, এটি দেখায় যে CURRENT_TIMESTAMP (ওরফে GetDate()) ব্যাচের নয়, বিবৃতি দেওয়ার সময় নেওয়া হয়েছিল, সুতরাং SET @StartTime = CURRENT_TIMESTAMPবিবৃতিটির সাথে TRUNCATE / DELETE এর মধ্যে কোনও ইন্টারঅ্যাকশন হওয়া উচিত নয় ।

select current_timestamp
waitfor delay '00:00:04'
select current_timestamp

-----------------------
2012-10-21 11:29:20.290

-----------------------
2012-10-21 11:29:24.290

এটি প্রথম রান এবং পরবর্তী রানগুলির মধ্যে লাফ দেওয়ার ক্ষেত্রে বেশ সামঞ্জস্যপূর্ণ যখন ডিলেটটি টেবিল সাফ করার জন্য ব্যবহৃত হয়। ডিলিট সম্পর্কে আমার বোঝার মধ্যে আমি কী অনুপস্থিত ? আমি এটি বহুবার পুনরাবৃত্তি করেছি, ক্রমটি অদলবদল করেছি, বৃদ্ধির প্রয়োজন নেই বলে মাপের টেম্পডিবি ইত্যাদি

CREATE TABLE #values (
  id int identity primary key, -- will be clustered
  name varchar(100) null,
  number int null,
  type char(3) not null,
  low int null,
  high int null,
  status smallint not null
);
GO
SET NOCOUNT ON;

DECLARE @values TABLE (
  id int identity primary key clustered,
  name varchar(100) null,
  number int null,
  type char(3) not null,
  low int null,
  high int null,
  status smallint not null
);
DECLARE  @ExecutionTime  TABLE(      Duration bigINT    ) 
DECLARE  @StartTime DATETIME,  @i INT = 1; 
WHILE (@i <= 5) 
  BEGIN 
    DELETE @values;
    DBCC freeproccache With NO_InfoMSGS;
    DBCC DROPCLEANBUFFERS With NO_InfoMSGS;
    SET @StartTime = CURRENT_TIMESTAMP -- alternate getdate() 
    /****************** measured process ***********************/ 

    INSERT @values SELECT a.* FROM master..spt_values a join master..spt_values b on b.type='P' and b.number < 1000;

    /**************** end measured process *********************/ 
    INSERT @ExecutionTime 
    SELECT DurationInMilliseconds = datediff(ms,@StartTime,CURRENT_TIMESTAMP) 
    SET @i +=  1 
  END -- WHILE 

SELECT DurationInMilliseconds = Duration FROM   @ExecutionTime 
GO 

-- Temporary table
DECLARE  @ExecutionTime  TABLE(      Duration bigINT    ) 
DECLARE  @StartTime DATETIME,  @i INT = 1; 
WHILE (@i <= 5) 
  BEGIN 
    delete #values;
    -- TRUNCATE TABLE #values;
    DBCC freeproccache With NO_InfoMSGS;
    DBCC DROPCLEANBUFFERS With NO_InfoMSGS;
    SET @StartTime = CURRENT_TIMESTAMP -- alternate getdate() 
    /****************** measured process ***********************/ 

    INSERT #values SELECT a.* FROM master..spt_values a join master..spt_values b on b.type='P' and b.number < 1000;

    /**************** end measured process *********************/ 
    INSERT @ExecutionTime 
    SELECT DurationInMilliseconds = datediff(ms,@StartTime,CURRENT_TIMESTAMP) 
    SET @i +=  1 
  END -- WHILE 

SELECT DurationInMilliseconds = Duration FROM   @ExecutionTime 
GO

DROP TABLE  #values 
SET NOCOUNT OFF;

উত্তর:


20

এই পার্থক্যটি কেবল তখন প্রয়োগ হয় যখন বস্তুটি একটি বি + ট্রি হয়। primary keyটেবিলের পরিবর্তনশীলটিকে অপসারণ করার সময় এটি হ'ল আমি নিম্নলিখিত ফলাফল পেয়েছি

2560
2120
2080
2130
2140

তবে পিকে দিয়ে আমি আমার পরীক্ষাগুলিতে একই রকম প্যাটার্নটি পেয়েছি পাশাপাশি নীচের সাধারণ ফলাফলগুলিও।

+--------+--------+---------+-------------------+
| @table | #table | ##table | [permanent_table] |
+--------+--------+---------+-------------------+
|   2670 |   2683 |    9603 |              9703 |
|   6823 |   6840 |    9723 |              9790 |
|   6813 |   6816 |    9626 |              9703 |
|   6883 |   6816 |    9600 |              9716 |
|   6840 |   6856 |    9610 |              9673 |
+--------+--------+---------+-------------------+

আমার তত্ত্বটি হ'ল স্থানীয় অস্থায়ী বি + গাছগুলিতে বাল্ক সন্নিবেশ করার সময় কিছু অপ্টিমাইজেশন উপলব্ধ রয়েছে যা কেবলমাত্র তখনই প্রয়োগ হয় যখন এর মধ্যে ইতিমধ্যে কোনও পৃষ্ঠা বরাদ্দ নেই।

আমি নিম্নলিখিত পর্যবেক্ষণ ভিত্তিতে এটি বেস।

  1. যখন আপনার পরীক্ষার কোডের বিভিন্ন সংস্করণগুলি চালায় আমি শুধু সঙ্গে এই প্যাটার্ন দেখেছি @table_variablesএবং #tempটেবিল। টেবিলগুলিতে স্থায়ী টেবিল tempdbনয় ##

  2. ধীর পারফরম্যান্স পেতে টেবিল থেকে প্রচুর পরিমাণে সারি পূর্বে যুক্ত এবং সরিয়ে ফেলা প্রয়োজন হয় না। কেবল একটি একক সারি যুক্ত করা এবং এটি সেখানে রেখে দেওয়া যথেষ্ট।

  3. TRUNCATEটেবিল থেকে সমস্ত পৃষ্ঠাগুলি deallocates। DELETEসারণির শেষ পৃষ্ঠাটি হ্রাস করা হবে না।

  4. ভিএস 2012 প্রোফাইলার ব্যবহার করে দেখা যায় যে দ্রুত ক্ষেত্রে এসকিউএল সার্ভার একটি ভিন্ন কোড পাথ ব্যবহার করে। ধীর ক্ষেত্রে for১ sqlmin.dll!RowsetBulk::InsertRow% সময় ব্যয় করা হয়েছে vs১% সময়কে sqlmin.dll!RowsetNewSS::InsertRow

চলমান

SELECT * 
FROM sys.dm_db_index_physical_stats(2,OBJECT_ID('tempdb..#values'),1,NULL, 'DETAILED')

মুছুন রিটার্ন পরে

+-------------+------------+--------------+--------------------+
| index_level | page_count | record_count | ghost_record_count |
+-------------+------------+--------------+--------------------+
|           0 |          1 |            0 |                  1 |
|           1 |          1 |            1 |                  0 |
|           2 |          1 |            1 |                  0 |
+-------------+------------+--------------+--------------------+

আমি দেখেছি যে ট্রেস পতাকা 610 সক্ষম করে কিছুটা সময়ের তাত্পর্য হ্রাস করা সম্ভব হয়েছিল ।

এই কমানোর প্রভাব ফেলেছে পরিমাণ (যেমন এটা এখন আর পৃথক সন্নিবেশিত সারি মান লগ 350 মেগাবাইট 103 মেগাবাইট থেকে নেমে) পরবর্তী টিপে জন্য যথেষ্ট লগ-ইন করার কিন্তু এই 2nd এবং পরবর্তী সময়টা একমাত্র একটি ছোটখাট উন্নতি ছিল @table, #tableমামলা এবং ফাঁক এখনও আছে। ট্রেস পতাকা অন্য দুটি সারণী প্রকারের মধ্যে সন্নিবেশগুলির সাধারণ কার্যকারিতা উন্নত করে তোলে।

+--------+--------+---------+-------------------+
| @table | #table | ##table | [permanent_table] |
+--------+--------+---------+-------------------+
|   2663 |   2670 |    5403 |              5426 |
|   5390 |   5396 |    5410 |              5403 |
|   5373 |   5390 |    5410 |              5403 |
|   5393 |   5410 |    5406 |              5433 |
|   5386 |   5396 |    5390 |              5420 |
+--------+--------+---------+-------------------+

লেনদেনের লগটি অনুসন্ধান করা থেকে আমি লক্ষ্য করেছি যে খালি স্থানীয় অস্থায়ী টেবিলগুলির বিরুদ্ধে প্রারম্ভিক সন্নিবেশগুলি আরও ন্যূনতমভাবে লগড (96 এমবি তে) মনে হয়।

উল্লেখযোগ্যভাবে এই দ্রুত সন্নিবেশগুলিতে ধীর ক্ষেত্রে ওভারের তুলনায় কেবল 657লেনদেন ( LOP_BEGIN_XACT/ LOP_COMMIT_XACTজোড়া) ছিল 10,000। বিশেষভাবে LOP_FORMAT_PAGEঅপারেশনগুলি অনেক হ্রাস পেয়েছে বলে মনে হচ্ছে। ধীর মামলায় 10,270কেবলমাত্রের তুলনায় টেবিলের (প্রতিটি ) প্রতিটি পৃষ্ঠার জন্য লেনদেনের লগ এন্ট্রি থাকে4 দ্রুত ক্ষেত্রে জাতীয় প্রবেশের ।

তিনটি ক্ষেত্রেই ব্যবহৃত লগটি নিম্নরূপ ছিল (পাঠ্যের পরিমাণ হ্রাস করার জন্য সিস্টেম বেস টেবিলগুলিতে আপডেটের জন্য লগ রেকর্ডগুলি আমি মুছে ফেলেছি তবে সেগুলি মোটের মধ্যে অন্তর্ভুক্ত রয়েছে)

@table_var(96.5 এমবি) এর বিপরীতে প্রথম সন্নিবেশ লগইন করা হচ্ছে

+-----------------------+----------+----------------------------------------------+---------------+---------+
|       Operation       | Context  |                AllocUnitName                 | Size in Bytes |   Cnt   |
+-----------------------+----------+----------------------------------------------+---------------+---------+
| LOP_BEGIN_XACT        | LCX_NULL | NULL                                         |         83876 |     658 |
| LOP_COMMIT_XACT       | LCX_NULL | NULL                                         |         34164 |     657 |
| LOP_CREATE_ALLOCCHAIN | LCX_NULL | NULL                                         |           120 |       3 |
| LOP_FORMAT_PAGE       | LCX_HEAP | dbo.#531856C7                                |            84 |       1 |
| LOP_FORMAT_PAGE       | LCX_IAM  | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |            84 |       1 |
| LOP_FORMAT_PAGE       | LCX_IAM  | dbo.#531856C7                                |            84 |       1 |
| LOP_FORMAT_PAGE       | LCX_IAM  | Unknown Alloc Unit                           |            84 |       1 |
| LOP_HOBT_DDL          | LCX_NULL | NULL                                         |           216 |       6 |
| LOP_HOBT_DELTA        | LCX_NULL | NULL                                         |           320 |       5 |
| LOP_IDENT_NEWVAL      | LCX_NULL | NULL                                         |     100240000 | 2506000 |
| LOP_INSERT_ROWS       | LCX_HEAP | dbo.#531856C7                                |            72 |       1 |
| LOP_MODIFY_ROW        | LCX_IAM  | dbo.#531856C7                                |            88 |       1 |
| LOP_MODIFY_ROW        | LCX_PFS  | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |        158592 |    1848 |
| LOP_MODIFY_ROW        | LCX_PFS  | dbo.#531856C7                                |            80 |       1 |
| LOP_MODIFY_ROW        | LCX_PFS  | Unknown Alloc Unit                           |        216016 |    2455 |
| LOP_SET_BITS          | LCX_GAM  | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |         84360 |    1406 |
| LOP_SET_BITS          | LCX_GAM  | Unknown Alloc Unit                           |        147120 |    2452 |
| LOP_SET_BITS          | LCX_IAM  | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |         84360 |    1406 |
| LOP_SET_BITS          | LCX_IAM  | Unknown Alloc Unit                           |        147120 |    2452 |
| Total                 | NULL     | NULL                                         |     101209792 | 2519475 |
+-----------------------+----------+----------------------------------------------+---------------+---------+

পরবর্তী সন্নিবেশগুলি টিএফ 610 বন্ধ (350 এমবি) লগিং করা হচ্ছে

+-----------------------+--------------------+----------------------------------------------+---------------+---------+
|       Operation       |      Context       |                AllocUnitName                 | Size in Bytes |   Cnt   |
+-----------------------+--------------------+----------------------------------------------+---------------+---------+
| LOP_BEGIN_CKPT        | LCX_NULL           | NULL                                         |            96 |       1 |
| LOP_BEGIN_XACT        | LCX_NULL           | NULL                                         |       1520696 |   12521 |
| LOP_COMMIT_XACT       | LCX_NULL           | NULL                                         |        651040 |   12520 |
| LOP_CREATE_ALLOCCHAIN | LCX_NULL           | NULL                                         |            40 |       1 |
| LOP_DELETE_SPLIT      | LCX_INDEX_INTERIOR | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |          2160 |      36 |
| LOP_END_CKPT          | LCX_NULL           | NULL                                         |           136 |       1 |
| LOP_FORMAT_PAGE       | LCX_HEAP           | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |        859236 |   10229 |
| LOP_FORMAT_PAGE       | LCX_IAM            | Unknown Alloc Unit                           |            84 |       1 |
| LOP_FORMAT_PAGE       | LCX_INDEX_INTERIOR | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |          3108 |      37 |
| LOP_HOBT_DDL          | LCX_NULL           | NULL                                         |           648 |      18 |
| LOP_HOBT_DELTA        | LCX_NULL           | NULL                                         |        657088 |   10267 |
| LOP_IDENT_NEWVAL      | LCX_NULL           | NULL                                         |     100239960 | 2505999 |
| LOP_INSERT_ROWS       | LCX_CLUSTERED      | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |     258628000 | 2506000 |
| LOP_INSERT_ROWS       | LCX_HEAP           | dbo.#531856C7                                |            72 |       1 |
| LOP_INSERT_ROWS       | LCX_INDEX_INTERIOR | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |       1042776 |   10302 |
| LOP_MODIFY_HEADER     | LCX_HEAP           | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |        859236 |   10229 |
| LOP_MODIFY_HEADER     | LCX_INDEX_INTERIOR | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |          3192 |      38 |
| LOP_MODIFY_ROW        | LCX_IAM            | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |           704 |       8 |
| LOP_MODIFY_ROW        | LCX_PFS            | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |        934264 |   11550 |
| LOP_MODIFY_ROW        | LCX_PFS            | Unknown Alloc Unit                           |        783984 |    8909 |
| LOP_SET_BITS          | LCX_GAM            | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |         76980 |    1283 |
| LOP_SET_BITS          | LCX_GAM            | Unknown Alloc Unit                           |        534480 |    8908 |
| LOP_SET_BITS          | LCX_IAM            | dbo.#4F47C5E3.PK__#4F47C5E__3213E83F51300E55 |         76980 |    1283 |
| LOP_SET_BITS          | LCX_IAM            | Unknown Alloc Unit                           |        534480 |    8908 |
| LOP_SHRINK_NOOP       | LCX_NULL           | NULL                                         |            32 |       1 |
| LOP_XACT_CKPT         | LCX_NULL           | NULL                                         |            92 |       1 |
| Total                 | NULL               | NULL                                         |     367438748 | 5119297 |
+-----------------------+--------------------+----------------------------------------------+---------------+---------+

পরবর্তী সন্নিবেশগুলি টিএফ 610 (103 এমবি) এ লগিং করা হচ্ছে

+-------------------------+-------------------------+----------------------------------------------+---------------+---------+
|        Operation        |         Context         |                AllocUnitName                 | Size in Bytes |   Cnt   |
+-------------------------+-------------------------+----------------------------------------------+---------------+---------+
| LOP_BEGIN_CKPT          | LCX_NULL                | NULL                                         |           192 |       2 |
| LOP_BEGIN_XACT          | LCX_NULL                | NULL                                         |       1339796 |   11099 |
| LOP_BULK_EXT_ALLOCATION | LCX_NULL                | NULL                                         |         20616 |     162 |
| LOP_COMMIT_XACT         | LCX_NULL                | NULL                                         |        577096 |   11098 |
| LOP_CREATE_ALLOCCHAIN   | LCX_NULL                | NULL                                         |            40 |       1 |
| LOP_DELETE_SPLIT        | LCX_INDEX_INTERIOR      | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |          2160 |      36 |
| LOP_END_CKPT            | LCX_NULL                | NULL                                         |           272 |       2 |
| LOP_FORMAT_PAGE         | LCX_BULK_OPERATION_PAGE | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |        863520 |   10280 |
| LOP_FORMAT_PAGE         | LCX_IAM                 | Unknown Alloc Unit                           |            84 |       1 |
| LOP_FORMAT_PAGE         | LCX_INDEX_INTERIOR      | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |          3108 |      37 |
| LOP_HOBT_DELTA          | LCX_NULL                | NULL                                         |        666496 |   10414 |
| LOP_IDENT_NEWVAL        | LCX_NULL                | NULL                                         |     100239960 | 2505999 |
| LOP_INSERT_ROWS         | LCX_CLUSTERED           | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |         23544 |     218 |
| LOP_INSERT_ROWS         | LCX_HEAP                | dbo.#719CDDE7                                |            72 |       1 |
| LOP_INSERT_ROWS         | LCX_INDEX_INTERIOR      | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |       1042776 |   10302 |
| LOP_MODIFY_HEADER       | LCX_BULK_OPERATION_PAGE | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |        780216 |   10266 |
| LOP_MODIFY_HEADER       | LCX_HEAP                | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |       1718472 |   20458 |
| LOP_MODIFY_HEADER       | LCX_INDEX_INTERIOR      | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |          3192 |      38 |
| LOP_MODIFY_ROW          | LCX_IAM                 | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |           704 |       8 |
| LOP_MODIFY_ROW          | LCX_PFS                 | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |        114832 |    1307 |
| LOP_MODIFY_ROW          | LCX_PFS                 | Unknown Alloc Unit                           |        231696 |    2633 |
| LOP_RANGE_INSERT        | LCX_NULL                | NULL                                         |            48 |       1 |
| LOP_SET_BITS            | LCX_GAM                 | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |         77100 |    1285 |
| LOP_SET_BITS            | LCX_GAM                 | Unknown Alloc Unit                           |        157920 |    2632 |
| LOP_SET_BITS            | LCX_IAM                 | dbo.#6DCC4D03.PK__#6DCC4D0__3213E83F6FB49575 |         77100 |    1285 |
| LOP_SET_BITS            | LCX_IAM                 | Unknown Alloc Unit                           |        157920 |    2632 |
| LOP_XACT_CKPT           | LCX_NULL                | NULL                                         |            92 |       1 |
| Total                   | NULL                    | NULL                                         |     108102960 | 2602218 |
+-------------------------+-------------------------+----------------------------------------------+---------------+---------+

বিস্তারিত নিশ্চিতকরণের জন্য ধন্যবাদ। সুতরাং প্রশ্নটি এখনও স্থির করে রাখছে, কেন আপনার শব্দটি ব্যবহার করে ডিলেট করুন সত্যিকার অর্থে খালি টেবিলে ফিরে আসছেন না । এছাড়াও, ব্যাচ প্রসেসিং লুপে পরিষ্কার / জনবহুল ব্যবহার করা হলে # টিম্প টেবিলগুলি ব্যবহার করার পক্ষে এটি যুক্তিযুক্ত হবে।
孔夫子

1
@ রিচার্ড দ্যকিউই - নিজে থেকে TRUNCATEওভারের সুবিধাও DELETEতার পক্ষে যুক্তিযুক্ত হবে। আমি খুব কম সংখ্যক সারিগুলির জন্য টেবিলের ভেরিয়েবলগুলি খুব কমই বিবেচনা করব।
মার্টিন স্মিথ

এটি অলস শোনাবে, তবে কোনও ব্যাচে 1000 বার 1 টি 10-রেকর্ড (পরিবর্তনশীল) eোকানো একই লক্ষণগুলি দেখায় না? বিপুল সংখ্যক সারি ব্যবহার কেবল ইস্যুটিকে আরও বাড়িয়ে তোলার জন্য এবং পার্থক্যটি আরও ভালভাবে দেখার জন্য স্কেল সরবরাহ করে। প্রশ্নের সংক্ষিপ্তসারটি একটি উপায় বা অন্যটি প্রমাণ করা যে # টেম্প টেবিলগুলি আরও ভাল হবে, একবার যখন আমরা জানতে পারি পার্থক্যটি কী।
孔夫子

ভাল আমার তত্ত্বটি হ'ল এটি হ'ল 10,000+পৃষ্ঠাগুলি বরাদ্দ যা অনেক বেশি অনুকূলিত উপায়ে ঘটে এবং মনে হয় পৃষ্ঠার উপরের পৃষ্ঠায় কিছু এড়াতে পারে। ছোট সন্নিবেশকারীদের জন্য আমি এ জাতীয় কোনও পার্থক্য কম তাত্পর্যপূর্ণ হওয়ার প্রত্যাশা করব।
মার্টিন স্মিথ

@ রিচার্ড দ্য কিউই - ধন্যবাদ! এ সম্পর্কে আরও কিছু বলার আছে। আমি এসকিউএল কিউই হিসাবে একই সংস্করণে আপগ্রেড করার চেষ্টা করব এবং আমি এখনও বিভিন্ন কোড পাথগুলি দেখতে পাচ্ছি কিনা তা দেখার জন্য যদি তাই হয় তবে এটি হার্ডওয়ার নির্ভর নির্ভর করে যে এটি এমন একটি পার্থক্য করে (আমার এসএসডি-তে সমস্ত ডেটা এবং লগ ফাইলগুলি আমার ডেস্কটপ পিসিতে হয়েছে)
মার্টিন স্মিথ

0

পর্যবেক্ষণ এবং জল্পনা। । ।

কিছু সিস্টেমে CURRENT_TIMESTAMP বর্তমান লেনদেন শুরুর সময় হিসাবে সংজ্ঞায়িত করা হয়। CURRENT_TIMESTAMP এসকিউএল সার্ভারে কীভাবে আচরণ করে সে সম্পর্কে কোনও তাত্ক্ষণিক অনুসন্ধানে কোনও নির্দিষ্ট দলিল নেই। তবে এসকিউএল সার্ভারের ডিফল্ট মোড হ'ল লেনদেনগুলিকে স্ব-স্বীকৃতি দেওয়া এবং এখানে কোনও শুরু ট্রান্সেকশন নেই, সুতরাং এটি INSERT বিবৃতি দেওয়ার সাথে সাথে সময় হওয়া উচিত । (মোছা বিবৃতিটি স্বয়ংক্রিয়ভাবে প্রতিশ্রুতিবদ্ধ হওয়া উচিত এবং এসকিউএল সার্ভারে CURRENT_TIMESTAMP যেভাবেই কাজ করে, আপনি স্বয়ংক্রিয়ভাবে প্রতিশ্রুতিবদ্ধ লেনদেনগুলি ব্যবহার করার সময় ডিলিট স্টেটমেন্টটির সাথে কিছু করার দরকার নেই))

প্রথম পুনরাবৃত্তিতে, মোছা বিবৃতিটির কোনও আসল কাজ নেই এবং লগ করার জন্য কোনও স্বতন্ত্র সারি নেই। সম্ভবত অপটিমাইজার এটি জানে এবং এটি প্রথম পুনরাবৃত্তির জন্য সময় হ্রাস করে। (মুছার জন্য কোনও সারি নেই এবং লগ করার জন্য কোনও পৃথক সারি নেই))

মুছে ফেলার আগে সন্নিবেশ করে আপনি এটি (আমার মনে হয়) পরীক্ষা করতে পারেন।


আমি আজ প্রশ্নের উত্তর দেওয়া বন্ধ করতে যাচ্ছি। বা আমি যখন যা বাক্সে জিনিস টাইপ করি তখন যা হয় তা আমি করি।
মাইক শেরিল 'ক্যাট রিকল'

এই উত্তরটি অপ্রচলিত, স্পর্শকাতর এবং বিভ্রান্তিকর হিসাবে মুছে ফেলা উচিত?
孔夫子
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.