এসকিউএল TRUNCATE
এবং এর মধ্যে পার্থক্য কী DELETE
?
যদি আপনার উত্তর প্ল্যাটফর্ম নির্দিষ্ট, দয়া করে এটি নির্দেশ করুন।
এসকিউএল TRUNCATE
এবং এর মধ্যে পার্থক্য কী DELETE
?
যদি আপনার উত্তর প্ল্যাটফর্ম নির্দিষ্ট, দয়া করে এটি নির্দেশ করুন।
উত্তর:
পার্থক্যের একটি তালিকা এখানে। আমি ওরাকল-নির্দিষ্ট বৈশিষ্ট্যগুলি হাইলাইট করেছি এবং আশা করি সম্প্রদায়টি অন্য বিক্রেতাদের নির্দিষ্ট পার্থক্যটিও যুক্ত করতে পারে। পার্থক্য যা বেশিরভাগ বিক্রেতার কাছে সাধারণ তা নীচে হাইলাইট করা পার্থক্য সহ সরাসরি শিরোনামের নীচে যেতে পারে।
আপনি যদি কোনও টেবিল থেকে সমস্ত সারি দ্রুত মুছে ফেলতে চান এবং আপনি সত্যিই নিশ্চিত যে আপনি এটি করতে চান এবং টেবিলগুলির বিপরীতে আপনার কাছে বিদেশী কী নেই, তবে একটি ট্রানসেট সম্ভবত মুছে ফেলার চেয়ে দ্রুত হতে চলেছে ।
নীচে বিস্তারিত হিসাবে সিস্টেম-নির্দিষ্ট বিভিন্ন বিষয় বিবেচনা করতে হবে।
মুছুন হ'ল ডিএমএল, ট্র্যাঙ্কেট হ'ল ডিডিএল ( ডিডিএল এবং ডিএমএল কী? )
বিক্রেতার দ্বারা পরিবর্তনশীল
SQL সার্ভার
ছাঁটাই ফিরে ঘূর্ণিত করা যেতে পারে।
পোস্টগ্রি
ছাঁটাই ফিরে ঘূর্ণিত করা যেতে পারে।
আকাশবাণী
যেহেতু একটি ট্রানসেটটি ডিডিএল হয় এটিতে দুটি প্রতিশ্রুতি জড়িত, একটির আগে এবং পরে বিবৃতি কার্যকর করার পরে। সুতরাং কাটা কাটা পিছনে ফেলা যাবে না এবং কাটা কাটা প্রক্রিয়া ব্যর্থতা যাই হোক না কেন একটি প্রতিশ্রুতি জারি করেছে।
তবে নীচে ফ্ল্যাশব্যাক দেখুন।
মুছুন স্থান পুনরুদ্ধার করে না, কাটা স্থান পুনরুদ্ধার করে
আকাশবাণী
আপনি যদি রিসোর্স স্টোরজ ক্লজটি ব্যবহার করেন তবে ডেটা বিভাগগুলি ডি-বরাদ্দ করা হয় না, যা যদি টেবিলটি ডেটা দিয়ে পুনরায় লোড করা হয় তবে প্রান্তিকভাবে আরও দক্ষ হতে পারে। উচ্চ জল চিহ্ন পুনরায় সেট করা হয়।
মুছে ফেলা সমস্ত সারি সরানোর জন্য বা কেবলমাত্র সারিগুলির উপসেট ব্যবহার করা যেতে পারে। কাটা সমস্ত সারি সরান।
আকাশবাণী
যখন কোনও টেবিলটি বিভাজন করা হয়, পৃথক পার্টিশনগুলি বিচ্ছিন্নভাবে কাটা যায়, সুতরাং সমস্ত টেবিলের ডেটা আংশিক অপসারণ সম্ভব।
মুছুন কোনও ক্লাস্টারের অভ্যন্তরে টেবিল এবং টেবিলগুলিতে প্রয়োগ করা যেতে পারে। কেটে নেওয়া কেবল টেবিল বা পুরো ক্লাস্টারে প্রয়োগ হয়। (ওরাকল নির্দিষ্ট হতে পারে)
আকাশবাণী
মুছুন ডেটা অবজেক্ট আইডিকে প্রভাবিত করে না, তবে ছাঁটাই একটি নতুন ডেটা অবজেক্ট আইডি বরাদ্দ করে যদি না সারণীর তৈরির পরে আর কখনও সন্নিবেশ না করা হয় এমনকি এমন একক সন্নিবেশ যা আবার ঘূর্ণায়মান হয় তা কোনও নতুন ডেটা অবজেক্ট আইডি কে কাটাবার পরে নিযুক্ত করে ।
ফ্ল্যাশব্যাক মুছে ফেলা জুড়ে কাজ করে, কিন্তু একটি ছাঁটাই অপারেশন করার আগে রাজ্যে ফ্ল্যাশব্যাককে বাধা দেয়।
তবে, 11 জিআর 2 থেকে এক্সপ্লোর পরিচালনা সংস্করণ ব্যতীত ফ্ল্যাশব্যাক আর্কাইভ বৈশিষ্ট্যটি এটিকে অনুমতি দেয়
ওরাকলে http://docs.oracle.com/cd/E11882_01/appdev.112/e41502/adfns_flashback.htm#ADFNS638 এ FLASHBACK এর ব্যবহার
পরিবর্তনশীল
আকাশবাণী
মুছুন অন্য কোনও ব্যবহারকারীর বা ভূমিকার জন্য কোনও টেবিলে মঞ্জুরি দেওয়া যেতে পারে, তবে কোনও টেবিল অনুদান ব্যবহার করে ড্রপ করা যাবে না।
মুছুন অল্প পরিমাণে পুনরায় এবং প্রচুর পরিমাণে পূর্বাবস্থা তৈরি করে। কেটে নেওয়া প্রতিটি একটি নগন্য পরিমাণ উত্পাদন করে।
আকাশবাণী
একটি কাটা ক্রিয়া অপ্রয়োজনীয় সূচকগুলি আবার ব্যবহারযোগ্য nd মুছুন না।
যখন একটি সক্ষম বিদেশী কী টেবিলটিকে উল্লেখ করে তখন একটি ছাঁটাই প্রয়োগ করা যাবে না। মুছে ফেলা সহ চিকিত্সা বিদেশী কীগুলির কনফিগারেশনের উপর নির্ভর করে।
আকাশবাণী
কাটা কাটা জন্য একটি একচেটিয়া টেবিল লক প্রয়োজন, মোছার জন্য একটি ভাগ করা টেবিল লক প্রয়োজন। সুতরাং টেবিলের লকগুলি অক্ষম করা কোনও টেবিলের উপর কাটা কাটা কার্যক্রম রোধ করার একটি উপায়।
ডিএমএল ট্রিগারগুলি একটি কাটা কাটাতে গুলি চালায় না।
আকাশবাণী
ডিডিএল ট্রিগারগুলি উপলব্ধ।
আকাশবাণী
একটি ডেটাবেস লিঙ্কের মাধ্যমে কাটা কাটা জারি করা যায় না।
SQL সার্ভার
ছাঁটাই আইডেন্টিটি কলামের ধরণের ক্রম পুনরায় সেট করে, মোছা না।
বেশিরভাগ বাস্তবায়নে, একটি DELETE
বিবৃতি ক্লায়েন্টকে সরিয়ে দেওয়া সারিগুলিতে ফিরে আসতে পারে।
যেমন একটি ওরাকল পিএল / এসকিউএল সাবপ্রোগ্রামে আপনি করতে পারেন:
DELETE FROM employees_temp
WHERE employee_id = 299
RETURNING first_name,
last_name
INTO emp_first_name,
emp_last_name;
কাটা কাটা এবং মোছার মধ্যে পার্থক্য নীচে তালিকাভুক্ত করা হয়েছে:
+----------------------------------------+----------------------------------------------+
| Truncate | Delete |
+----------------------------------------+----------------------------------------------+
| We can't Rollback after performing | We can Rollback after delete. |
| Truncate. | |
| | |
| Example: | Example: |
| BEGIN TRAN | BEGIN TRAN |
| TRUNCATE TABLE tranTest | DELETE FROM tranTest |
| SELECT * FROM tranTest | SELECT * FROM tranTest |
| ROLLBACK | ROLLBACK |
| SELECT * FROM tranTest | SELECT * FROM tranTest |
+----------------------------------------+----------------------------------------------+
| Truncate reset identity of table. | Delete does not reset identity of table. |
+----------------------------------------+----------------------------------------------+
| It locks the entire table. | It locks the table row. |
+----------------------------------------+----------------------------------------------+
| Its DDL(Data Definition Language) | Its DML(Data Manipulation Language) |
| command. | command. |
+----------------------------------------+----------------------------------------------+
| We can't use WHERE clause with it. | We can use WHERE to filter data to delete. |
+----------------------------------------+----------------------------------------------+
| Trigger is not fired while truncate. | Trigger is fired. |
+----------------------------------------+----------------------------------------------+
| Syntax : | Syntax : |
| 1) TRUNCATE TABLE table_name | 1) DELETE FROM table_name |
| | 2) DELETE FROM table_name WHERE |
| | example_column_id IN (1,2,3) |
+----------------------------------------+----------------------------------------------+
ড্রপ
DROP কমান্ড ডাটাবেস থেকে একটি সারণী অপসারণ করে। সমস্ত সারণির সারি, সূচি এবং সুবিধাগুলিও সরানো হবে। কোনও ডিএমএল ট্রিগারকে বরখাস্ত করা হবে না। অপারেশন ফিরে ঘূর্ণিত করা যাবে না।
অগ্রভাগ ছাঁটিয়া দেত্তয়া
ট্রানসেট একটি সারণী থেকে সমস্ত সারি সরিয়ে দেয়। অপারেশনটি আবার ঘুরিয়ে দেওয়া যাবে না এবং কোনও ট্রিগারও বরখাস্ত করা হবে না। এর মতো, ট্রানসেট দ্রুততর এবং ডিলেট হিসাবে যতটা পূর্বাবস্থায় ফিরে আসে তা ব্যবহার করে না। ছাঁটাই করার সময় সারণী স্তরের লক যুক্ত হবে।
মুছে ফেলা
DELETE কমান্ডটি একটি সারণী থেকে সারি সরাতে ব্যবহৃত হয়। শুধুমাত্র কয়েকটি সারি অপসারণের জন্য যেখানে একটি ক্লজটি ব্যবহার করা যেতে পারে। যদি কোনও WHERE শর্ত নির্দিষ্ট না করা থাকে, সমস্ত সারি সরানো হবে। একটি বিলোপ অপারেশন সম্পাদন করার পরে পরিবর্তন স্থায়ী করতে বা এটিকে পূর্বাবস্থায় ফেরাতে আপনাকে লেনদেন কমিট বা রোলব্যাক করতে হবে। নোট করুন যে এই অপারেশনটি টেবিলের সমস্ত মোছার কারণটিকে আগুন ধরিয়ে দেবে। মোছার সময় সারি স্তরের লক যুক্ত করা হবে।
থেকে: http://www.orafaq.com/faq/differences_between_truncate_delete_ এবং_ড্রোপ_কম্যান্ডস
সমস্ত ভাল উত্তর, যা আমি অবশ্যই যোগ করতে হবে:
যেহেতু TRUNCATE TABLE
একটি ডিডিএল ( ডেটা সংজ্ঞা ভাষা ), কোনও ডিএমএল ( ডেটা ম্যানিপুলেশন ল্যাঙ্গেজ ) কমান্ড নয়, এটি Delete Triggers
চালায় না।
SQL সার্ভার মুছুন 'বনাম truncate সংক্ষিপ্তসার
: সম্পূর্ণ নিবন্ধ জন্য এই লিঙ্কটি অনুসরণ করুন http://codaffection.com/sql-server-article/delete-vs-truncate-in-sql-server/
ডটনেট ভিড় নিবন্ধ থেকে নেওয়া: এসকিউএল সার্ভারে বনাম ট্রান্সকেট মুছুন
এসকিউএল সার্ভার বা মাইএসকিউএল সহ, অটো বর্ধনের সাথে যদি কোনও পিকে থাকে, কাউন্ট কাউন্টারের পুনরায় সেট করবে।
DBCC CHECKIDENT (table_name, RESEED, 1)
"কাটা কাটা কিছু লগ করে না" সঠিক। আমি আরও যেতে হবে:
লেনদেনের প্রসঙ্গে কাটা কাটা কার্যকর হয় না।
মুছে ফেলা ওভার মুছে ফেলার গতি সুবিধা সুস্পষ্ট হওয়া উচিত। এই সুবিধাটি আপনার পরিস্থিতির উপর নির্ভর করে তুচ্ছ থেকে শুরু করে বিশাল অবধি।
যাইহোক, আমি কাণ্ডকে অনিচ্ছাকৃতভাবে প্রাসঙ্গিক অখণ্ডতা ভঙ্গ করতে দেখেছি এবং অন্যান্য সীমাবদ্ধতা লঙ্ঘন করেছি। কোনও লেনদেনের বাইরে ডেটা সংশোধন করে আপনি যে শক্তি অর্জন করেন তা জাল ছাড়াই টাইটরপ চলার সময় আপনি যে উত্তরাধিকার সূত্রে পান তার ভারসাম্য বজায় রাখতে হবে।
TRUNCATE
এটি ডিডিএল বিবৃতি যেখানে DELETE
একটি ডিএমএল বিবৃতি। নীচে উভয়ের মধ্যে পার্থক্য রয়েছে:
হিসাবে TRUNCATE
একটি DDL (হয় ডেটা সংজ্ঞা ভাষা এটা প্রয়োজন হয় না) বিবৃতি একটি স্থায়ী পরিবর্তন করতে কমিট। এবং এই কারণেই কাটা কাটা দ্বারা মোছা সারিগুলি রোলব্যাক করা যায়নি। অন্যদিকে DELETE
একটি ডিএমএল ( ডেটা ম্যানিপুলেশন ল্যাঙ্গুয়েজ ) বিবৃতি তাই এর প্রভাব স্থায়ী করতে সুস্পষ্ট প্রতিশ্রুতি প্রয়োজন।
TRUNCATE
সর্বদা সারণি থেকে সমস্ত সারি সরিয়ে ফেলা হয়, টেবিলটি খালি রাখুন এবং টেবিলের কাঠামো অক্ষত থাকবে যেখানে DELETE
শর্তসাপেক্ষে অপসারণ করা যেতে পারে যেখানে যেখানে ক্লজটি ব্যবহৃত হয়।
TRUNCATE TABLE
বিবৃতি দ্বারা মুছে ফেলা সারিগুলি পুনরুদ্ধার করা যাবে না এবং আপনি TRUNCATE
বিবৃতিতে যেখানে ধারাটি নির্দিষ্ট করতে পারবেন না ।
TRUNCATE
বিবৃতি ট্রিগার গুলি করে না ডিলিট ট্রিগার উপর বিরোধিতা DELETE
বিবৃতি
এখানে বিষয়টির সাথে প্রাসঙ্গিক খুব ভাল লিঙ্ক।
হ্যাঁ, মোছা ধীরে ধীরে, ট্রানসেট দ্রুত is কেন?
মোছার জন্য অবশ্যই রেকর্ডগুলি পড়তে হবে, সীমাবদ্ধতাগুলি পরীক্ষা করতে হবে, ব্লকটি আপডেট করতে হবে, সূচকগুলি আপডেট করতে হবে এবং পুনরায় / পূর্বাবস্থা উত্পন্ন করতে হবে। এই সব সময় লাগে।
ট্র্যাঙ্কেট কেবল টেবিলের জন্য ডেটাবেজে একটি পয়েন্টার সামঞ্জস্য করে (উচ্চ জল চিহ্ন) এবং পুফ! তথ্য চলে গেছে।
এটি ওরাকল নির্দিষ্ট, আফাইক AI
অগ্রভাগ ছাঁটিয়া দেত্তয়া
ট্র্যাঙ্কেট এসকিউএল ক্যোয়ারী পৃথক সারি মুছে ফেলা লগ না করে একটি সারণী থেকে সমস্ত সারি সরিয়ে দেয়।
মুছে ফেলা
একটি মুছে ফেলা সারিটি কার্যকর করতে, লক্ষ্য সারণীতে মুছার অনুমতিগুলি প্রয়োজন। আপনার যদি একটি মুছে ফেলার জন্য যেখানে একটি বিধি ব্যবহার করতে হবে, সেই সাথে নির্বাচনের অনুমতিও প্রয়োজন।
দুর্ঘটনাক্রমে আপনি মুছুন / ছাঁটাই ব্যবহার করে টেবিল থেকে সমস্ত ডেটা সরিয়ে ফেলেছেন। আপনি প্রতিশ্রুতিবদ্ধ লেনদেন রোলব্যাক করতে পারেন। মোছা / কাটা কাটা ঘটার সময় অবধি শেষ ব্যাকআপ এবং চালিত লেনদেনের লগ পুনরুদ্ধার করুন।
নীচে সম্পর্কিত তথ্য একটি ব্লগ পোস্ট থেকে :
ডাটাবেসে কাজ করার সময়, আমরা তাদের মধ্যে পার্থক্য না জেনে মুছুন এবং ছাঁটাই ব্যবহার করছি। এই নিবন্ধে আমরা স্কিলের মধ্যে মুছুন এবং ছাঁটাইয়ের মধ্যে পার্থক্য আলোচনা করব।
মুছে ফেলা:
- মুছুন একটি ডিএমএল কমান্ড।
- মুছুন বিবৃতিটি একটি সারি লক ব্যবহার করে কার্যকর করা হয়, সারণীর প্রতিটি সারি মুছে ফেলার জন্য লক করা আছে।
- ক্লজ যেখানে ফিল্টার নির্দিষ্ট করতে পারি।
- শর্ত বিদ্যমান থাকলে এটি নির্দিষ্ট ডেটা মুছে দেয়।
- ক্রিয়াকলাপগুলি একটি ট্রিগার মুছুন কারণ ক্রিয়াকলাপ স্বতন্ত্রভাবে লগ হয়েছে।
- কাটা কাটা থেকে ধীর কারণ এটি লগগুলি রাখে
অগ্রভাগ ছাঁটিয়া দেত্তয়া
- কাটা একটি ডিডিএল কমান্ড।
- কাটা টেবিল সর্বদা টেবিল এবং পৃষ্ঠা লক করে তবে প্রতিটি সারি থাকে না s এটি সমস্ত ডেটা সরিয়ে দেয়।
- অবস্থা যেখানে ব্যবহার করতে পারবেন না।
- এটি সমস্ত ডেটা অপসারণ করে।
- কাটা টেবিলটি একটি ট্রিগার সক্রিয় করতে পারে না কারণ অপারেশনটি পৃথক সারি মোছার লগ করে না।
- কর্মক্ষমতা অনুযায়ী দ্রুততর, কারণ এটি কোনও লগ রাখে না।
দ্রষ্টব্য: লেনদেনের সাথে ব্যবহার করার সময় মুছুন এবং ছাঁটাই উভয়ই আবার ঘূর্ণিত হতে পারে। যদি লেনদেন হয়ে যায়, প্রতিশ্রুতিবদ্ধ হয়ে থাকে তবে আমরা ট্রান্সকেট কমান্ডটি রোলব্যাক করতে পারি না, তবে লগ ফাইলগুলি থেকে ভবিষ্যতে রোলব্যাকের প্রয়োজন হলে লগ ফাইলটিতে রেকর্ড রেকর্ড মুছে ফেলার সাথে আমরা লগ ফাইলগুলি থেকে মুছে ফেলুন আদেশটি রোলব্যাক করতে পারি।
আপনি যে টেবিলটি কেটে ফেলতে চাইছেন তা উল্লেখ করে যদি আপনার কাছে কোনও বিদেশী কী বাধা থাকে তবে রেফারিং টেবিলটিতে কোনও ডেটা না থাকলেও এটি কাজ করবে না। এর কারণ, ডিএমএল না করে বিদেশী কী চেকিং ডিডিএল দিয়ে করা হয়। টেবিলের জন্য অস্থায়ীভাবে বিদেশী কী বাধা (গুলি) অক্ষম করে এটি কাছাকাছি যেতে পারে।
সারণী মুছে ফেলা একটি লগ করা অপারেশন। সুতরাং প্রতিটি সারি মুছে ফেলা লেনদেনে লগ হয়, যা এটি ধীর করে তোলে। কাটা টেবিলটি একটি সারণীতে সমস্ত সারি মুছে ফেলবে, তবে এটি প্রতিটি সারি মুছে ফেলার লগ করবে না পরিবর্তে এটি সারণির ডেটা পৃষ্ঠাগুলির অবনমনকে লগ করে, যা এটি আরও দ্রুত করে তোলে।
Accident যদি দুর্ঘটনাক্রমে আপনি মুছুন / ছাঁটাই ব্যবহার করে টেবিল থেকে সমস্ত ডেটা সরিয়ে ফেলেছেন। আপনি প্রতিশ্রুতিবদ্ধ লেনদেন রোলব্যাক করতে পারেন। মোছা / কাটা কাটা ঘটার সময় অবধি শেষ ব্যাকআপ এবং চালিত লেনদেনের লগ পুনরুদ্ধার করুন।
এসকিউএল সার্ভার 2005-এ আমি বিশ্বাস করি যে আপনি একটি কাটা কাটা রোলব্যাক করতে পারেন
মুছে ফেলা
DELETE কমান্ডটি একটি সারণী থেকে সারি সরাতে ব্যবহৃত হয়। শুধুমাত্র কয়েকটি সারি অপসারণের জন্য যেখানে একটি ক্লজটি ব্যবহার করা যেতে পারে। যদি কোনও WHERE শর্ত নির্দিষ্ট না করা থাকে, সমস্ত সারি সরানো হবে। একটি বিলোপ অপারেশন সম্পাদন করার পরে পরিবর্তন স্থায়ী করতে বা এটিকে পূর্বাবস্থায় ফেরাতে আপনাকে লেনদেন কমিট বা রোলব্যাক করতে হবে। নোট করুন যে এই অপারেশনটি টেবিলের সমস্ত মোছার কারণটিকে আগুন ধরিয়ে দেবে।
অগ্রভাগ ছাঁটিয়া দেত্তয়া
ট্রানসেট একটি সারণী থেকে সমস্ত সারি সরিয়ে দেয়। অপারেশনটি আবার ঘুরিয়ে দেওয়া যাবে না এবং কোনও ট্রিগারও বরখাস্ত করা হবে না। তেমনি, ট্র্যাকট দ্রুত হয় এবং ডিলেট হিসাবে যতটা পূর্বাবস্থায় ফিরে আসে তা ব্যবহার করে না।
ড্রপ
DROP কমান্ড ডাটাবেস থেকে একটি সারণী অপসারণ করে। সমস্ত সারণির সারি, সূচি এবং সুবিধাগুলিও সরানো হবে। কোনও ডিএমএল ট্রিগারকে বরখাস্ত করা হবে না। অপারেশন ফিরে ঘূর্ণিত করা যাবে না।
ড্রপ এবং ট্রানসেট ডিডিএল কমান্ড, যেখানে ডিলেট একটি ডিএমএল কমান্ড। অতএব, মুছে ফেলা অপারেশনগুলি আবার ঘুরিয়ে ফেলা যায় (পূর্বাবস্থায় ফেরা), যখন ডিআআরপি এবং ট্রানসেটের ক্রিয়াকলাপগুলি আবার ঘুরিয়ে দেওয়া যায় না।
থেকে: http://www.orafaq.com/faq/differences_between_truncate_delete_ এবং_ড্রোপ_কম্যান্ডস
ট্রানজিকেট কোনও লেনদেনের মধ্যে আবৃত থাকলে ফিরিয়ে আনা যায়।
নীচের দুটি উল্লেখ দেখুন এবং নিজেকে পরীক্ষা করুন: -
ট্র্যাঙ্কেট বনাম ডিলেট হ'ল এসকিউএল সাক্ষাত্কারের সময় অন্যতম কুখ্যাত প্রশ্ন। কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনি এটি ভালভাবে ইন্টারভিউয়ারকে ব্যাখ্যা করেছেন বা এটি আপনার কাজের জন্য ব্যয় করতে পারে। সমস্যাটি হ'ল অনেকেই সচেতন নয় তাই সম্ভবত আপনি উত্তরটি ভুল হিসাবে বিবেচনা করবেন যদি আপনি তাদেরকে বলেন যে, ইয়েস ট্রাঙ্কেটটি আবার ঘুরিয়ে দেওয়া যেতে পারে।
আসল উত্তরের একটি ছোট সংশোধন - মুছুনও পুনর্বার উল্লেখযোগ্য পরিমাণে উত্পন্ন করে (পূর্বাবস্থায় ফেরানো নিজেই পুনরায় দ্বারা সুরক্ষিত থাকে)। এটি অটোট্রেস আউটপুট থেকে দেখা যায়:
SQL> delete from t1;
10918 rows deleted.
Elapsed: 00:00:00.58
Execution Plan
----------------------------------------------------------
0 DELETE STATEMENT Optimizer=FIRST_ROWS (Cost=43 Card=1)
1 0 DELETE OF 'T1'
2 1 TABLE ACCESS (FULL) OF 'T1' (TABLE) (Cost=43 Card=1)
Statistics
----------------------------------------------------------
30 recursive calls
12118 db block gets
213 consistent gets
142 physical reads
3975328 redo size
441 bytes sent via SQL*Net to client
537 bytes received via SQL*Net from client
4 SQL*Net roundtrips to/from client
2 sorts (memory)
0 sorts (disk)
10918 rows processed
এসকিউএল সার্ভারে মুছে ফেলা এবং ট্রানসেটের মধ্যে পার্থক্য সম্পর্কে আমার বিশদ উত্তর এখানে
• ডেটা সরান : প্রথম প্রথম জিনিস, উভয় টেবিল থেকে সারি মুছে ফেলার জন্য ব্যবহার করা যাবে।
তবে একটি মুছে ফেলা কেবল সারণি থেকে নয় সেক্ষেত্রে একটি ভিউ বা কোনও OPENROWSET বা সরবরাহকারীর সক্ষমতা সাপেক্ষে একটি অপেনের ফলাফল থেকে সারিগুলি সরাতে ব্যবহার করা যেতে পারে।
• ধারা থেকে : সঙ্গে DELETE আপনার কাছে এক টেবিলে / ভিউ থেকে ডিলিট সারি / দফা থেকে অন্য ব্যবহারের মাধ্যমে অন্য টেবিল থেকে সারি উপর ভিত্তি করে rowset_function_limited পারবেন না। সেই FROM ধারাতে আপনি সাধারণ JOIN শর্তও লিখতে পারেন। প্রকৃতপক্ষে আপনি একটি নির্বাচনী বিবৃতি থেকে একটি মুছে ফেলা বিবরণী তৈরি করতে পারেন যার মধ্যে SELE- কে DELETE প্রতিস্থাপন করে এবং কলামের নামগুলি মুছে ফেলার মাধ্যমে কোনও সামগ্রিক ফাংশন নেই।
ট্রানসেটের সাহায্যে আপনি এটি করতে পারবেন না।
• যেখানে : একটি ট্রানসেটের যেখানে শর্ত থাকতে পারে না, তবে একটি মোছা পারে। এর অর্থ ট্রানসেটের সাহায্যে আপনি একটি নির্দিষ্ট সারি বা সারিগুলির নির্দিষ্ট গ্রুপ মুছতে পারবেন না। ট্র্যাঙ্কেট টেবিল হ'ল বিধি মোছার সাথে সমান, যেখানে কোনও ধারা নেই।
Formance পারফরম্যান্স : truncate টেবিল দ্রুত এবং ব্যবহার কম সিস্টেম এবং লেনদেন লগ সম্পদ। এবং এর অন্যতম কারণ হ'ল উভয় বিবৃতি দ্বারা ব্যবহৃত লকগুলি। মোছা বিবৃতিটি একটি সারি লক ব্যবহার করে কার্যকর করা হয়, সারণীর প্রতিটি সারি মুছে ফেলার জন্য লক করা আছে। ট্র্যাঙ্কেট টেবিল সর্বদা সারণি এবং পৃষ্ঠাটিকে লক করে তবে প্রতিটি সারি নয়।
• লেনদেন লগ : মোছা বিবৃতিটি একবারে সারিগুলি সরিয়ে দেয় এবং প্রতিটি সারির জন্য লেনদেনে লগের পৃথক এন্ট্রি করে makes
ট্র্যাঙ্কেট টেবিল সারণীর ডেটা সংরক্ষণ করার জন্য ব্যবহৃত ডেটা পৃষ্ঠাগুলিকে অবনতি করে ডেটা সরিয়ে দেয় এবং লেনদেনের লগে কেবল পৃষ্ঠা বিলোপ রেকর্ড করে।
• পৃষ্ঠাগুলি : একটি মোছার বিবৃতি কার্যকর করার পরে, সারণীতে এখনও খালি পৃষ্ঠা থাকতে পারে। ট্র্যাঙ্কেট টেবিলের ডেটা সঞ্চয় করার জন্য ব্যবহৃত ডেটা পৃষ্ঠাগুলিকে অবনতি করে ডেটা সরিয়ে দেয়।
• ট্রিগার : truncate টেবিলের উপর মুছুন ট্রিগার সক্রিয় নেই। সুতরাং ট্রানসেট ব্যবহার করার সময় আপনাকে অবশ্যই খুব সতর্কতা অবলম্বন করা উচিত। সারণি মোছার সাথে সাথে কিছু স্বয়ংক্রিয় ক্লিনআপ বা লগিং অ্যাকশন করার জন্য যদি ট্রিগারটিকে টেবিলের উপরে সংজ্ঞায়িত করা হয় তবে কখনই ট্র্যাঙ্কেট ব্যবহার করা উচিত নয়।
Col পরিচয় কলাম : সত্যতা সহ যদি টেবিলটিতে একটি পরিচয় কলাম থাকে তবে column কলামটির কাউন্টারটি কলামের জন্য নির্ধারিত বীজ মানটিতে পুনরায় সেট করা হয়েছে। যদি কোনও বীজ সংজ্ঞায়িত না করা হয়, তবে ডিফল্ট মান 1 ব্যবহার করা হয়। মোছা পরিচয় কাউন্টারটিকে পুনরায় সেট করে না। সুতরাং আপনি যদি পরিচয় কাউন্টার ধরে রাখতে চান তবে পরিবর্তে ডিলিট ব্যবহার করুন।
• আত্ম : মুছে দিন লেনদেনের রেপ্লিকেশন বা একত্রীকরণ রেপ্লিকেশন ব্যবহৃত টেবিল বিরুদ্ধে ব্যবহার করা যাবে।
যদিও ট্রানসকেট লেনদেনের অনুলিপি বা মার্জ প্রতিরূপে জড়িত সারণীর বিরুদ্ধে ব্যবহার করা যায় না।
• রোলব্যাক : মুছে দিন বিবৃতি ফিরে ঘূর্ণিত করা যেতে পারে।
ট্রান্সকেশন ব্লকে আবদ্ধ থাকে এবং সেশনটি বন্ধ না হয়ে থাকে ট্রানসেটকে আবারও ঘুরিয়ে দেওয়া যায়। একবার সেশন বন্ধ হয়ে গেলে আপনি ট্রলসেট রোলব্যাক করতে পারবেন না।
• বিধিনিষেধ : যদি এটি একটি ট্রিগার লঙ্ঘন করে বা একটি বিদেশী কী বাধ্যতা সঙ্গে অন্য টেবিলে একটি সারিতে তথ্য দ্বারা রেফারেন্সড অপসারণ করার চেষ্টা করে মুছে দিন বিবৃতি বিফল হতে পারে। যদি মোছা একাধিক সারিগুলি সরায় এবং মুছে ফেলা সারিগুলির যে কোনও একটি ট্রিগার বা সীমাবদ্ধতা লঙ্ঘন করে, বিবৃতি বাতিল করা হয়, ত্রুটি ফিরে পাওয়া যায় এবং কোনও সারি সরানো হয় না।
এবং যদি ডিলেটিইটি ভিউয়ের বিরুদ্ধে ব্যবহার করা হয় তবে সেই ভিউটি অবশ্যই আপডেটের মতো দৃশ্য। ট্র্যাঙ্কেটটি সূচীকরণ দৃষ্টিতে ব্যবহৃত টেবিলের বিপরীতে ব্যবহার করা যাবে না।
বিদেশী কী বাধা দ্বারা সারণীটির বিপরীতে ট্রানসেট ব্যবহার করা যাবে না, যদি না কোনও টেবিলের একটি বিদেশী কী থাকে যা উল্লেখ করে।
DECLARE @ai as bigint
SET @ai =IDENT_CURRENT('tablename')
TRUNCATE TABLE tablename
DBCC checkident('tablename', RESEED, @ai)
বিবৃতি মুছে ফেলুন: এই কমান্ডটি শর্তের ভিত্তিতে সারণি থেকে সারিগুলি সরিয়ে দেয় যেখানে শর্ত নির্দিষ্ট করা না থাকলে টেবিল থেকে সমস্ত সারি মুছে ফেলা বা মুছে ফেলা হয়। তবে এটি টেবিলযুক্ত স্থানটি মুক্ত করে না।
একটি এসকিউএল মোছার বিবৃতিটির সিনট্যাক্সটি হ'ল:
টেবিলের নাম থেকে [WHERE শর্ত] মুছে দিন;
ট্রানকেট স্টেটমেন্ট: এই কমান্ডটি টেবিল থেকে সমস্ত সারি মুছে ফেলার জন্য এবং টেবিলযুক্ত স্থানটি মুক্ত করতে ব্যবহৃত হয়।
মুছে ফেলা
DELETE is a DML command DELETE you can rollback Delete = Only Delete- so it can be rolled back In DELETE you can write conditions using WHERE clause Syntax – Delete from [Table] where [Condition]
অগ্রভাগ ছাঁটিয়া দেত্তয়া
TRUNCATE is a DDL command You can't rollback in TRUNCATE, TRUNCATE removes the record permanently Truncate = Delete+Commit -so we can't roll back You can't use conditions(WHERE clause) in TRUNCATE Syntax – Truncate table [Table]
বিস্তারিত জানতে ভিজিট করুন
http://www.zilckh.com/what-is-the-difference-between-truncate-and-delete/
সংক্ষেপে, কাটা কাটা কিছু লগ করে না (তাই খুব দ্রুত তবে পূর্বাবস্থায় ফেরা যায় না) যেখানে মুছুন লগইন থাকে (এবং এটি বৃহত্তর লেনদেনের অংশ হতে পারে, রোলব্যাক ইত্যাদি হবে)। আপনার যদি এমন ডেটা থাকে যা আপনি কোনও টেবিলে চান না তবে আপনি লেনদেনের লগ পূরণের ঝুঁকি না চালিয়ে কাটতে পারলে সাধারণত কাটা ভাল is
এটি কার্যকর হওয়ার একটি বড় কারণ হ'ল যখন আপনাকে এক মিলিয়ন মিলিয়ন সারি সারণীতে ডেটা রিফ্রেশ করতে হবে তবে এটি পুনর্নির্মাণ করতে চান না। "মুছুন *" চিরকালের জন্য গ্রহণ করবে, যেখানে ট্র্যাঙ্কেটের পারফোমেন্স প্রভাবটি নগন্য হবে।
ডিবিলিঙ্কের মাধ্যমে ডিডিএল করতে পারি না।
এটি নয় যে কাটছাঁটি এসকিউএল সার্ভারে কিছু লগ করে না। সংক্ষিপ্ত বিবরণ কোনও তথ্য লগ করে না তবে এটি যে পৃষ্ঠায় আপনি ট্রান্সকেট বরখাস্ত করেছেন সেটির জন্য ডেটা পৃষ্ঠার অবনতি লগ করে।
এবং কাটা রেকর্ডটি রোলব্যাক হতে পারে যদি আমরা শুরুতে লেনদেনের সংজ্ঞা দিই এবং আমরা রোলব্যাকের পরে ছাঁটা রেকর্ডটি পুনরুদ্ধার করতে পারি। প্রতিশ্রুতিবদ্ধ কাটা লেনদেনের পরে লেনদেন লগ ব্যাকআপ থেকে কাটা রেকর্ডগুলি পুনরুদ্ধার করতে পারে না।
সংক্ষিপ্তসারটি এখানে রোলব্যাকডও হতে পারে এক্সপ্যামল
begin Tran
delete from Employee
select * from Employee
Rollback
select * from Employee
এসকিউএল এ ছাঁটাই এবং মুছুন দুটি কমান্ড যা টেবিল থেকে ডেটা অপসারণ বা মুছতে ব্যবহৃত হয়। যদিও প্রকৃতির উভয়ই এসকিএল কমান্ড ব্যবহারের আগে বিশদ সম্পর্কে অবগত না হওয়া অবধি অনেক সমস্যার সৃষ্টি করতে পারে। কমান্ডের একটি ভুল নির্বাচনের ফলস্বরূপ হয় খুব ধীর প্রক্রিয়া হয় এমনকি লগ বিভাগটিও ফুটিয়ে উঠতে পারে, যদি খুব বেশি ডেটা সরানোর প্রয়োজন হয় এবং লগ বিভাগটি যথেষ্ট না হয়। এজন্য এসকিউএল-তে কখন কাটা এবং মুছে ফেলা কমান্ডটি ব্যবহার করা উচিত তা জানা গুরুত্বপূর্ণ তবে এগুলি ব্যবহারের আগে আপনাকে কাটা এবং মুছার মধ্যে পার্থক্য সম্পর্কে সচেতন হওয়া উচিত এবং এর উপর ভিত্তি করে, আমাদের যখন ডিলেট অপসারণের জন্য আরও ভাল বিকল্প হয় তখন আমাদের এটি জানতে সক্ষম হওয়া উচিত টেবিলগুলি সাফ করার জন্য ডেটা বা ট্রুনকেট ব্যবহার করা উচিত।
এখানে ক্লিক করুন চেক দেখুন
মাইক্রোসফ্ট এসকিএল সার্ভারের সাথে নির্দিষ্ট আরও একটি পার্থক্য হ'ল delete
আপনি output
কী রেকর্ডস মুছে ফেলা হয়েছে তা ট্র্যাক করতে বিবৃতি ব্যবহার করতে পারেন , যেমন:
delete from [SomeTable]
output deleted.Id, deleted.Name
আপনি এটি দিয়ে করতে পারবেন না truncate
।